Взвешенная логистическая регрессия


9

Я смотрю на несколько вопросов логистической регрессии. («обычный» и «условный»).

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

Конечно, это было сделано раньше. Может ли кто-нибудь указать мне на некоторую соответствующую литературу (или, возможно, предложить модифицированную функцию правдоподобия).

Спасибо!


1
Вы предполагаете, что классификация является целью, а не предсказанием. Для оптимальной оценки вероятностей вам не нужно ничего перевешивать. «Ложные отрицания» и «ложные срабатывания» возникают только при принудительном выборе, и обычно никто не навязывает чисто бинарный выбор.
Фрэнк Харрелл

@Frank Вы делаете хорошую мысль. В конечном счете, цель этого проекта - предсказать исход дальнейших событий. (Так что, я думаю, это можно считать тестом машинного обучения с данными тренировок.) Некоторые результаты более «важны», чем другие, поэтому я искал способ соответствующим образом их взвесить. Предложение Ника для функции правдоподобия имеет смысл и должно быть довольно тривиальным для реализации в коде.
Ноя

1
Похоже, вам нужна именно вероятностная модель без весов.
Фрэнк Харрелл

1
Правильно; подключите функцию стоимости и используйте прогнозируемую вероятность, и вы получите оптимальное решение.
Фрэнк Харрелл

1
С хорошо откалиброванной вероятностной моделью нет «ошибок», есть просто случайность, которую невозможно предсказать. Оптимальные решения являются функцией прогнозируемой вероятности и функцией затрат для принятия различных решений.
Фрэнк Харрелл

Ответы:


3

glmсодержит параметр weightsименно для этой цели. Вы предоставляете ему вектор чисел в любом масштабе, который содержит столько же весов, сколько у вас есть наблюдения.

Я только сейчас понимаю, что вы не можете говорить R. Если нет, вы можете захотеть.


Я очень знаком с R, однако я хотел бы понять математику за функцией вероятности. Я мог бы написать это на C ++ или другом языке. (Доверие к «черному ящику» функции glm не всегда является лучшим решением)
Noah

Ах. Хорошо тебе. Ну, насколько я знаю, веса просто используются для умножения вероятности логарифма за наблюдение. Так что если вы написали невзвешенную версию, добавление весов должно быть пустяком. Также обратите внимание, что вы всегда можете посмотреть на исходный код, glmчтобы (вероятно) найти реализацию на Си.
Ник Сэбб

2
3,0,57,0,53,7

3
Вот обсуждение аргумента «весов» на доске объявлений: r.789695.n4.nabble.com/Weights-in-binomial-glm-td1991249.html
Макрос

@Macro: спасибо! Очень аккуратный. Одна из вещей, которая могла бы ударить меня по зубам, если бы я использовал это до вашего комментария :-)
Ник Сабби

1

Если у вас есть доступ к SAS, это очень легко сделать с помощью PROC GENMOD. Поскольку каждое наблюдение имеет переменную веса, использование оператора веса позволит вам выполнить тот анализ, который вы ищете. Я в основном использовал его с использованием весов обратной вероятности лечения, но я не вижу причин, по которым вы не могли бы присвоить веса вашим данным, чтобы подчеркнуть определенные типы случаев, если вы уверены, что ваш N остается постоянным. Вы также захотите включить некоторую переменную ID, потому что технически пересмотренные случаи - это повторные наблюдения. Пример кода с идентификатором наблюдения 'id' и переменной веса 'wt':

proc genmod data=work.dataset descending;
    class id;
    model exposure = outcome covariate / dist=bin link=logit;
    weight wt;
    repeated subject=id/type=ind;
run;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.