Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Вибір Ознак | Множинна Лінійна Регресія
Лінійна Регресія з Python

bookВибір Ознак

У багатьох завданнях ви можете мати багато ознак, корисність яких невідома. На щастя, можна навчити модель з усіма ознаками, визначити, які з них не мають впливу, а потім перенавчити модель лише з тими, що мають значення.

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

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

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

Як вже відомо, під час навчання клас OLS також обчислює статистичну інформацію. Зокрема, він виконує t-тест, щоб визначити, чи має кожна ознака значущий вплив на цільову змінну. Результати тесту можна знайти у таблиці summary(), як показано нижче:

123456789
import 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
copy

Нас цікавить p-значення для кожної ознаки.

Коротко: чим менше p-значення, тим вища впевненість у впливовості ознаки.

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

Однак на практиці ознаки з дещо вищим p-значенням, ніж 0.05, також можуть покращувати модель. Тому краще протестувати модель з цією ознакою та без неї, а не одразу видаляти її з моделі, якщо тільки p-значення не є дійсно високим (>0.4). У такому випадку ознаку можна безпечно видалити.

Note
Примітка

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

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

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

Note
Примітка

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

question mark

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

Select the correct answer

question mark

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

Select the correct answer

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

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

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

Секція 2. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

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

bookВибір Ознак

У багатьох завданнях ви можете мати багато ознак, корисність яких невідома. На щастя, можна навчити модель з усіма ознаками, визначити, які з них не мають впливу, а потім перенавчити модель лише з тими, що мають значення.

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

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

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

Як вже відомо, під час навчання клас OLS також обчислює статистичну інформацію. Зокрема, він виконує t-тест, щоб визначити, чи має кожна ознака значущий вплив на цільову змінну. Результати тесту можна знайти у таблиці summary(), як показано нижче:

123456789
import 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
copy

Нас цікавить p-значення для кожної ознаки.

Коротко: чим менше p-значення, тим вища впевненість у впливовості ознаки.

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

Однак на практиці ознаки з дещо вищим p-значенням, ніж 0.05, також можуть покращувати модель. Тому краще протестувати модель з цією ознакою та без неї, а не одразу видаляти її з моделі, якщо тільки p-значення не є дійсно високим (>0.4). У такому випадку ознаку можна безпечно видалити.

Note
Примітка

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

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

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

Note
Примітка

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

question mark

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

Select the correct answer

question mark

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

Select the correct answer

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

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

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

Секція 2. Розділ 4
some-alt