Вибір Ознак
У багатьох завданнях може бути багато ознак, корисність яких невідома. На щастя, можна навчити модель з усіма ознаками, визначити, які з них не мають впливу, а потім перенавчити модель лише з впливовими ознаками.
Чому варто видаляти ознаки з моделі?
Якщо додати до моделі ознаку, яка не має зв'язку з цільовою змінною, це створить шум у моделі, що погіршить прогнозування. Коли ж таких непотрібних ознак багато, шум накопичується, і якість моделі ще більше погіршується.
Як визначити, чи ознаки хороші чи погані?
Як вже відомо, під час навчання клас 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-значення, тим вища впевненість у тому, що ознака є впливовою.
У статистиці необхідно встановити порогове значення p-значення, яке називається рівнем значущості. Зазвичай його встановлюють на рівні 0.05, і якщо p-значення перевищує цей рівень значущості, ознаку вважають незначущою.
Однак на практиці ознаки з трохи вищим p-значенням, ніж 0.05, також часто покращують модель. Тому краще протестувати модель з цією ознакою та без неї, замість того щоб одразу її видаляти, якщо тільки p-значення не є дуже високим (>0.4). У такому випадку ознаку можна безпечно видалити.
p-значення змінюється від 0 до 1, тому під низьким p-значенням мається на увазі менше ніж 0.05, а під високим p-значенням зазвичай мається на увазі більше ніж 0.3-0.5.
У нашому прикладі ми отримали p-значення для зросту матері та константи 0.087 і 0.051 відповідно. Якщо видалити ознаки з p-значенням > 0.05, отримаємо результат, показаний нижче (ліворуч).
Навіть візуально можна побачити, що модель з константою (праворуч) є кращою, тому не варто її видаляти з моделі.
Зазвичай для впливових ознак у невеликих наборах даних отримують відносно високі p-значення (0.05 до 0.2). P-значення показує впевненість у тому, що ознака є впливовою, і це природно, що чим більше у нас прикладів, тим легше відрізнити впливові ознаки від незначущих.
Наприклад, у вас є дані, що 9/10 знайомих вам високих людей щодня їли яблука. Чи можете ви бути впевнені, що це пов'язано? А якщо це буде 9000/10000? Це додасть впевненості.
Як видалити некорисні ознаки?
Потрібно просто видалити стовпець, що відповідає ознаці, з 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. Оберіть НЕПРАВИЛЬНЕ твердження.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 5.26
Вибір Ознак
Свайпніть щоб показати меню
У багатьох завданнях може бути багато ознак, корисність яких невідома. На щастя, можна навчити модель з усіма ознаками, визначити, які з них не мають впливу, а потім перенавчити модель лише з впливовими ознаками.
Чому варто видаляти ознаки з моделі?
Якщо додати до моделі ознаку, яка не має зв'язку з цільовою змінною, це створить шум у моделі, що погіршить прогнозування. Коли ж таких непотрібних ознак багато, шум накопичується, і якість моделі ще більше погіршується.
Як визначити, чи ознаки хороші чи погані?
Як вже відомо, під час навчання клас 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-значення, тим вища впевненість у тому, що ознака є впливовою.
У статистиці необхідно встановити порогове значення p-значення, яке називається рівнем значущості. Зазвичай його встановлюють на рівні 0.05, і якщо p-значення перевищує цей рівень значущості, ознаку вважають незначущою.
Однак на практиці ознаки з трохи вищим p-значенням, ніж 0.05, також часто покращують модель. Тому краще протестувати модель з цією ознакою та без неї, замість того щоб одразу її видаляти, якщо тільки p-значення не є дуже високим (>0.4). У такому випадку ознаку можна безпечно видалити.
p-значення змінюється від 0 до 1, тому під низьким p-значенням мається на увазі менше ніж 0.05, а під високим p-значенням зазвичай мається на увазі більше ніж 0.3-0.5.
У нашому прикладі ми отримали p-значення для зросту матері та константи 0.087 і 0.051 відповідно. Якщо видалити ознаки з p-значенням > 0.05, отримаємо результат, показаний нижче (ліворуч).
Навіть візуально можна побачити, що модель з константою (праворуч) є кращою, тому не варто її видаляти з моделі.
Зазвичай для впливових ознак у невеликих наборах даних отримують відносно високі p-значення (0.05 до 0.2). P-значення показує впевненість у тому, що ознака є впливовою, і це природно, що чим більше у нас прикладів, тим легше відрізнити впливові ознаки від незначущих.
Наприклад, у вас є дані, що 9/10 знайомих вам високих людей щодня їли яблука. Чи можете ви бути впевнені, що це пов'язано? А якщо це буде 9000/10000? Це додасть впевненості.
Як видалити некорисні ознаки?
Потрібно просто видалити стовпець, що відповідає ознаці, з 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. Оберіть НЕПРАВИЛЬНЕ твердження.
Дякуємо за ваш відгук!