Вибір Ознак
Під час роботи з великою кількістю ознак часто невідомо, які з них є важливими. Можна навчити модель на всіх ознаках, перевірити, які з них не є корисними, а потім перенавчити модель, використовуючи лише впливові ознаки.
Чому варто видаляти ознаки з моделі?
Додавання ознаки, не пов’язаної з цільовою змінною, вносить шум і погіршує передбачення. Велика кількість непотрібних ознак накопичує шум і ще більше знижує якість моделі.
Як визначити, чи ознаки є корисними чи ні?
Щоб оцінити, чи мають ознаки значний вплив на цільову змінну, можна обчислити 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. Оберіть НЕПРАВИЛЬНЕ твердження.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Чудово!
Completion показник покращився до 3.33
Вибір Ознак
Свайпніть щоб показати меню
Під час роботи з великою кількістю ознак часто невідомо, які з них є важливими. Можна навчити модель на всіх ознаках, перевірити, які з них не є корисними, а потім перенавчити модель, використовуючи лише впливові ознаки.
Чому варто видаляти ознаки з моделі?
Додавання ознаки, не пов’язаної з цільовою змінною, вносить шум і погіршує передбачення. Велика кількість непотрібних ознак накопичує шум і ще більше знижує якість моделі.
Як визначити, чи ознаки є корисними чи ні?
Щоб оцінити, чи мають ознаки значний вплив на цільову змінну, можна обчислити 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. Оберіть НЕПРАВИЛЬНЕ твердження.
Дякуємо за ваш відгук!