Конструювання ознак

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Конструюва́ння озна́к (англ. feature engineering) — це процес застосування знань предметної галузі для створення ознак, які забезпечують роботу алгоритмів машинного навчання. Конструювання ознак є фундаментальним для застосування машинного навчання, і є як складним, так і витратним. Потребу в ручному конструюванні ознак можливо усувати автоматизованим навчанням ознак.

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

Підходити до ознак складно, витратно за часом, вимагає експертних знань. «Прикладне машинне навчання» є в основному конструюванням ознак.
Оригінальний текст (англ.)
Coming up with features is difficult, time-consuming, requires expert knowledge. "Applied machine learning" is basically feature engineering.
— Ендрю ИнMachine Learning and AI via Brain simulations[1]

Ознаки[ред. | ред. код]

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

Призначенням ознаки, на відміну від того, щоби бути просто атрибутом, є набагато легше розуміння контексту задачі. Ознака є характеристикою, яка може допомогти при розв'язуванні задачі.[2]

Важливість[ред. | ред. код]

Ознаки є важливими для передбачувальних моделей, і впливають на результати.[3]

Ви можете сказати, що чим кращими є ознаки, тим кращим буде результат. Це не зовсім вірно, оскільки отримувані результати також залежать від моделі та даних, а не лише від обраних ознак. Проте обрання правильних ознак все одно є дуже важливим. Кращі ознаки можуть продукувати простіші та гнучкіші моделі, і вони часто дають кращі результати.[2]

Алгоритми, що ми застосовували, є цілком стандартними для кеґлерів… Ми витратили більшість своїх зусиль на розробку ознак… Ми також були дуже обережними у скасуванні ознак, що могли піддати нас ризику перенавчання нашої моделі.
Оригінальний текст (англ.)
The algorithms we used are very standard for Kagglers. […] We spent most of our efforts in feature engineering. [...] We were also very careful to discard features likely to expose us to the risk of over-fitting our model.
— Xavier Conort, Q&A with Xavier Conort[4]
… деякі проекти машинного навчання досягають успіху, а деякі зазнають невдачі. В чому різниця? Просто найважливішим чинником є використані ознаки.
Оригінальний текст (англ.)
…some machine learning projects succeed and some fail. What makes the difference? Easily the most important factor is the features used.
— Pedro Domingos, A Few Useful Things to Know about Machine Learning[5]

Процес[ред. | ред. код]

Процес конструювання ознак:[6]

  • Наштурмовування або тестування ознак[7];
  • Ухвалення рішення про те, які ознаки створювати;
  • Створення ознак;
  • Перевірка, як ці ознаки працюють з вашою моделлю;
  • Покращення ознак у разі потреби;
  • Повернення до мозкового штурму/створення ще ознак, поки роботу не буде зроблено.

Доречність[ред. | ред. код]

Ознака вона може бути сильно доречною (тобто, ця ознака має інформацію, що не існує в жодній іншій ознаці), доречною, слабко доречною (деякою інформацією, що включають інші ознаки), або недоречною.[8] Навіть якщо деякі з ознак і є недоречними, мати забагато краще, ніж упустити важливі. Для запобігання перенавчанню можливо застосовувати обирання ознак.[9]

Вибух ознак[ред. | ред. код]

Поєднанням ознак або шаблонами ознак, обидва з яких ведуть до швидкого зростання загальної кількості ознак, може бути спричинено вибух ознак (англ. feature explosion).

  • Шаблони ознак — реалізація шаблонів ознак замість кодування нових ознак
  • Поєднання ознак — поєднання, що не може бути представлено лінійною системою

Вибух ознак можливо зупиняти такими методиками як регуляризація, ядровий метод, обирання ознак.[10]

Автоматизування[ред. | ред. код]

Автоматизування конструювання ознак є передовою темою досліджень. 2015 року дослідники з МТІ представили алгоритм глибинного синтезу ознак (англ. Deep Feature Synthesis algorithm) та показали його дієвість в інтерактивних змаганнях з науки про дані, де він побив 615 з 906 людських команд.[11][12] Глибинний синтез ознак є доступним як відкрита бібліотека, звана Featuretools.[13] За цією працею з'явилися інші дослідження, включно з OneBM IBM[14] та ExploreKit Берклі.[15] Ці дослідники в IBM заявили, що автоматизування конструювання ознак «допомагає науковцям з даних знижувати час на дослідження даних, даючи їм можливість пробувати методом спроб і помилок багато ідей за короткий час. З іншого боку, воно дає можливість неекспертам, що не знайомі з наукою про дані, швидко виділяти цінність з їхніх даних із невеликими зусиллями, часом та витратами». Автоматичне конструювання ознак дозволяє робити теорема вбудовування Бургена.[16]

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Machine Learning and AI via Brain simulations. Stanford University. Архів оригіналу за 15 вересня 2020. Процитовано 1 серпня 2019. (англ.)
  2. а б Discover Feature Engineering, How to Engineer Features and How to Get Good at It - Machine Learning Mastery. Machine Learning Mastery. Архів оригіналу за 4 березня 2016. Процитовано 11 листопада 2015. (англ.)
  3. Feature Engineering: How to transform variables and create new ones?. Analytics Vidhya. 12 березня 2015. Архів оригіналу за 5 березня 2016. Процитовано 12 листопада 2015. (англ.)
  4. Q&A with Xavier Conort. kaggle.com. 10 квітня 2013. Архів оригіналу за 27 листопада 2015. Процитовано 12 листопада 2015. (англ.)
  5. Domingos, Pedro (1 жовтня 2012). A few useful things to know about machine learning (PDF). Communications of the ACM (англ.). 55 (10): 78—87. doi:10.1145/2347736.2347755. Архів оригіналу (PDF) за 23 січня 2016. Процитовано 24 січня 2016. (англ.)
  6. Big Data: Week 3 Video 3 - Feature Engineering. youtube.com. Архів оригіналу за 16 березня 2016. Процитовано 24 січня 2016. (англ.)
  7. Jalal, Ahmed Adeeb (1 січня 2018). Big data and intelligent software systems. International Journal of Knowledge-based and Intelligent Engineering Systems. 22 (3): 177—193. doi:10.3233/KES-180383. Архів оригіналу за 13 серпня 2019. Процитовано 18 серпня 2019 — через content.iospress.com. (англ.)
  8. Feature Engineering (PDF). 22 квітня 2010. Архів оригіналу (PDF) за 6 вересня 2015. Процитовано 12 листопада 2015. (англ.)
  9. Feature engineering and selection (PDF). Alexandre Bouchard-Côté. 1 жовтня 2009. Архів оригіналу (PDF) за 14 березня 2016. Процитовано 12 листопада 2015. (англ.)
  10. Feature engineering in Machine Learning (PDF). Zdenek Zabokrtsky. Архів оригіналу (PDF) за 4 березня 2016. Процитовано 12 листопада 2015. (англ.)
  11. Automating big-data analysis. Архів оригіналу за 14 вересня 2019. Процитовано 18 серпня 2019. (англ.)
  12. Deep Feature Synthesis: Towards Automating Data Science Endeavors (PDF). Архів оригіналу (PDF) за 18 серпня 2019. Процитовано 18 серпня 2019. (англ.)
  13. Featuretools | An open source framework for automated feature engineering Quick Start. www.featuretools.com. Архів оригіналу за 18 серпня 2019. Процитовано 22 серпня 2019. (англ.)
  14. One button machine for automating feature engineering in relational databases (PDF). Архів оригіналу (PDF) за 4 жовтня 2019. Процитовано 18 серпня 2019. (англ.)
  15. ExploreKit: Automatic Feature Generation and Selection (PDF). Архів оригіналу (PDF) за 4 жовтня 2019. Процитовано 18 серпня 2019. (англ.)
  16. Orges Leka. Automatic Feature Engineering for Data Science. orges-leka.de. Архів оригіналу за 30 серпня 2019. Процитовано 29 вересня 2019. (англ.)