Sto riscontrando problemi nell'esecuzione della regressione logistica con xgboost che può essere riepilogata nel seguente esempio.regressione logistica binaria xgboost
lascia supporre ho una molto semplice dataframe con due predittori e una variabile di destinazione:
df= pd.DataFrame({'X1' : pd.Series([1,0,0,1]), 'X2' : pd.Series([0,1,1,0]), 'Y' : pd.Series([0,1,1,0],)})
posso pubblicare le immagini perché Im nuovo qui, ma è chiaro che si può vedere che quando X1 = 1 e X2 = 0 , Y è 0 e quando X1 = 0 e X2 = 1, Y è 1.
La mia idea è di costruire un modello che emetta la probabilità che un'osservazione appartenga a ciascuna delle classi, quindi se eseguo xgboost provo per prevedere due nuove osservazioni (1,0) e (0,1) così:
X = df[['X1','X2']].values
y = df['Y'].values
params = {'objective': 'binary:logistic',
'num_class': 2
}
clf1 = xgb.train(params=params, dtrain=xgb.DMatrix(X, y), num_boost_round=100)
clf1.predict(xgb.DMatrix(test.values))
l'output è:
array([[ 0.5, 0.5],
[ 0.5, 0.5]], dtype=float32)
quale, immagino, significa che per la prima osservazione, c'è il 50% di possibilità che appartenenti a ciascuna delle classi.
Mi piacerebbe sapere perché non l'algoritmo restituisce un valore corretto (1,0) o qualcosa di simile a quello se la relazione tra le variabili è chiara.
FYI, ho provato con più dati (Im solo utilizzando 4 righe per semplicità) e il comportamento è quasi lo stesso; quello che faccio notato è che, non solo le probabilità non sommano a 1, sono spesso molto piccoli in questo modo: (questo risultato è un set di dati diverso, niente a che fare con l'esempio precedente)
array([[ 0.00356463, 0.00277259],
[ 0.00315137, 0.00268578],
[ 0.00453343, 0.00157113],
I tuoi due predittori sono solo 0 e 1? In tal caso ci sono solo 4 combinazioni possibili delle tue caratteristiche e quindi dovresti aspettarti (al massimo) 4 previsioni di probabilità uniche. – David
sì, lo sono. Ok, solo 4 possibili combinazioni, ha senso, ma non sono sicuro di come risponde alla mia domanda. – Italo
Sono confuso, qual è la tua domanda? Pensavo che non capissi perché ci fosse poca varianza nelle tue previsioni di probabilità. – David