Низька точність класифікації, що робити далі?


16

Отже, я новачок у галузі ML та намагаюся зробити якусь класифікацію. Моя мета - передбачити результат спортивної події. Я зібрав декілька історичних даних і зараз намагаюся підготувати класифікатора. У мене було близько 1200 зразків, 0,2 з них я розділив для тестових цілей, інші я вклав у пошук сітки (включена перехресна перевірка) з різними класифікаторами. Я спробував SVM з лінійними, rbf та поліномними ядрами та випадковими лісами на даний момент. На жаль, я не можу отримати точність, значно більшу за 0,5 (те саме, що і випадковий вибір класу). Це означає, що я просто не можу передбачити результат такої складної події? Або я можу отримати принаймні 0,7-0,8 точності? Якщо це можливо, то що я повинен розглянути далі?

  • Отримати більше даних? (Я можу збільшити набір даних до 5 разів)
  • Спробуйте різні класифікатори? (Логістична регресія, kNN тощо)
  • Переоцінити мій набір функцій? Чи є ML-інструменти для аналізу, які функції мають сенс, а які ні? Можливо, я повинен зменшити набір функцій (на даний момент у мене є 12 функцій)?

Яка ваша точність тренувань? А скільки зразків у вас у кожному класі?
Лев

1
Що це за спорт і що ви вважаєте "правильною" класифікацією? Якщо ви просто намагаєтеся передбачити результат виграшу / програшу практично в будь-якому великому виді спорту, майже немислимо, що навіть найпростіші класифікатори не прогнозували б краще 0,5. Якщо ви, скажімо, намагаєтесь передбачити виграш / програш проти спред або якогось іншого неблагополучного результату, то набагато краще, ніж 0,5, може бути важким.
кардинал

Точність тренувань @Leo становить близько 0,5. Заняття розподілені рівномірно, у мене класи 0 і 1.
fspirit

@cardinal Так, я намагаюся передбачити результат виграшу / програшу, ніяких негараздів. Чи можливо досягти, скажімо, точності 0,8 на тестовому наборі?
fspirit

1
@fspirit: Це залежить від спорту та нерівності у здібностях між учасниками. Просто знати, хто бере участь у кожному конкурсі, часто може бути сильним провісником. Ось і ось кілька пов’язаних публікацій.
кардинал

Відповіді:


17

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

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

Для цього побудуйте графік помилки перевірки та помилки набору тренувань як функції навчальних прикладів.

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

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

Це загальні правила, якими я б користувався, коли стикався з такою проблемою, як ваша.

Ура.


Ви мали на увазі помилку набору перевірки та помилку набору TEST? Інакше я розгублений. Я навіть не знаю помилки набору поїздів, тому що я використовую помилку набору перевірки, щоб вибрати модель, і вони перевіряють обрану модель на тестовому наборі.
fspirit

Ні, я маю на увазі помилку набору тренувань там, де написано. Помилка тренувань - це кількість неправильно класифікованих прикладів у навчальному наборі, поділене на розмір навчального набору. Аналогічно помилка тестового набору - це кількість неправильно класифікованих прикладів у тестовому наборі, поділене на розмір навчального набору. Також ви можете перевірити клас машинного навчання Coursera ( class.coursera.org/ml-2012-002/lecture/index ), особливо відеоролики для "Поради щодо застосування машинного навчання". Ці поради цілком стосуються вашої ситуації.
sjm.majewski

Я змагався з курсу, коли його провели вперше. Що стосується помилки набору тренувань, то зараз я
виводжу

5

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

Можна почати з тестування гіпотез або кореляційного аналізу для перевірки на взаємозв'язки. Генерування специфічних для класу гістограм для ознак (тобто побудови графіків даних для кожного класу, для даної функції на одній осі) також може бути хорошим способом показати, чи ознака добре розмежовує два класи.

Важливо пам’ятати, хоча і не допускати, щоб результати вашого дослідницького аналізу впливали на ваш вибір для класифікації. Вибір особливостей для класифікації на основі попереднього дослідницького аналізу на одних і тих же даних може призвести до надмірних і необ’єктивних оцінок ефективності (див. Обговорення тут ), але дослідницький аналіз принаймні дасть вам уявлення про те, чи є завдання, яке ви намагаєтеся зробити, рівне можливо.


Спробую намалювати гістограми і побачити, як вони будуть виглядати.
fspirit

@BGreene - третій абзац для мене важкий. Якщо дослідницький аналіз показує, що предиктор x1 сильно співвідноситься з результатом, чи не переможе його мета перевірки кореляції, якщо не використовував x1 як мінімум прогнозуючого кандидата у багатовимірній моделі?
rolando2

@ rolando2 - Я не припускаю, що ви не включаєте функцію в якості кандидата як частину програми вибору функцій, але ви не повинні вибирати функції, засновані на такому дослідницькому аналізі, оскільки це буде надмірним. Однак для оцінки узагальненої продуктивності моделі класифікатора вибір функції слід здійснювати в рамках вибору моделі (тобто в межах кожного перехресного підтвердження). Що я пропоную, це те, що дослідницький аналіз та класифікація слід розглядати як окремі види діяльності - кожен розповідає про різні ваші дані
BGreene

3

Добре, що ви розділили свої дані на дані тренувань та тести.

Чи зменшилась ваша помилка у навчанні, коли ви тренувались? Якщо ні, то у вашому алгоритмі навчання може виникнути помилка. Ви очікуєте, що помилка на вашому тестовому наборі буде більшою, ніж помилка на вашому тренувальному наборі, тому якщо у вас на тренувальному наборі помилка неприпустимо висока, надії на успіх мало.

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


Я використовую окремі набори поїздів, валідації та тестування. Я вибираю гіперпарами на основі помилки набору валідації, а потім застосовую обрану модель до тестового набору. Я сумніваюся, що в алгоритмі тренувань є помилка, тому що я використовую нестандартну лібу.
fspirit

50%

У можливість "особливості жахливі" я включаю випадок, що рішення неможливо. Однак я дуже сумніваюся в цьому. Немає спорту, я знаю, де немає способів побачити, що один конкурент є фаворитом над іншим. Це можливо навіть у ножицях-паперах.
Дуглас Заре

1

Чому б не дотримуватися принципу "спочатку подивіться на графіки даних". Одне, що ви можете зробити, - це 2 D розсіювач умовної щільності двох класів для двох коваріатів. Якщо ви подивитеся на це і побачите практично відсутність розділення, яке могло б свідчити про відсутність передбачуваності, і ви можете це зробити з усіма коваріатами. Це дає вам кілька уявлень про можливість використання цих коваріатів для прогнозування. Якщо ви бачите деяку надію, що ці змінні можуть трохи розділитись, тоді почніть думати про лінійні дискримінанти, квадратичні дискримінанти, дискримінацію ядра, регуляризацію, класифікацію дерев, SVM тощо.


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