Что делать, если я не могу оценить производительность алгоритма машинного обучения для обнаружения аномалий с помощью AUC? [закрыто]

У меня есть данные с 10 000 строками и 40 столбцами. Также для каждой строки есть метка: « аномалия » или « нормальные данные ». В данных есть 5% аномалий.

Цель этого исследования - найти лучший алгоритм обнаружения аномалий. Поэтому я могу применить, например, изоляционный лес (он реализован в scikit-learn) к своим данным с обучением без учителя.

      from sklearn.ensemble import IsolationForest

fit_if = IsolationForest(random_state=0, contamination=alpha).fit(X_sim_k)
result_if = fit_if.predict(X)  
Score_if  = fit_if.decision_function(X)

from sklearn.metrics import roc_auc_score

y = L # The true labeling : outlier = 1 and normal data = 0
fpr, tpr, thresholds = sklearn.metrics.roc_curve(y, Score_if , pos_label= 1)
AUC = roc_auc_score(y, Score_if )

Я получаю результат:Оценка изолированного леса для каждого данных с цветом истинной маркировки. Как видите, мой алгоритм дает низкую оценку для истинных аномалий и более высокую оценку для «нормальных данных». Между этими двумя классами есть почти идеальное разделение на -0,01.

Но когда дело доходит до расчета кривой AUC-ROC: я понимаю:кривая AUC Кривая ROC настолько плоская, что у меня AUC = 0.

Я не понимаю, потому что в статьях по машинному обучению (в области обнаружения аномалий) всегда используется AUC. К сожалению, мои данные сильно несбалансированы (95% нормальных данных и 5% аномалий), и это приводит к такому результату. Я объясняю это тем, что при расчете истинной положительной ставки (TPR) это = TP / (TP + FN), где:

  • TP (True Positive) всегда маленький (потому что мой положительный (1) класс - это "аномалия" и маленький)
  • FN (ложноотрицательный) всегда высокий (потому что я предсказываю большую часть данных как «выброс», и это, конечно, двузначное)

Я знаю, что это не что-то новое, и есть документы по машинному обучению, в которых говорится, что я должен использовать кривую Precision-Recall, но у меня нет лучших результатов ...

Знаете ли вы, что я могу сделать, и есть ли способ при расчете кривой ROC учесть несбалансированный класс?

0 ответов

Другие вопросы по тегам