Зачем использовать масштабирование Платта?


17

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

В основном каждый использует логистическую регрессию для отображения до [ 0 ; 1 ] . Зависимая переменная является истинной меткой, а предиктор - достоверностью некалиброванной модели. Что я не понимаю, так это использование целевой переменной, отличной от 1 или 0. Метод требует создания новой «метки»:[;][0;1]

Чтобы избежать наложения на набор сигмоидальных поездов, используется модель вне образца. Если в наборе поездов имеется положительных и N - отрицательных примеров, для каждого обучающего примера в калибровке Платта используются целевые значения y + и y - (вместо 1 и 0 соответственно), где y + = N + + 1N+Ny+y

y+=N++1N++2;y=1N+2

Что я не понимаю, так это то, как эта новая цель полезна. Не будет ли логистическая регрессия просто рассматривать зависимую переменную как двоичную метку (независимо от того, какая метка задана)?

ОБНОВИТЬ:

1/0PROC GENMOD

data(ToothGrowth) 
attach(ToothGrowth) 

  # 1/0 coding 
dep          <- ifelse(supp == "VC", 1, 0) 
OneZeroModel <- glm(dep~len, family=binomial) 
OneZeroModel 
predict(OneZeroModel) 

  # Platt coding 
dep2           <- ifelse(supp == "VC", 31/32, 1/32) 
plattCodeModel <- glm(dep2~len, family=binomial) 
plattCodeModel 
predict(plattCodeModel) 

compare        <- cbind(predict(OneZeroModel), predict(plattCodeModel)) 

plot(predict(OneZeroModel), predict(plattCodeModel))

Ответы:


13

Я предлагаю проверить страницу логистической регрессии в Википедии . В нем говорится, что в случае двоичной зависимой переменной логистическая регрессия отображает предикторы на вероятность появления зависимой переменной. Без каких-либо преобразований вероятность, используемая для обучения модели, равна либо 1 (если у положительна в обучающем наборе), либо 0 (если у отрицательна).

pi=1(1+exp(Afi+B))fiy+y


Спасибо за ответ! Сначала я использовал SAS и не смог получить другую переменную ответа. Я подгоняю следующее в R в качестве примера и вижу, что выдается предупреждение о том, что я не являюсь переменной целочисленного отклика, но результат соответствует другой модели.
B_Miner

data (ToothGrowth) присоединение (ToothGrowth) # 1/0 кодирование dep <-ifelse (supp == "VC", 1,0) OneZeroModel <-glm (dep ~ len, family = binomial) Предсказание OneZeroModel (OneZeroModel) # Кодирование платформы dep2 <-ifelse (supp == "VC", 31/32, 1/32) plattCodeModel <-glm (dep2 ~ len, family = binomial) PlattCodeModel прогнозировать (plattCodeModel) сравнить <-cbind (прогнозировать (OneZeroModel), прогнозировать (прогнозировать) plattCodeModel)) сюжет (прогнозирование (OneZeroModel), прогнозирование (plattCodeModel))
B_Miner

@ user2040: 1. Да ... есть вопрос или это просто замечание :)? 2. почему вы не добавили код к вопросу? Нет форматирования это ужасно.
Штеффен

2

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

Однако, если вам нужен классификатор, который выдает оценки вероятности членства в классе, то вам лучше использовать логистическую регрессию ядра, которая предназначена для этого напрямую. Выход SVM предназначен для дискретной классификации и не обязательно содержит информацию, необходимую для точной оценки вероятностей вдали от контура р = 0,5.

Классификаторы гауссовских процессов - еще один хороший вариант, если вы хотите основанный на ядре вероятностный классификатор.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.