Добавление весов к логистической регрессии для несбалансированных данных


21

Я хочу смоделировать логистическую регрессию с несбалансированными данными (9: 1). Я хотел попробовать опцию весов в glmфункции в R, но я не уверен на 100%, что она делает.

Допустим , моя переменная выход c(0,0,0,0,0,0,0,0,0,1). Теперь я хочу дать «1» в 10 раз больше веса. поэтому я даю весовой аргумент weights=c(1,1,1,1,1,1,1,1,1,1,1,10).

Когда я это сделаю, это будет учитываться при расчете максимальной вероятности. Я прав? неправильная классификация «1» лишь в 10 раз хуже, чем неправильная классификация «0».

Ответы:


11

Ching, Вам не нужно делать свой набор данных сбалансированным с точки зрения 1 и 0. Все, что вам нужно, это достаточное количество единиц для максимальной вероятности схождения. Глядя на распределение 1 (100 000) в вашем наборе данных, у вас не должно возникнуть никаких проблем. Вы можете сделать простой эксперимент здесь

  1. Отберите 10% из 1 и 10% из 0 и используйте вес 10 для обоих
  2. Отберите 100% из 1 и 10% из 0 и используйте вес 10 для 0

В обоих случаях вы получите одинаковые оценки. Опять же, идея взвешивания связана с отбором проб. Если вы используете весь набор данных, вы не должны взвешивать его. На вашем месте я бы использовал 10%, если 1, и 10% от 0.

В R вы бы использовали glm. Вот пример кода:

glm(y ~ x1 + x2, weights = wt, data =data, family = binomial("logit"))

В вашем наборе данных должна быть переменная wtдля весов.

Если вы используете 10% от 0 и 1, ваша wtпеременная будет иметь значение 10.

Если вы используете 10% от 0 и 100% от 1: wtпеременная будет иметь значение 10 для наблюдений с y = 0 и 1 для наблюдений с y = 1


12

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

Пример. Допустим, в населении 500 000 транзакций существует 50 мошеннических транзакций. В этом случае вы бы

  1. Пример всех 50 сделок с мошенничеством (100% мошенничества)
  2. 10% хороших транзакций (10% из 500 000 - 50 000 хороших транзакций)

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

См .: Логистическая регрессия в данных о редких событиях (King 2001)


привет субра !!! Большое спасибо за подход короля! не слышал об этом! в моем случае у меня 1 миллион транзакций! (900.000 - это «0», а 100.000 - это «1»). так я должен выбрать 10% моего "0"? тогда у меня есть почти сбалансированный набор данных. тогда я должен весить «0» в десять раз больше, чем «1», верно? и функция в R glm () в пакете MASS точно делает это правильно? если я взвеслю свои наблюдения, я вычислю взвешенную максимальную вероятность? Спасибо! действительно ценю ваш ответ и помощь
цзин

Я действительно много думаю об этой проблеме. Что если я скажу: теперь используйте все мои данные для построения модели логита (с несбалансированными данными 9: 1). и затем я взвешиваю «1» в десять раз, хотя в действительности у меня нет больше данных, и это НЕ 10% моих данных. это похоже на то, как я себя веду ... так что теперь, когда R вычисляет модель, он думает, что я использую только 10% от моей "1", и учитывает это при расчете вероятности. Имеет ли это смысл?
Чинг
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.