Що це все про машинне навчання в реальній практиці?


11

Я є новачком у машинному навчанні (також деяка статистика), на деякий час вивчав знання (контрольовані / непідтримувані алгоритми навчання, відповідні методи оптимізації, регуляризація, деякі філософії (наприклад, компроміс з відхиленням відхилення?)). Я знаю, що без будь-якої реальної практики я не отримав би глибокого розуміння цих матеріалів машинного навчання.

Тож я розпочну з якоїсь проблеми класифікації з реальними даними, скажімо, від руки написана цифра (MNIST). На мій подив, без будь-яких особливостей навчання / інженерії точність досягає 0,97, використовуючи класифікатор випадкових лісових масивів із значеннями необроблених пікселів. Я також спробував інші алгоритми навчання, такі як SVM, LR з налаштованими параметрами.

Тоді я заблукав, чи буде це занадто просто чи я щось тут пропускаю? Просто підберіть алгоритм навчання з інструментарію та налаштуйте деякі параметри?

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

  1. Найважливішою частиною машинного навчання на практиці є функціональна інженерія , тобто, з огляду на дані, з’ясувати краще представлення особливостей.

  2. Який алгоритм навчання використовувати також важливо, також налаштування параметрів, але остаточний вибір стосується експерименту.

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


1
Я не думаю, що я міг би відповісти на ваше питання в повному обсязі, але я хотів би запевнити вас, що існує багато проблем, коли алгоритми / інструменти є незадовільними на додаток до поганої якості функцій (на моєму досвіді соціальні науки є насиченими з обома ситуаціями). Я не думаю, що це є вашою єдиною турботою, але вам здається незручним простотою ваших проектів поки що.

1
@Matthew, так, я просто загубився, не знаючи, з чого почати, коли зіткнувся з однією реальною проблемою, чи слід аналізувати дані, щоб дізнатися про природу, щоб я міг отримати корисні функції або просто підібрати алгоритм навчання та запустити?
авокадо

Я б не
сідав

Відповіді:


12

Машинне навчання (МЛ) на практиці залежить від того, якою є мета занять ML. У деяких ситуаціях обґрунтована попередня обробка та застосування набору методів, що випускаються поза коробкою, можуть бути досить хорошими. Однак навіть у цих ситуаціях важливо зрозуміти, як працюють методи, щоб можна було усунути неполадки, коли все пішло не так. Однак ML на практиці може бути набагато більше, ніж це, і MNIST є хорошим прикладом того, чому.

Отримати «хороші» показники на наборі даних MNIST оманливо легко. Наприклад, згідно з веб-сайтом Янна Ле Куна щодо продуктивності MNIST , K найближчих сусідів (K-NN) з евклідовою метрикою відстані (L2) також має рівень помилок 3%, такий самий, як і ваш випадковий випадковий ліс. L2 K-NN приблизно такий же простий, як і алгоритм ML. З іншого боку, Yann, Yoshua, Leon & Patrick, найкращий, вперше вистрілив у цей набір даних, LeNet-4, має рівень помилок 0,7%, 0,7% - менше четвертої частини 3%, тож якщо ви помістите цю систему в якщо читати рукописні цифри, наївний алгоритм вимагає в чотири рази більше зусиль людини, щоб виправити його помилки.

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

Отже, які уроки:

  1. Легко досягти базового рівня наївних показників, використовуючи метод "поза коробкою" та гарну попередню обробку. Ви завжди повинні робити це, щоб ви знали, де знаходиться базовий рівень, і чи є цей рівень продуктивності достатньо хорошим для ваших вимог. Будьте обережні, однак, часто випущені методи ML є "крихкими", тобто напрочуд чутливі до попередньої обробки. Після того, як ви навчилися всім методам виходу з коробки, майже завжди є хорошою ідеєю спробувати їх розфасувати.
  2. Важкі проблеми вимагають або знань, пов’язаних з доменом, або набагато більше даних або обох для вирішення. Інженерія функцій означає використання доменних знань для допомоги алгоритму ML. Однак якщо у вас є достатня кількість даних, алгоритм (або підхід), який може скористатися цими даними для вивчення складних функцій, і експерт, що застосовує цей алгоритм, іноді ви можете відмовитися від цих знань (наприклад, виклик Kaggle Merck ). Крім того, іноді доменні експерти помиляються в тому, які хороші особливості; тому більше даних та експертизи щодо МЛ завжди корисні.
  3. Враховуйте швидкість помилок, а не точність. Методи ML з точністю 99% складають половину помилок, які робить одна з 98% точністю; іноді це важливо.

2
+1, велике спасибі Коли я читаю вашу відповідь, якщо я не маю спеціальних знань для доменної інженерії, то я повинен зосередитися на тому, щоб винайти хороші методи для вивчення функціональних можливостей за допомогою даних даних та спробувати різні алгоритми навчання.
авокадо

@loganecolss Або ви також можете прочитати, що зробили інші люди за аналогічними даними, або поговорити з експертом по домену.
qdjm

7

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

Моя спеціалізація полягає в розробці функцій, і я можу вам сказати, що часто стандартні алгоритми взагалі не працюють добре. (Я не маю жодних знань у цій галузі, але часто працюю з людьми, які мають це.)

Тут є реальна проблема, де я працював протягом 6 місяців: Дано матрицю X зі 100 пробами та 10000 змінними, що представляють генетичну цінність пацієнтів та вихід y розміром 100 x 1, що являє собою щільність кісток.

Чи можете ви сказати мені, які гени впливають на щільність кісток?

Зараз я працюю над іншою проблемою. У мене є набір даних про виробництво з 2000 зразками та 12000 змінних. Мій начальник хотів би отримати з цього набору даних не більше 30 змінних без нагляду.
Я спробував деякі алгоритми, але не можу вибрати менше 600 змінних, тому що вони дуже корелюються між ними. (Я все ще працюю над цим ...)

Ще одна важлива думка, яку слід враховувати, - швидкість роботи різних алгоритмів. У багатьох ситуаціях не можна чекати 20 хвилин, чекаючи результату. Наприклад, вам потрібно знати, коли використовувати NIPALS та коли використовувати SVD для обчислення PCA.

Сподіваюсь, це може дати вам уявлення про проблеми, які є загальними в мл.


Дякую за пораду, здається, я не підходив такі проблеми , як це, цікаво. n<<p
авокадо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.