Чи слід обрати регресора або класифікатора випадкових лісів?


11

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

Я можу отримати класифікацію безпосередньо від randomforestclassifier або я можу спершу запустити randomforestregressor і отримати набір оціночних балів (безперервне значення). Тоді я можу знайти значення відсікання для отримання прогнозованих класів із набору балів. Обидва методи можуть досягти однакової мети (тобто прогнозувати класи для тестових даних).

Також я можу це спостерігати

randomforestclassifier.predict_proba(X_test)[:,1]) 

відрізняється від

randomforestregressor.predict(X_test)

Тож я просто хочу підтвердити, що обидва способи є дійсними, а потім, який із них кращий у випадковому застосуванні лісу?


1
Моя негайна реакція - ви повинні використовувати класифікатор, тому що саме для цього створено, але я не впевнений на 100%, що це має велику різницю. Використовувати регресор було б як використовувати лінійну регресію замість логістичної регресії - вона працює, але не дуже добре у багатьох ситуаціях. Я можу обійтись правильною відповіддю, але не на день або близько того.
Пітер Елліс

Відповіді:


7

Використовуйте Класифікатор. Ні, вони не є дійсними.

По-перше, я дуже рекомендую вам ознайомитись із темою «Регресія проти класифікації». Тому що використання ML, не знаючи нічого про це, дасть неправильні результати, яких ви не усвідомлите. І це досить небезпечно ... ( це трохи схоже на запитання, в який бік ви повинні тримати пістолет або якщо це не має значення )

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

Я міг би спершу запустити випадкового прогресора та отримати набір оцінених ймовірностей.

НІ. Ви не отримаєте ймовірностей від регресії. Він просто намагається "екстраполювати" отримані вами значення (у цьому випадку лише 0 і 1). Це означає, що значення, що перевищують 1 або нижче 0, цілком дійсні як регресійний вихід, оскільки він не очікує лише двох дискретних значень як вихід (це називається класифікація !), А постійних значень.

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

Просто згадуючи це тут: .predict vs .predict_proba (для класифікатора!)
.Predict просто бере висновок .predict_proba і змінює все на 0 нижче певного порогу (зазвичай 0,5) відповідно на 1 вище цього порогового значення.

Зауваження: звичайно, всередині вони такі самі, за винятком "останнього шару" тощо! І все-таки розгляньте їх (а краще проблему, яку вони вирішують) як зовсім іншу!

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