Модель бінарної класифікації для незбалансованих даних


14

У мене є набір даних із такими специфікаціями:

  • Навчальний набір даних з 193 176 зразками з 2821 позитивом
  • Тестовий набір даних із 82 887 зразків із 673 позитивними
  • Є 10 функцій.

Я хочу виконати двійкову класифікацію (0 або 1). Проблема, з якою я стикаюся, полягає в тому, що дані дуже незбалансовані. Після нормалізації та масштабування даних разом із деякою інженерною функцією та використанням декількох різних алгоритмів, це найкращі результати, які я міг досягти:

mean square error : 0.00804710026904
Confusion matrix : [[82214   667]
                   [    0     6]]

тобто лише 6 правильних позитивних хітів. Для цього використовується логістична регресія. Ось різні речі, які я спробував з цим:

  • Різні алгоритми, такі як RandomForest, DecisionTree, SVM
  • Зміна значення параметрів для виклику функції
  • Деяка інтуїція, заснована на інтуїції, включає складні функції

Тепер мої запитання:

  1. Що я можу зробити, щоб покращити кількість позитивних звернень?
  2. Як можна визначити, чи є надмірний наряд у такому випадку? (Я спробував скласти план тощо)
  3. На якому моменті можна зробити висновок, якщо, можливо, це найкраще підходить я міг? (що здається сумним, враховуючи лише 6 звернень із 673)
  4. Чи є спосіб, щоб я міг зробити так, щоб випадки позитивного зразка важили більше, так що розпізнавання шаблонів покращується, що призводить до більшої кількості звернень?
  5. Які графічні сюжети могли б допомогти виявити люди, що пережили люди, чи якусь інтуїцію щодо того, який шаблон найкраще підійде?

Я використовую бібліотеку scikit-learn з Python, і всі реалізації - це функції бібліотеки.

редагувати:

Ось результати з кількома іншими алгоритмами:

Випадковий класифікатор лісу (n_estimators = 100)

[[82211   667]
[    3     6]]

Дерева рішень:

[[78611   635]
[ 3603    38]]

Відповіді:


11
  1. Оскільки ви робите двійкову класифікацію, чи намагалися ви коригувати поріг класифікації? Оскільки ваш алгоритм здається досить нечутливим, я б спробував знизити його і перевірити, чи є покращення.

  2. Ви завжди можете використовувати криві навчання або графік одного параметру моделі, порівняно з помилкою навчання та перевірки, щоб визначити, чи ваша модель є надмірною. Здається, це відповідає вашому випадку, але це лише інтуїція.

  3. Ну, в кінцевому підсумку це залежить від вашого набору даних та різних моделей, які ви спробували. На цьому етапі та без подальшого тестування не може бути однозначної відповіді.

  4. Не претендуючи на те, що ви є експертом з даної теми, існує декілька різних методик, якими ви можете скористатися (підказка: перша посилання на google ), але, на мою думку, слід спочатку переконатися, що ви обережно обираєте функцію витрат, щоб вона представляла, що ви насправді шукаєте.

  5. Не знаєте, що ви маєте на увазі під інтуїцією зразка, чи можете ви докладно пояснити?

До речі, які були ваші результати за різними алгоритмами, які ви спробували? Чи були вони різними?


1
Регулювання порогу логістичної регресії зробило свою справу. Дякуємо за список джерел.
tejaskhot

Чи може хтось вставити фрагмент коду того, як ви регулюєте поріг логістичної регресії?
Бленц

0

Оскільки дані дуже перекошені, у такому випадку ми можемо також спробувати тренінг моделі після перевибору даних.

SMOTE та ADASYN - це деякі методи, якими ми можемо скористатися для перебігу даних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.