Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Вибір Ознак | Секція
Practice
Projects
Quizzes & Challenges
Вікторини
Challenges
/
Основи Контрольованого Навчання

bookВибір Ознак

Під час роботи з великою кількістю ознак часто невідомо, які з них є важливими. Можна навчити модель на всіх ознаках, перевірити, які з них не є корисними, а потім перенавчити модель, використовуючи лише впливові ознаки.

Чому варто видаляти ознаки з моделі?

Додавання ознаки, не пов’язаної з цільовою змінною, вносить шум і погіршує передбачення. Велика кількість непотрібних ознак накопичує шум і ще більше знижує якість моделі.

Як визначити, чи ознаки є корисними чи ні?

Щоб оцінити, чи мають ознаки значний вплив на цільову змінну, можна обчислити p-значення для кожної ознаки. Низьке p-значення свідчить про статистичну значущість ознаки.

1234567891011121314151617
import 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)
copy

Коротко кажучи, чим менше p-значення, тим вища впевненість у тому, що ознака є впливовою. Зазвичай p-значення менше 0.05 вважається статистично значущим.

У наведеному вище прикладі:

  • Father: (надзвичайно мале, високо значуще)
  • Mother: (дуже мале, високо значуще)

Обидві ознаки є хорошими предикторами для цільової змінної.

У статистиці встановлюється рівень значущості, зазвичай 0.05. Якщо p-значення ознаки перевищує цей поріг, вона вважається не впливовою.

На практиці дещо вищі p-значення (трохи більше 0.05) також можуть бути корисними для моделі. Безпечніше протестувати модель з такою ознакою та без неї. Але якщо p-значення дуже високе (>0.4), його можна впевнено видаляти.

Note
Примітка

p-значення змінюється від 0 до 1, тому під низьким p-значенням мається на увазі менше 0.05, а під високим — зазвичай більше 0.3-0.5.

У нашому прикладі ми отримали p-значення для Mother's height та константи 0.087 і 0.051. Якщо видалити ознаки з p-значенням > 0.05, отримаємо результат нижче (ліворуч).

Навіть візуально можна побачити, що модель із константою (праворуч) є кращою, тому не варто її видаляти з моделі.

Note
Примітка

Невеликі набори даних часто дають вищі 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. Оберіть НЕПРАВИЛЬНЕ твердження.

question mark

Які з ознак слід ЗАЛИШИТИ?

Select all correct answers

question mark

Оберіть НЕПРАВИЛЬНЕ твердження.

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 8

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookВибір Ознак

Свайпніть щоб показати меню

Під час роботи з великою кількістю ознак часто невідомо, які з них є важливими. Можна навчити модель на всіх ознаках, перевірити, які з них не є корисними, а потім перенавчити модель, використовуючи лише впливові ознаки.

Чому варто видаляти ознаки з моделі?

Додавання ознаки, не пов’язаної з цільовою змінною, вносить шум і погіршує передбачення. Велика кількість непотрібних ознак накопичує шум і ще більше знижує якість моделі.

Як визначити, чи ознаки є корисними чи ні?

Щоб оцінити, чи мають ознаки значний вплив на цільову змінну, можна обчислити p-значення для кожної ознаки. Низьке p-значення свідчить про статистичну значущість ознаки.

1234567891011121314151617
import 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)
copy

Коротко кажучи, чим менше p-значення, тим вища впевненість у тому, що ознака є впливовою. Зазвичай p-значення менше 0.05 вважається статистично значущим.

У наведеному вище прикладі:

  • Father: (надзвичайно мале, високо значуще)
  • Mother: (дуже мале, високо значуще)

Обидві ознаки є хорошими предикторами для цільової змінної.

У статистиці встановлюється рівень значущості, зазвичай 0.05. Якщо p-значення ознаки перевищує цей поріг, вона вважається не впливовою.

На практиці дещо вищі p-значення (трохи більше 0.05) також можуть бути корисними для моделі. Безпечніше протестувати модель з такою ознакою та без неї. Але якщо p-значення дуже високе (>0.4), його можна впевнено видаляти.

Note
Примітка

p-значення змінюється від 0 до 1, тому під низьким p-значенням мається на увазі менше 0.05, а під високим — зазвичай більше 0.3-0.5.

У нашому прикладі ми отримали p-значення для Mother's height та константи 0.087 і 0.051. Якщо видалити ознаки з p-значенням > 0.05, отримаємо результат нижче (ліворуч).

Навіть візуально можна побачити, що модель із константою (праворуч) є кращою, тому не варто її видаляти з моделі.

Note
Примітка

Невеликі набори даних часто дають вищі 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. Оберіть НЕПРАВИЛЬНЕ твердження.

question mark

Які з ознак слід ЗАЛИШИТИ?

Select all correct answers

question mark

Оберіть НЕПРАВИЛЬНЕ твердження.

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 8
some-alt