Оптимальне підключення відносно заданої змінної відповіді


12

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

Приклад: У мене є набір спостережень за людьми зі змінними "висота" (число безперервно) та "has_back_pains" (бінарні). Я хочу розрізнити висоту на 3 інтервали (групи) максимум з різною часткою людей з болями в спині, щоб алгоритм максимізував різницю між групами (наприклад, із заданими обмеженнями, щоб кожен інтервал мав принаймні х спостережень).

Очевидним рішенням цієї проблеми було б використання дерев рішень (проста модель з однією змінною), але я не можу знайти жодної функції в R, яка мала б "максимальну кількість гілок" як параметр - всі вони ділять змінну на 2 гропу (<= x і> x). У шахтера SAS є параметр "максимальна галузь", але я шукаю некомерційне рішення.

деякі мої змінні мають лише декілька унікальних значень (і їх можна розглядати як дискретні змінні), але я хочу їх дискретизувати також на меншу кількість інтервалів.

Найближче рішення моєї проблеми реалізовано в пакеті smbinning в R (який покладається на функцію ctree від партійного пакета), але він має два недоліки: встановити кількість інтервалів неможливо (однак, ви можете знайти спосіб її вирішення, змінивши параметр p), і він не працює, коли вектор даних має менше 10 унікальних значень. У будь-якому випадку ви можете побачити приклад результату тут (стовпці "Точка вирішення" та "Коефіцієнти мають вирішальне значення":

Cutpoint CntRec CntGood CntBad CntCumRec CntCumGood CntCumBad PctRec BadRate   Odds  LnOdds     WoE     IV
1   <= 272   9081     169   8912      9081        169      8912 0.1874  0.9814 0.0190 -3.9653 -0.6527 0.0596
2   <= 311   8541     246   8295     17622        415     17207 0.1762  0.9712 0.0297 -3.5181 -0.2055 0.0068
3   <= 335   2986     163   2823     20608        578     20030 0.0616  0.9454 0.0577 -2.8518  0.4608 0.0163
4  Missing  27852    1125  26727     48460       1703     46757 0.5747  0.9596 0.0421 -3.1679  0.1447 0.0129
5    Total  48460    1703  46757        NA         NA        NA 1.0000  0.9649 0.0364 -3.3126  0.0000 0.0956

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


SPSS має команду Optimal Binning. Google SPSS Algorithms Optimal Binning.
ttnphns

Ви бачили цю публікацію stackoverflow.com/questions/7018954/… Тут згадується використання інформаційної цінності, але не зрозуміло, що це означає IV = 1, або не пояснюється, як це досягти
адам

Відповіді:


7

Читаючи цю книгу тут (Nagarajan, 2103 [1]), я натрапив на цю цінну інформацію, яку я безсоромно цитую тут:

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

  • Використання евристики перед вивченням структури мережі. Деякі приклади: Штурж, Фрідман-Діаконіс або правила Скотта (Venables and Ripley, 2002).

  • Вибір кількості інтервалів та їх меж, щоб збалансувати точність та втрату інформації (Kohavi and Sahami, 1996), знову одна змінна за часом та до того, як мережна структура буде вивчена. Аналогічний підхід, що розглядає пари змінних, представлений у Hartemink (2001).

  • Ітераційне виконання навчання та дискретизації, поки не буде досягнуто покращення (Friedman and Goldszmidt, 1996).

Ці стратегії представляють різні компроміси між точністю дискретного подання вихідних даних та обчислювальною ефективністю перетворення.

Ця інформація надається у випадку, якщо ви хочете виправдати метод бінінгу, який ви хочете використовувати, а не просто використовувати пакет безпосередньо.

[1]: Nagarajan R. (2013),
Bayesian Networks in R, з додатками в системній біології
Спрингер


4

Спробуйте Інформаційний пакет для R. https://cran.r-project.org/web/packages/Information/Information.pdf https://cran.r-project.org/web/packages/Information/vignettes/Information-vignette .html

Інформаційний пакет має функціональні можливості для обчислення WoE та IV (кількість бін є гнучким параметром, за замовчуванням - 10) і є зручним інструментом для вивчення даних, а отже, для бінінгу. Вихід не містить коефіцієнтів; і не можна вказати нуль як окремий бін (для моїх задач нуль часто є власним правильним біном); і було б непогано отримати вихід з інформаційного пакету, який би був подібний до smbinning. Однак, якщо говорити про приємні, але все ще недоступні функції інформаційного пакету, інші пакети R для WoE та IV (горе, klaR) не справили враження настільки корисні інструменти, як інформаційний пакет, насправді я не вдалося запустити їх через 2-3 спроби. Для вирішення задач зкреситування / бінінгу пакети інформації та розміщення можуть добре працювати разом,

Для фактичного бінінгу я використовував data.table замість функції cut (). Дивіться посилання на мою публікацію нижче, вона містить загальний код у самій нижній частині початкового питання: /programming/34939845/binning-variables-in-a-dataframe-with-input-bin-data- з-іншого-фрейму даних

Сподіваюся, це допомагає.


@kjetil, kjetil b halvorsen, ти маєш рацію. Інформаційний пакет має функціональні можливості для обчислення WoE та IV (кількість бункерів є гнучким параметром, за замовчуванням - 10) і є зручним інструментом для вивчення даних, а отже, для бінінгу. Вихід не містить коефіцієнтів. І не можна вказати нуль як окремий бін (для моїх задач нуль часто є власним правильним біном). Інші пакети R для WoE та IV (woe, klaR) не справили враження настільки корисними інструментами, як інформаційний пакет. Таким чином, пакет інформації та розміщення може добре працювати разом як комбінація.
Актан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.