ターゲット変数に不均衡があるロジスティック回帰のケースに取り組んでいます。これを修正するために、SMOTE (Synthetic Minority Oversampling Technique) を使用していますが、回帰モデルを実行するたびに、混同行列に異なる数値が表示されます。SMOTE と Logistic Regression の呼び出し中に random_state パラメータを設定しましたが、まだ役に立ちません。私の機能でさえ、各反復で同じです。リコールの最高値は 0.81、AUC 値は 0.916 を一度取得できましたが、もう来ません。場合によっては、False Positives と False Negatives の値が急上昇し、分類子が非常に悪いことを示します。
ここで私が間違っていることを教えてください。以下はコードスニペットです。
# Feature Selection
features = [ 'FEMALE','MALE','SINGLE','UNDER_WEIGHT','OBESE','PROFESSION_ANYS',
'PROFESSION_PROF_UNKNOWN']
# Set X and Y Variables
X5 = dataframe[features]
# Target variable
Y5 = dataframe['PURCHASE']
# Splitting using SMOTE
from imblearn.over_sampling import SMOTE
os = SMOTE(random_state = 4)
X5_train, X5_test, Y5_train, Y5_test = train_test_split(X5,Y5, test_size=0.20)
os_data_X5,os_data_Y5 = os.fit_sample(X5_train, Y5_train)
columns = X5_train.columns
os_data_X5 = pd.DataFrame(data = os_data_X5, columns = columns )
os_data_Y5 = pd.DataFrame(data = os_data_Y5, columns = ['PURCHASE'])
# Instantiate Logistic Regression model (using the default parameters)
logreg_5 = LogisticRegression(random_state = 4, penalty='l1', class_weight = 'balanced')
# Fit the model with train data
logreg_5.fit(os_data_X5,os_data_Y5)
# Make predictions on test data set
Y5_pred = logreg_5.predict(X5_test)
# Make Confusion Matrix to compare results against actual values
cnf_matrix = metrics.confusion_matrix(Y5_test, Y5_pred)
cnf_matrix