Чому б не підходити до класифікації через регресію?


51

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


Я думаю, що регрес завжди складніший, ніж класифікація у виробничому середовищі

Відповіді:


57

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

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

Логістична регресія прогнозує ймовірності, тому є алгоритмом регресії. Однак він зазвичай описується як метод класифікації в літературі машинного навчання, оскільки його можна (і часто) використовувати для виготовлення класифікаторів. Існують також "справжні" алгоритми класифікації, такі як SVM, які лише прогнозують результат і не передбачають ймовірності. Ми не будемо обговорювати такий алгоритм тут.

Лінійна проти логістичної регресії з питань класифікації

Як пояснює Ендрю Нг , за допомогою лінійної регресії ви підходите до полінома за допомогою даних - скажімо, як у наведеному нижче прикладі ми встановлюємо пряму лінію через набір зразків {розмір пухлини, тип пухлини} :

введіть тут опис зображення

Вище злоякісні пухлини отримують а злоякісні - , а зелена лінія - наша гіпотеза . Для прогнозування можна сказати, що для будь-якого розміру пухлини , якщо стає більше ми прогнозуємо злоякісну пухлину, інакше ми прогнозуємо доброякісну.10h(x)xh(x)0.5

Схоже, таким чином ми могли б правильно передбачити кожен зразок навчального набору, але тепер трохи змінимо завдання.

Інтуїтивно зрозуміло, що всі пухлини, що перевищують певний поріг, є злоякісними. Тож давайте додамо ще один зразок з величезним розміром пухлини і знову запустімо лінійну регресію:

введіть тут опис зображення

Тепер наш більше не працює. Щоб продовжувати робити правильні прогнози, нам потрібно змінити його на або щось інше - але це не так, як алгоритм повинен працювати.h(x)>0.5malignanth(x)>0.2

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

Сподіваюсь, це пояснює, чому лінійна регресія не найкраще підходить для проблем класифікації! Крім того, ви можете подивитися VI. Логістична регресія. Відео про класифікацію на ml-class.org, що пояснює ідею більш докладно.


EDIT

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

введіть тут опис зображення

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

  • h(x) для лінійних регресійних інтерполятів або екстраполятів, вихід і прогнозує значення для ми не бачили. Це просто як підключення нового та отримання необмеженої кількості, і більше підходить для таких завдань, як прогнозування, скажімо, ціна автомобіля на основі {розмір машини, вік автомобіля} тощо.xx
  • h(x) для логістичної регресії говорить вам про ймовірність того, що належить до "позитивного" класу. Ось чому його називають алгоритмом регресії - він оцінює безперервну величину, ймовірність. Однак якщо встановити поріг ймовірності, такий як , ви отримаєте класифікатор, і в багатьох випадках це робиться з результатом з логістичної регресійної моделі. Це еквівалентно розміщенню рядка на графіку: всі точки, що сидять над лінією класифікатора, належать до одного класу, тоді як точки нижче належать іншому класу.x h ( x ) > 0,5xh(x)>0.5

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


@andreister: Але що було б, якби всі випускники були видалені або усічені, чи лінійна регресія все ще є поганою ідеєю?
Томек Тарчинський

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

1
@andreister: Ваш приклад показав, що деякі погані дані можуть зіпсувати лінійну регресію. Але чи можемо ми використати квадричну регресію або ще складнішу гіпотезу, щоб зробити «регресію» хорошим класифікатором?
Стрин

1
@probabilityislogic - хороший момент, я оновив відповідь.
andreister

2
@Strin: Складніші гіпотези мають більше шансів перевищити дані. . не даючи нам складних алгоритмів, які дозволяли б нам зробити вбивство на ринках електроенергії ... Він ніколи насправді не сприймав надмірне обладнання.
Уейн

14

Я не можу придумати приклад, коли класифікація насправді є кінцевою метою. Практично завжди реальною метою є точні прогнози, наприклад, ймовірності. У цьому дусі (логістична) регресія - твій друг.


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

6
За винятком того, що вартість помилкового позитиву або вартість помилкового негативу рідко перебувають під контролем аналітика, який здійснив класифікацію, отже, оригінальний аналітик не може надійно вибрати «правильну» точку відрізку для класифікації. Крім того, розумно мати «сіру зону» проміжного ризику, в якій не проводиться класифікація, а рекомендація - «отримати більше даних».
Френк Харрелл

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

9
Думаю, ви сприйняли велику догму машинного навчання як належне. Ви робите велику кількість необґрунтованих припущень. Один з них полягає в тому, що люди фактично потребують вимушеного вибору в категоричне відро. Вони можуть стверджувати, що хочуть цього, але їм у більшості ситуацій цього справді не потрібно. Вибір не повинен бути примусовим. Чудовим вибором є "немає рішення, отримайте більше даних". Прогнозування основної безперервної величини зазвичай є тим, що потрібно. Варто витратити час на вивчення оптимальної (Байєсової) теорії рішення. Якщо ви можете надати конкретний приклад, я прокоментую далі.
Френк Харрелл

11
Опублікував +1 на коментарі @Frank Harrell Наприклад, прогнозування температури, кількості опадів, рівня річок надзвичайно корисніше, ніж прогнози, що буде жарко чи мокро, або затопить. Навіть якщо проблема - вівці чи кози? оцінка pr (овець) більш інформативна, ніж двійкові «вівці» або «кози».
Нік Кокс

1

Чому б не переглянути деякі докази? Хоча багато хто стверджує, що лінійна регресія не підходить для класифікації, вона все одно може спрацювати. Щоб отримати деяку інтуїцію, я включив лінійну регресію (використовується як класифікатор) у порівняння класифікаторів scikit-learn . Ось що відбувається:

введіть тут опис зображення

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

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

Для запису ось так виглядає мій код класифікатора:

class LinearRegressionClassifier():

def __init__(self):
    self.reg = LinearRegression()

def fit(self, X, y):
    self.reg.fit(X, y)

def predict(self, X):
    return np.clip(self.reg.predict(X),0,1)

def decision_function(self, X):
    return np.clip(self.reg.predict(X),0,1)

def score(self, X, y):
    return accuracy_score(y,np.round(self.predict(X)))


0

Далі, для розширення вже влучних відповідей на будь-яке завдання класифікації, що виходить за межі двоваріантного, використання регресії вимагатиме від нас встановлення відстані та впорядкування між класами. Іншими словами, ми можемо отримати різні результати, просто переміщаючи мітки класів або змінюючи шкалу призначених числових значень (скажімо, класи, позначені як проти ) , що перемагає мету класифікаційної задачі.1,10,100,...1,2,3,...

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