Что это все о машинном обучении в реальной практике?


11

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

Поэтому я начну с некоторой проблемы классификации с реальными данными, скажем, классификации рукописных цифр (MNIST). К моему удивлению, без какого-либо обучения / разработки функций точность достигает 0,97 с использованием классификатора случайного леса с необработанными значениями пикселей в качестве входных данных. Я также попробовал другие алгоритмы обучения, такие как SVM, LR с настраиваемыми параметрами.

Тогда я заблудился, это будет слишком легко или я что-то здесь упускаю? Просто выбрать алгоритм обучения из инструментария и настроить некоторые параметры?

Если бы это было все о машинном обучении на практике, то я бы потерял интерес к этой области. Я думал и читал некоторые блоги в течение нескольких дней, и я пришел к некоторым выводам:

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

  2. Какой алгоритм обучения использовать, также важен, также настройка параметров, но окончательный выбор больше касается экспериментов.

Я не уверен, что понимаю это правильно, надеясь, что кто-нибудь сможет исправить меня и дать мне несколько советов о машинном обучении на практике.


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

1
@ Матвей, да, я просто заблудился, не зная, с чего начать, когда столкнулся с одной реальной проблемой. Должен ли я проанализировать данные, чтобы выяснить природу, чтобы я мог извлечь полезные функции или просто выбрать алгоритм обучения и запустить?
авокадо

Я не стал бы садиться в самолет, который летает правильно 97 раз из 100.
lcrmorin

Ответы:


12

Машинное обучение (ML) на практике зависит от цели ML. В некоторых ситуациях достаточно хорошей предварительной обработки и применения набора готовых методов ML. Однако даже в этих ситуациях важно понимать, как работают методы, чтобы иметь возможность устранять неполадки, когда что-то идет не так. Тем не менее, ML на практике может быть гораздо больше, и MNIST является хорошим примером того, почему.

Обманчиво легко получить «хорошую» производительность в наборе данных MNIST. Например, согласно веб-сайту Янн Ле Куна о производительности MNIST , K ближайших соседей (K-NN) с евклидовой метрикой расстояния (L2) также имеет частоту ошибок 3%, такую ​​же, как и у вас из случайного набора случайных чисел. лес. L2 K-NN примерно так же прост, как алгоритм ML. С другой стороны, лучший результат Янна, Йошуа, Леона и Патрика, первый выстрел в этом наборе данных, LeNet-4, имеет уровень ошибок 0,7%, 0,7% меньше четверти 3%, так что если вы поместите эту систему в На практике читая рукописные цифры, наивный алгоритм требует в четыре раза больше усилий человека, чтобы исправить свои ошибки.

Сверточная нейронная сеть, которую использовали Янн и его коллеги, соответствует задаче, но я бы не назвал это «разработкой функций», а лишь попыткой понять данные и закодировать это понимание в алгоритме обучения.

Итак, какие уроки:

  1. Легко достичь наивного базового уровня производительности, используя готовый метод и хорошую предварительную обработку. Вы должны всегда делать это, чтобы вы знали, где находится базовый уровень и достаточно ли этот уровень производительности для ваших требований. Остерегайтесь, однако, часто готовые методы ML являются «хрупкими», то есть удивительно чувствительными к предварительной обработке. После того, как вы освоили все готовые методы, почти всегда стоит попробовать их упаковывать.
  2. Трудные проблемы требуют либо специфических для предметной области знаний, либо большого количества данных, либо и того, и другого для решения. Разработка функций означает использование специфичных для предметной области знаний, чтобы помочь алгоритму ML. Однако, если у вас достаточно данных, алгоритма (или подхода), который может использовать эти данные для изучения сложных функций, и эксперта, применяющего этот алгоритм, то иногда вы можете отказаться от этих знаний (например, задача Kaggle Merck ). Кроме того, иногда эксперты в предметной области ошибаются в том, что такое хорошие функции; поэтому всегда полезно больше данных и экспертизы ML.
  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.