Проектування ознак

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

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

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

Підходити до ознак складно, витратно за часом, вимагає експертних знань. «Прикладне машинне навчання» є в основному проектуванням ознак.
Оригінальний текст (англ.)

Coming up with features is difficult, time-consuming, requires expert knowledge. "Applied machine learning" is basically feature engineering.

При роботі над задачею машинного навчання проектування ознак є ручною розробкою того, чим повинні бути вхідні x-и.
Оригінальний текст (англ.)

When working on a machine learning problem, feature engineering is manually designing what the input x's should be.

—Shayne Miel, What is the intuitive explanation of feature engineering in machine learning?[2]

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

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

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

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

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

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

Алгоритми, що ми застосовували, є цілком стандартними для кеґлерів[en]… Ми витратили більшість своїх зусиль на розробку ознак… Ми також були дуже обережними у скасуванні ознак, що могли піддати нас ризику перенавчання нашої моделі.
Оригінальний текст (англ.)

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[5]
… деякі проекти машинного навчання досягають успіху, а деякі зазнають невдачі. В чому різниця? Просто найважливішим фактором є використані ознаки.
Оригінальний текст (англ.)

…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[6]

Процес проектування ознак[7][ред.ред. код]

  1. Наштурмовування ознак;
  2. Ухвалення рішення про те, які ознаки створювати;
  3. Створення ознак;
  4. Перевірка, як ці ознаки працюють з вашою моделлю;
  5. Покращення ознак у разі потреби;
  6. Повернення до мозкового штурму/створення ще ознак, поки роботу не буде зроблено.

Доречність ознак[8][ред.ред. код]

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

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

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

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

Існує кілька рішень, як допомогти зупинити вибух ознак, такі як: регуляризація, ядровий метод, вибирання ознак.[10]

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

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

  1. Machine Learning and AI via Brain simulations. Stanford University. Процитовано 2015-03-23.  (англ.)
  2. What is the intuitive explanation of feature engineering in machine learning? - Quora. www.quora.com. Процитовано 2015-11-11.  (англ.)
  3. а б Discover Feature Engineering, How to Engineer Features and How to Get Good at It - Machine Learning Mastery. Machine Learning Mastery. Процитовано 2015-11-11.  (англ.)
  4. Feature Engineering: How to transform variables and create new ones?. Analytics Vidhya. 2015-03-12. Процитовано 2015-11-12.  (англ.)
  5. kaggle.com,(2015).Q&A with Xavier Conort,[Accessed at:]http://blog.kaggle.com/2013/04/10/qa-with-xavier-conort/%7Caccessdate=November 2015 (англ.)
  6. Domingos, Pedro. A Few Useful Things to Know about Machine Learning. Процитовано 12 November 2015.  (англ.)
  7. Big Data: Week 3 Video 3 - Feature Engineering. youtube.com.  (англ.)
  8. Feature Engineering. 2010-04-22. Процитовано 12 November 2015.  (англ.)
  9. Feature engineering and selection. Alexandre Bouchard-Côté. Процитовано 12 November 2015.  (англ.)
  10. Feature engineering in Machine Learning. Zdenek Zabokrtsky. Процитовано 12 November 2015.  (англ.)