У мене є набір даних із такими специфікаціями:
- Навчальний набір даних з 193 176 зразками з 2821 позитивом
- Тестовий набір даних із 82 887 зразків із 673 позитивними
- Є 10 функцій.
Я хочу виконати двійкову класифікацію (0 або 1). Проблема, з якою я стикаюся, полягає в тому, що дані дуже незбалансовані. Після нормалізації та масштабування даних разом із деякою інженерною функцією та використанням декількох різних алгоритмів, це найкращі результати, які я міг досягти:
mean square error : 0.00804710026904
Confusion matrix : [[82214 667]
[ 0 6]]
тобто лише 6 правильних позитивних хітів. Для цього використовується логістична регресія. Ось різні речі, які я спробував з цим:
- Різні алгоритми, такі як RandomForest, DecisionTree, SVM
- Зміна значення параметрів для виклику функції
- Деяка інтуїція, заснована на інтуїції, включає складні функції
Тепер мої запитання:
- Що я можу зробити, щоб покращити кількість позитивних звернень?
- Як можна визначити, чи є надмірний наряд у такому випадку? (Я спробував скласти план тощо)
- На якому моменті можна зробити висновок, якщо, можливо, це найкраще підходить я міг? (що здається сумним, враховуючи лише 6 звернень із 673)
- Чи є спосіб, щоб я міг зробити так, щоб випадки позитивного зразка важили більше, так що розпізнавання шаблонів покращується, що призводить до більшої кількості звернень?
- Які графічні сюжети могли б допомогти виявити люди, що пережили люди, чи якусь інтуїцію щодо того, який шаблон найкраще підійде?
Я використовую бібліотеку scikit-learn з Python, і всі реалізації - це функції бібліотеки.
редагувати:
Ось результати з кількома іншими алгоритмами:
Випадковий класифікатор лісу (n_estimators = 100)
[[82211 667]
[ 3 6]]
Дерева рішень:
[[78611 635]
[ 3603 38]]