Вибір Ознак
Свайпніть щоб показати меню
Під час роботи з великою кількістю ознак часто невідомо, які з них є важливими. Можна навчити модель на всіх ознаках, перевірити, які з них не є корисними, а потім перенавчити модель, використовуючи лише впливові ознаки.
Чому варто видаляти ознаки з моделі?
Додавання ознаки, не пов’язаної з цільовою змінною, вносить шум і погіршує передбачення. Велика кількість непотрібних ознак накопичує шум і ще більше знижує якість моделі.
Як визначити, чи ознаки є корисними чи ні?
Щоб оцінити, чи мають ознаки значний вплив на цільову змінну, можна обчислити p-значення для кожної ознаки. Низьке p-значення свідчить про статистичну значущість ознаки.
1234567891011121314151617import pandas as pd from sklearn.feature_selection import f_regression file_link = 'https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b22d1166-efda-45e8-979e-6c3ecfc566fc/heights_two_feature.csv' df = pd.read_csv(file_link) X, y = df[['Father', 'Mother']], df['Height'] # f_regression returns F-statistic and p-values f_stat, p_values = f_regression(X, y) # Create a DataFrame to view results nicely results = pd.DataFrame({ 'Feature': X.columns, 'p_value': p_values }) print(results)
Коротко кажучи, чим менше p-значення, тим вища впевненість у тому, що ознака є впливовою. Зазвичай p-значення менше 0.05 вважається статистично значущим.
У наведеному вище прикладі:
Father: (надзвичайно мале, високо значуще)Mother: (дуже мале, високо значуще)
Обидві ознаки є хорошими предикторами для цільової змінної.
У статистиці встановлюється рівень значущості, зазвичай 0.05. Якщо p-значення ознаки перевищує цей поріг, вона вважається не впливовою.
На практиці дещо вищі p-значення (трохи більше 0.05) також можуть бути корисними для моделі. Безпечніше протестувати модель з такою ознакою та без неї. Але якщо p-значення дуже високе (>0.4), його можна впевнено видаляти.
p-значення змінюється від 0 до 1, тому під низьким p-значенням мається на увазі менше 0.05, а під високим — зазвичай більше 0.3-0.5.
У нашому прикладі ми отримали p-значення для Mother's height та константи 0.087 і 0.051. Якщо видалити ознаки з p-значенням > 0.05, отримаємо результат нижче (ліворуч).
Навіть візуально можна побачити, що модель із константою (праворуч) є кращою, тому не варто її видаляти з моделі.
Невеликі набори даних часто дають вищі p-значення (0,05–0,2) навіть для значущих ознак. P-значення відображають рівень впевненості: зі збільшенням обсягу даних легше відрізнити справді впливові ознаки від шумових.
Як видалити некорисні ознаки?
Потрібно просто видалити стовпець, що відповідає ознаці, з X_tilde. Це можна зробити за допомогою наступного коду:
X_tilde = X_tilde.drop(___, axis=1)
Наприклад, щоб видалити стовпці 'const' та 'Mother', використовуйте:
X_tilde = X_tilde.drop(['Mother', 'const'], axis=1)
Далі створіть новий об'єкт OLS, використовуючи оновлений X_tilde:
regression_model=sm.OLS(y, X_tilde)
1. Які з ознак слід ЗАЛИШИТИ?
2. Оберіть НЕПРАВИЛЬНЕ твердження.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат