Вибір Ознак
Свайпніть щоб показати меню
Під час роботи з багатьма ознаками часто невідомо, які з них є важливими. Можна навчити модель з усіма ознаками, перевірити, які з них не є корисними, а потім перенавчити модель, використовуючи лише впливові ознаки.
Чому варто видаляти ознаки з моделі?
Додавання ознаки, не пов’язаної з цільовою змінною, вносить шум і погіршує передбачення. Велика кількість непотрібних ознак накопичує шум і ще більше знижує якість моделі.
Як визначити, чи ознаки є корисними чи ні?
OLS надає статистичні тести під час навчання. Кожна ознака отримує результат t-тесту, який відображається у таблиці summary(), і показує, чи має вона значущий вплив на цільову змінну.
123456789import pandas as pd import statsmodels.api as sm 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) # Open the file X,y = df[['Father', 'Mother']], df['Height'] # Assign the variables X_tilde = sm.add_constant(X) # Create X_tilde regression_model = sm.OLS(y, X_tilde).fit() # Initialize and train an OLS object print(regression_model.summary()) #Get the summary
Нас цікавить p-значення для кожної ознаки.
Коротко кажучи, чим менше p-значення, тим вища впевненість у тому, що ознака є впливовою.
У статистиці встановлюється рівень значущості, зазвичай 0,05. Якщо p-значення ознаки перевищує цей поріг, вона вважається незначущою.
На практиці дещо вищі p-значення (трохи більше 0,05) також можуть бути корисними для моделі. Доцільно протестувати модель з такою ознакою та без неї. Але якщо p-значення дуже високе (>0,4), його можна впевнено видаляти.
p-значення змінюється від 0 до 1, тому під низьким p-значенням мається на увазі менше 0,05, а під високим — зазвичай більше 0,3-0,5.
У нашому прикладі ми отримали p-значення для зросту матері та константи 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. Оберіть НЕПРАВИЛЬНЕ твердження.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат