9

Mam binarny model predykcyjny przeszkolony przez algorytm regresji logistycznej. Chcę wiedzieć, które cechy (predyktory) są ważniejsze dla decyzji klasy pozytywnej lub negatywnej. Wiem, że istnieje parametr coef_ pochodzący z pakietu scikit-learn, ale nie wiem, czy wystarczy go dla ważności. Kolejną rzeczą jest to, jak mogę ocenić wartości coef_ pod względem znaczenia dla klas negatywnych i pozytywnych. Czytałem również o standaryzowanych współczynnikach regresji i nie wiem, co to jest.Jak znaleźć znaczenie funkcji modelu regresji logistycznej?

Powiedzmy, że istnieją cechy, takie jak rozmiar guza, masa guza, itp., Aby podjąć decyzję w sprawie testowej, jak złośliwe lub nie złośliwe. Chcę wiedzieć, które cechy są ważniejsze dla złośliwych i nie złośliwych prognoz. Czy to ma jakiś sens?

+0

Czy możesz podać przykład, który sprawi, że sprawy będą bardziej konkretne? – carlosdc

+0

Powiedzmy, że istnieją cechy, takie jak rozmiar guza, masa nowotworu i itd., Aby podjąć decyzję o przypadku testowym, jak złośliwy lub niezłośliwy. Chcę wiedzieć, które cechy są ważniejsze dla złośliwych i nie złośliwych prognoz. Czy to ma jakiś sens? – mgokhanbakal

Odpowiedz

17

Jedną z najprostszych opcji odczuwania "wpływu" danego parametru w liniowym modelu klasyfikacji (w tym przypadku logistycznym) jest uwzględnienie wielkości jego współczynników pomnożonych przez standardowe odchylenie odpowiedniego parametru. parametr w danych.

Rozważmy następujący przykład:

import numpy as np  
from sklearn.linear_model import LogisticRegression 

x1 = np.random.randn(100) 
x2 = 4*np.random.randn(100) 
x3 = 0.5*np.random.randn(100) 
y = (3 + x1 + x2 + x3 + 0.2*np.random.randn()) > 0 
X = np.column_stack([x1, x2, x3]) 

m = LogisticRegression() 
m.fit(X, y) 

# The estimated coefficients will all be around 1: 
print(m.coef_) 

# Those values, however, will show that the second parameter 
# is more influential 
print(np.std(X, 0)*m.coef_) 

Alternatywnym sposobem, aby uzyskać podobny rezultat jest zbadanie współczynniki dopasowania modelu na standardowych parametrów:

m.fit(X/np.std(X, 0), y) 
print(m.coef_) 

pamiętać, że jest to najbardziej podstawowy istnieje podejście i szereg innych technik mających na celu znalezienie znaczenia funkcji lub wpływu parametrów (za pomocą wartości p, wyników bootstrap, różnych "wskaźników dyskryminacji" itp.).

Jestem prawie pewny, że dostaniesz bardziej interesujące odpowiedzi na https://stats.stackexchange.com/.

+0

Dziękuję za wyjaśnienie. Jeszcze jedno, co oznacza ujemna wartość m.coef_? Czy to znaczy, że jest bardziej dyskryminujący dla decyzji klasy negatywnej? To samo pytanie o wartości dodatnie. – mgokhanbakal

+4

Ujemny współczynnik oznacza, że ​​wyższa wartość odpowiadającej mu cechy popycha klasyfikację bardziej w kierunku klasy negatywnej. –

+0

Dziękuję za dodatkowe wyjaśnienie. – mgokhanbakal

Powiązane problemy