Можете ли вы сделать мультиклассовую классификацию с логистической регрессией?

159
18
1
Лучший ответ
170

Да, мы можем сделать это.

Он называется классификацией «один против всех» или классификацией нескольких классов.

Краткий снимок с курса Coursera Machine Learning Week 3, лекция 6:

Этап обучения: Один против всех классификаций

Многоклассовая классификация реализуется путем обучения нескольких классификаторов логистической регрессии, по одному для каждого из K классов в наборе обучающих данных.

В приведенном выше примере классификации мультикласса есть 3 класса. Следовательно, нам нужно обучить 3 различных классификатора логистической регрессии.

При обучении классификатора для класса 1 мы будем обрабатывать входные данные с метками класса 1 как + ve выборок (y == 1), а все остальные классы как -ve выборки (y == 0).

При обучении классификатора для класса 2 мы будем обрабатывать входные данные с метками класса 2 как + ve выборок (y == 1), а все остальные классы как -ve выборки (y == 0).

Это будет продолжаться для всех классов.

Фаза прогнозирования: Один против всех.

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

Для тестового ввода мы должны вычислить «вероятность», что он принадлежит каждому классу, используя обученные классификаторы логистической регрессии. Ваша функция прогнозирования «один против всех» выберет класс, для которого соответствующий классификатор логистической регрессии выведет наибольшую вероятность, и вернет метку класса (1, 2, ... или K) в качестве прогноза для входного примера.

Например,

  1. P(y==Class1) = 0.3
  2. P(y==Class2) = 0.5
  3. P(y==Class3) = 0.2

Затем функция «один против всех» выберет метку как «Класс 2», так как она имеет более высокую вероятность, чем другие классы.

ответил(а) 2019-12-25T15:57:19+03:00 1 год, 7 месяцев назад
123

Да. Есть много способов обобщить логистическую регрессию, но вы должны немного подумать о том, какой из них подходит. Одна вещь, которая мне не нравится во многих онлайн-классах машинного обучения, это то, что они, кажется, бросают вам логистическую регрессию как еще одну модель машинного обучения, игнорируя при этом основную статистическую интерпретацию. Чтобы использовать мультиклассовые обобщения, вы должны понимать основную статистическую интерпретацию.

Напомним, что нормальная модель логита предполагает следующий процесс генерации данных:

yi = {1 0, если X i β + ϵ i> 0, если X i β + ϵ i ≤ 0 yi = {1, если X i β + ϵ i> 0 0, если X i β + ϵ i ≤ 0 \ displaystyle y_i = \ begin {case} 1 & \ mbox {if} X_i \ beta + \ epsilon_i> 0 \\ 0 & \ mbox {if} X_i \ beta + \ epsilon_i \ leq 0 \ end {case}

где ϵ i ϵ i \ epsilon_i - случайный шок с логистическим распределением. (Пробит - это то же самое, когда ϵ i ϵ i \ epsilon_i имеет нормальное распределение.)

Линейный член X i β X i β X_i \ beta дает вам границы вашего решения. Поскольку логистическое распределение симметрично, границей решения будет просто гиперплоскость, определяемая как X i β = 0 X i β = 0 X_i \ beta = 0.

Так, например, X i X i X_i s могут быть характеристиками избирателей (со столбцом 1 1 1 s для постоянного термина), а зависимой переменной может быть то, проголосовал ли кто-то за Обаму в 2012 году. Вы можете интерпретировать неизвестная величина X i β + ϵ i X i β + ϵ i X_i \ beta + \ epsilon_i в качестве базовой суммы, на которую избиратель любил Обаму.

Предположим, однако, что теперь у вас есть данные опроса, в которых участники сказали, что они одобряют Обаму, не одобряют Обаму или относились нейтрально к Обаме. Как бы вы смоделировали это?

Поскольку ваши данные изначально упорядочены, вы можете использовать то, что называется упорядоченным логитом. По сути, вы предполагаете, что для какого-то избирателя i: i: i:

y obama, я = X i β + ϵ i y obama, i = X i β + ϵ i \ displaystyle y _ {\ text {obama}, i} = X_i \ beta + \ epsilon_i

где

y i = ⎧ ⎩ ⎨ «одобрить» «нейтрально» «не одобрить», если X i β + ϵ i> c 1, если c 1> X i β + ϵ i> c 2, если X i β + ϵ i ≤ c 2. y i = {«одобрить», если X i β + ϵ i> c 1 «нейтрально», если c 1> X i β + ϵ i> c 2 «не одобрить», если X i β + ϵ i ≤ c 2. \ displaystyle y_i = \ begin {case} \ text {$ \ unicode {x201c} $ Approve $ \ unicode {x201d} $} & \ mbox {if} X_i \ beta + \ epsilon_i> c_1 \\ \ text {$ \ unicode {x201c} $ нейтральный $ \ unicode {x201d} $} & \ mbox {if} c_1> X_i \ beta + \ epsilon_i> c_2 \\ \ text {$ \ unicode {x201c} $ отклонить $ \ unicode {x201d} $} & \ mbox {if} X_i \ beta + \ epsilon_i \ leq c_2 \\ \ end {case}.

Здесь c 1 c 1 c_1 и c 2 c 2 c_2 - это константы, которые вы оцениваете как часть вашей модели. (Техническое примечание: либо вы нормализуете одну из констант до нуля, либо опускаете постоянный член в X i X i X_i s. Неважно, какую вы выберете.)

Вы можете назначить числовые значения «утверждать», «нейтрально» и «отклонять» и выполнять линейную регрессию, но тогда ваши результаты будут меняться в зависимости от того, как вы присвоили эти значения. Хорошая особенность упорядоченного logit состоит в том, что он позволяет данным сообщать вам, как распределять эти значения. Гиперплоскости X i β = c 1 X i β = c 1 X_i \ beta = c_1 и X i β = c 2 X i β = c 2 X_i \ beta = c_2 будут границами вашего решения, и для данного наблюдения вы можете отказаться от вероятности всех трех результатов.

Теперь вернемся к данным голосования. Скажем, вы смотрите на выездные опросы, а также в том числе Гэри Джонсон. Теперь есть три варианта: голосовать за Обаму, голосовать за Ромни и голосовать за Джонсона. Как вы моделируете это?

Поскольку нет никакого внутреннего порядка, вы хотели бы использовать многочленный логит. Вы бы определили:

y Обама, я = X i β Обама + ϵ i, Обама y Обама, i = X i β Обама + ϵ i, Обама \ displaystyle y _ {\ text {Obama}, i} = X_i \ beta _ {\ text {Obama} } + \ epsilon_ {i, \ text {obama}}

а также

y Ромни, я = X i β Ромни + ϵ i, Обама y Ромни, i = X i β Ромни + ϵ i, obama \ displaystyle y _ {\ text {Romney}, i} = X_i \ beta _ {\ text {Romney} } + \ epsilon_ {i, \ text {obama}}

а также

y Джонсон, i = ϵ i, Джонсон y Джонсон, i = ϵ i, Джонсон \ displaystyle y _ {\ text {Johnson}, i} = \ epsilon_ {i, \ text {Johnson}}

(Джонсон не получает ковариат из-за нормализации.)

Тогда вы предполагаете, что каждый избиратель выбирает:

yi = ⎧ ⎩ ⎨ ⎪ ⎪ «Обама» «Ромни» «Джонсон», если max {y Обама, i, y Ромни, i, y Джонсон, i} = y Обама, i if max {y Обама, i, y Ромни, i, y Johnson, i} = y Romney, i if max {y Обама, i, y Romney, i, y Johnson, i} = y Johnson, iyi = {“Obama”, если max {y Obama, i, y Romney , i, y Джонсон, i} = y Обама, i «Ромни», если max {y Обама, i, y Ромни, i, y Джонсон, i} = y Ромни, i «Джонсон», если max {y Obama, i, y Ромни, я, y Джонсон, я} = y Джонсон, i \ displaystyle y_i = \ begin {case} \ text {$ \ unicode {x201c} $ Обама $ \ unicode {x201d} $} & \ mbox {if} \ max \ {y _ {\ text {Obama}, i}, y _ {\ text {Romney}, i}, y _ {\ text {Johnson}, i} \} = y _ {\ text {Obama}, i} \\ \ text {$ \ unicode {x201c} $ Ромни $ \ unicode {x201d} $} & \ mbox {if} \ max \ {y _ {\ text {Obama}, i}, y _ {\ text {Romney}, i} , y _ {\ text {Johnson}, i} \} = y _ {\ text {Romney}, i} \\ \ text {$ \ unicode {x201c} $ Johnson $ \ unicode {x201d} $} & \ mbox {if } \ max \ {y _ {\ text {Obama}, i}, y _ {\ text {Romney}, i}, y _ {\ text {Johnson} , я} \} = y _ {\ text {Джонсон}, я} \\ \ end {case}

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

Если вы предполагаете, что ϵ ϵ \ epsilon s независимы и имеют определенное распределение, то эти вероятности имеют хорошие выражения в близкой форме.

К сожалению, предположение о независимости eps ϵ \ epsilon не является безобидным. В частности, это создает то, что называется проблемой красного автобуса / синего автобуса. В нашем политическом примере это означает, что, если другой кандидат вступит в гонку, этот кандидат будет извлекать пропорционально из трех существующих кандидатов. Но это просто не имеет никакого смысла - если вошел другой либертарианец, вы ожидаете, что он или она получит больше голосов от Джонсона, чем кто-либо еще. Чтобы увидеть, откуда пришло название, предположим, что 1/3 1/3 1/3 города добирается на красном автобусе, 1/3 1/3 1/3 города добирается на поезде, а 1/3 1 / 3 1/3 добираться на машине. Независимость eps ϵ \ epsilon s подразумевает, что если вы покрасите половину автобусов в синий, делая их «отличными» от красных автобусов, теперь у вас будет 1/4 1/4 1/4 города, выбирающего каждый вариант, это означает, что половина города сейчас садится на автобус. Ясно, что это абсурдно - предпочитает ли кто-то синие автобусы поездам, не зависит от того, предпочитают ли они красные автобусы поездам. Это также означает, что если вы агрегируете свои данные и запускаете логит по «шине» или «не по шине», вы получите другие предсказанные вероятности для «шины», чем если вы запустите многочленный логит по «шине», «поезду». и «машина».

Чтобы справиться с этим, существует целая литература о том, что называется моделями дискретного выбора. Возникает нечто, называемое вложенным логитом, когда решения принимаются последовательно, в соответствии со структурой, которую вы указываете как модельер. (Например, сначала избиратель решает, будут ли они голосовать за либертарианца, и затем он решает, за кого голосовать. Модели позволяют оценивать ковариационную матрицу для eps ϵ \ epsilon s, а не предполагать конкретную структуру.

Выяснение того, какая из этих моделей лучше всего подходит для данных, которые не являются данными выбора, еще более запутанно. Упорядоченный логит имеет простую геометрическую интерпретацию, поэтому не составит труда выяснить, имеют ли ваши данные естественный порядок. У полиномиального логита нет прямой геометрической интерпретации, и он больше не создает линейных границ решения.

ответил(а) 2019-12-25T15:57:19+03:00 1 год, 7 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема