Я б не рекомендував вам використовувати цю процедуру. Моя рекомендація: Відмовитися від цього проекту. Просто здайся і піди. Ви не маєте надії, щоб це спрацювало.
джерело для зображення
Якщо відмовитись від стандартних проблем із покроковим вибором (див. Тут ), у вашому випадку, швидше за все, у вас є ідеальні прогнози через поділ у такому великому просторі.
Я не маю конкретних даних щодо вашої ситуації, але ви заявляєте, що у вас є "лише кілька зразків 10". Давайте будемо благодійними і скажімо, що у вас є 90. Ви також сказали, що у вас є "кілька тисяч функцій". Давайте уявимо, що у вас "лише" 2000. Для простоти скажімо, що всі ваші функції є двійковими. Ви "вважаєте, що мітку класу можна точно передбачити, використовуючи лише декілька функцій", скажімо, що ви будете шукати набори до 9 максимум функцій. Нарешті, давайте уявимо, що відносини є детермінованими, щоб справжні стосунки завжди були ідеально присутніми у ваших даних. (Ми можемо змінити ці числа та припущення, але це повинно тільки погіршити проблему.) Тепер, наскільки добре ви змогли б відновити ці відносини за цих (щедрих) умов? Тобто, як часто правильний набір буде єдиним набором, який дає ідеальну точність? Або, по-іншому, скільки наборів з дев'яти функцій також підійдуть випадково?
Деякі (надмірно) прості математичні та симуляції повинні дати певні підказки до цього питання. По-перше, з 9 змінних, кожна з яких може бути 0 або 1, кількість моделей, які спостереження могли б показати, є , але у вас буде лише 90 спостережень. Таким чином, цілком можливо, що для даного набору з 9 бінарних змінних, кожне спостереження має різний набір значень предиктора - повторів немає. Без реплік з тими самими значеннями предиктора, де деякі мають y = 0, а деякі y = 1, ви матимете повне розділення і можливе ідеальне передбачення кожного спостереження. 29=512
Нижче у мене є симуляція (зашифрована в R), щоб побачити, як часто у вас немає шаблонів значень x з 0 і 1. Як це працює, я отримую набір чисел від 1 до 512, які представляють можливі шаблони, і я бачу, чи будь-який із шаблонів у першому 45 (це може бути 0) відповідає одному з шаблонів у другому 45 (це може бути 1). Це передбачає, що у вас є ідеально збалансовані дані відповідей, що дає вам найкращий можливий захист від цієї проблеми. Зауважте, що наявність декількох реплікуваних x-векторів з різними y-значеннями насправді не виводить вас з лісу, це просто означає, що ви не зможете досконало передбачити кожне спостереження у вашому наборі даних, що є дуже суворим стандартом I я тут використовую.
set.seed(7938) # this makes the simulation exactly reproducible
my.fun = function(){
x = sample.int(512, size=90, replace=TRUE)
return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique) # [1] 0.0181
Моделювання передбачає, що у вас виникне ця проблема з приблизно 1,8% наборів 9 х змінних. Тепер, скільки наборів з 9 є? Строго, це був би (оскільки ми встановили, що у вашому наборі є справжні 9 детермінованих причинних змінних). Однак багато з цих наборів будуть перекриватися; буде 1991 / 9 ≈ 221 неперекривающіеся набори 9межах зазначеного розділу ваших змінних (з багатьма такими розділами можливо). Таким чином, в межах деякого даного розділу ми можемо очікувати, що це буде 221 × 0,018 ≈ 41991 choose 9=1.3×10241991/9≈221221×0.018≈4 набори з 9-х змінних, які чудово спрогнозують кожне спостереження у вашому наборі даних.
Зауважте, що ці результати стосуються лише тих випадків, коли у вас є відносно більший набір даних (у межах "десятків"), порівняно менша кількість змінних (у межах "тисяч"), лише шукає випадки, коли кожне спостереження можна прогнозувати ідеально ( буде ще багато наборів, які майже ідеальні) і т. д. Ваш фактичний випадок навряд чи вийде «добре». Більше того, ми заявили, що відносини є повністю детермінованими. Що буде, якщо у відносинах є якийсь випадковий шум? У такому випадку у вас все ж будуть знаходитись ~ 4 (null) набори, які ідеально передбачають ваші дані, але правильний набір цілком може бути серед них .
Тл; д-р , основний момент тут полягає в тому, що ваш набір змінних є занадто великим / великим розміром, а ваш обсяг даних занадто малий, щоб все було можливо. Якщо це дійсно вірно, що у вас є "десятки" зразків, "тисячі" змінних, і абсолютно немає земної ідеї, які змінні можуть бути правильними, ви не маєте надії дістатися куди-небудь з будь-якою процедурою. Іди, роби щось ще зі своїм часом.