Лінійна регресійна модель Scikit-learn дозволяє користувачам відключати перехоплення. Тож для кодування з гарячим кодом я завжди повинен встановлювати fit_intercept = Неправильно? Для фіктивного кодування fit_intercept завжди повинен бути встановлений на True? Я не бачу жодного «попередження» на веб-сайті.
Для нерегульованої лінійної моделі з однокольоровим кодуванням, так, вам потрібно встановити перехоплення на помилкове або інакше мати ідеальну колінеарність. sklearn
також передбачає покарання за усадку хребта, і в цьому випадку це не потрібно, і насправді ви повинні включати як перехоплення, так і всі рівні. Для фіктивного кодування слід включати перехоплення, якщо ви не стандартизували всі свої змінні, і в цьому випадку перехоплення дорівнює нулю.
Оскільки одне гаряче кодування генерує більше змінних, чи має воно більше ступеня свободи, ніж фіктивне кодування?
Перехоплення - це додаткова ступінь свободи, тому у чітко визначеній моделі все це вирівнюється.
Щодо другого, що робити, якщо існують k категоричні змінні? k змінні видаляються в макетному кодуванні. Чи все-таки ступінь свободи однакова?
Ви не могли підійти до моделі, в якій використовували всі рівні обох категоричних змінних, перехоплюючи чи ні. Оскільки, як тільки у вас є закодовані всі рівні в одній змінній в моделі, скажімо, з двійковими змінними , тоді у вас є лінійна комбінація предикторів, що дорівнює постійному векторуx1,x2,…,xn
x1+x2+⋯+xn=1
Якщо ви спробуєте ввести в модель усі рівні іншого категоричного , ви отримаєте чітку лінійну комбінацію, рівну постійному векторуx′
x′1+x′2+⋯+x′k=1
і так ви створили лінійну залежність
x1+x2+⋯xn−x′1−x′2−⋯−x′k=0
Отже, ви повинні залишити рівень у другій змінній, і все вирівняється належним чином.
Скажімо, у мене є 3 категоричні змінні, кожна з яких має 4 рівні. У фіксованому кодуванні 3 * 4-3 = 9 змінних будуються з одним перехопленням. В одному гарячому кодуванні 3 * 4 = 12 змінних будуються без перехоплення. Я прав?
Друга річ насправді не працює. колонка дизайн матриця створення буде особливою. Вам потрібно видалити три стовпчики, по одному з кожного з трьох чітких категоріальних кодувань, щоб відновити несингулярність вашого дизайну.3×4=12