Все чаще и чаще мы сталкиваемся с необходимостью выявлять внутренние закономерности больших объёмов данных. Например, для распознавания спама необходимо уметь находить закономерности в содержании электронных писем, а для прогнозирования стоимости акций — закономерности в финансовых данных. К сожалению, выявить их «вручную» часто невозможно, и тогда на помощь приходят методы машинного обучения. Они позволяют строить алгоритмы, которые помогают находить новые, ещё не описанные закономерности. Мы поговорим о том, что такое машинное обучение, где его стоит применять и какие сложности могут при этом возникнуть. Принципы работы нескольких популярных методов машинного обучения будут рассмотрены на реальных примерах.
Лекция предназначена для старшеклассников — студентов Малого ШАДа, но и взрослые с ее помощью смогут составить представление об основах машинного обучения.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/8ff/485/579/8ff4855796fe85edcbcffccd6cddfa7b.jpg)
Основная идея машинного обучения заключается в том, что имея обучающуюся программу и примеры данных с закономерностями, мы можем построить некоторую модель закономерности и находить закономерности в новых данных.
Для примера решим простую задачу. У нас на плоскости разбросаны точки двух цветов: красные и синие. Координаты и цвет каждой из них нам известны. Нужно определить цвет новой точки. Каждая точка — изучаемый объект, а координаты и цвет — его параметры. Например, объекты — люди, координаты — рост и длина волос человека, а цвет — пол человека.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/c19/b1d/753/c19b1d7530fbbbfb87b753cb9e00b6de.jpg)
Попробуем решить ее методом ближайшего соседа. Пусть новый объект принадлежит к тому же классу, что и его ближайший сосед. Сделаем прогноз для каждой точки на нашей плоскости: если ближайшая точка синяя, значит, и новый объект, появившийся в этой точке – синий. И наоборот.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/03f/305/79d/03f30579da612241296c2e4ca6f0cfd4.jpg)
Таким образом, у нас получаются две области: в одной велика вероятность появления красных точек, а в другой – синих.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/a06/cc1/3ce/a06cc13ce54a06b12d6a723dbb86b49c.jpg)
Далее попробуем немного изменить алгоритм, и ориентироваться на несколько (k) ближайших соседей. Пускай k будет равно пяти.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/33d/a07/aee/33da07aee02b631017cd80b403683fc0.jpg)
В этом случае мы сможем отсечь потенциально шумовые объекты и получить более ровную границу разделения классов.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/17d/c7c/0cb/17dc7c0cb185ffd2b87d1f2878324ccb.jpg)
Вот так будет выглядеть разделение на большем количестве объектов, полученных путем нормального распределения.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/aaa/22e/9d8/aaa22e9d81c7f3704037b8509d1f7f91.jpg)
Снова представим, что у нас есть плоскость, на которой определенным образом расположены красные и синие точки.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/73a/b8c/abd/73ab8cabdac394715c2dd295a7a7846b.jpg)
Провести границу между ними можно разными способами. Результат будет зависеть от того, насколько алгоритм подстроился под данные.
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/d26/dd8/629/d26dd86292b6ec1e808aa9cbfe744a66.jpg)
Как правило, склонность модели к переобучению связана с количеством ее параметров. Так, например, модель с малым количеством параметров вряд ли сможет переобучиться
В общем случае в задачах машинного обучения рассматриваются точки в многомерном пространстве, а не на плоскости. Каждая координата — признак. Поэтому обучающую выборку можно представлять в следующей виде:
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/9a3/68b/29a/9a368b29a364473295950222a2507c2e.jpg)
Но какой алгоритм выбрать, и как оценить качество его работы? Для этого размеченную обучающую выборку разбивают на две части. На первой части происходит непосредственно обучение, а вторая часть используется в качестве контрольной. На ней мы будем проверять, сколько ошибок выдал алгоритм.
Примерный цикл решения задачи по машинному обучению выглядит так:
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/c38/11f/4a1/c3811f4a1a24fb0a332098395412c1c8.jpg)
Сначала мы проводим предварительную обработку данных, затем выбираем метод классификации и параметры, проводим обучение и оцениваем качество. Если качество нас утраивает, задача считается выполненной. В противном случае возвращаемся к подбору метода и параметров.
Более подробная информация, примеры реальных задач для машинного обучения, а также рассказ о гиперплоскостях, нейронных сетях. deep learning, методе Виолы-Джонса, решающих деревьях и бустинге доступны в видеозаписи лекции.
Лекция предназначена для старшеклассников — студентов Малого ШАДа, но и взрослые с ее помощью смогут составить представление об основах машинного обучения.
![image](https://habrastorage.org/getpro/habr/post_images/8ff/485/579/8ff4855796fe85edcbcffccd6cddfa7b.jpg)
Основная идея машинного обучения заключается в том, что имея обучающуюся программу и примеры данных с закономерностями, мы можем построить некоторую модель закономерности и находить закономерности в новых данных.
Метод ближайшего соседа
Для примера решим простую задачу. У нас на плоскости разбросаны точки двух цветов: красные и синие. Координаты и цвет каждой из них нам известны. Нужно определить цвет новой точки. Каждая точка — изучаемый объект, а координаты и цвет — его параметры. Например, объекты — люди, координаты — рост и длина волос человека, а цвет — пол человека.
![image](https://habrastorage.org/getpro/habr/post_images/c19/b1d/753/c19b1d7530fbbbfb87b753cb9e00b6de.jpg)
Попробуем решить ее методом ближайшего соседа. Пусть новый объект принадлежит к тому же классу, что и его ближайший сосед. Сделаем прогноз для каждой точки на нашей плоскости: если ближайшая точка синяя, значит, и новый объект, появившийся в этой точке – синий. И наоборот.
![image](https://habrastorage.org/getpro/habr/post_images/03f/305/79d/03f30579da612241296c2e4ca6f0cfd4.jpg)
Таким образом, у нас получаются две области: в одной велика вероятность появления красных точек, а в другой – синих.
![image](https://habrastorage.org/getpro/habr/post_images/a06/cc1/3ce/a06cc13ce54a06b12d6a723dbb86b49c.jpg)
Далее попробуем немного изменить алгоритм, и ориентироваться на несколько (k) ближайших соседей. Пускай k будет равно пяти.
![image](https://habrastorage.org/getpro/habr/post_images/33d/a07/aee/33da07aee02b631017cd80b403683fc0.jpg)
В этом случае мы сможем отсечь потенциально шумовые объекты и получить более ровную границу разделения классов.
![image](https://habrastorage.org/getpro/habr/post_images/17d/c7c/0cb/17dc7c0cb185ffd2b87d1f2878324ccb.jpg)
Вот так будет выглядеть разделение на большем количестве объектов, полученных путем нормального распределения.
![image](https://habrastorage.org/getpro/habr/post_images/aaa/22e/9d8/aaa22e9d81c7f3704037b8509d1f7f91.jpg)
Качество и параметры алгоритмов
Снова представим, что у нас есть плоскость, на которой определенным образом расположены красные и синие точки.
![image](https://habrastorage.org/getpro/habr/post_images/73a/b8c/abd/73ab8cabdac394715c2dd295a7a7846b.jpg)
Провести границу между ними можно разными способами. Результат будет зависеть от того, насколько алгоритм подстроился под данные.
![image](https://habrastorage.org/getpro/habr/post_images/d26/dd8/629/d26dd86292b6ec1e808aa9cbfe744a66.jpg)
Как правило, склонность модели к переобучению связана с количеством ее параметров. Так, например, модель с малым количеством параметров вряд ли сможет переобучиться
В общем случае в задачах машинного обучения рассматриваются точки в многомерном пространстве, а не на плоскости. Каждая координата — признак. Поэтому обучающую выборку можно представлять в следующей виде:
![image](https://habrastorage.org/getpro/habr/post_images/9a3/68b/29a/9a368b29a364473295950222a2507c2e.jpg)
Но какой алгоритм выбрать, и как оценить качество его работы? Для этого размеченную обучающую выборку разбивают на две части. На первой части происходит непосредственно обучение, а вторая часть используется в качестве контрольной. На ней мы будем проверять, сколько ошибок выдал алгоритм.
Цикл решения задачи
Примерный цикл решения задачи по машинному обучению выглядит так:
![image](https://habrastorage.org/getpro/habr/post_images/c38/11f/4a1/c3811f4a1a24fb0a332098395412c1c8.jpg)
Сначала мы проводим предварительную обработку данных, затем выбираем метод классификации и параметры, проводим обучение и оцениваем качество. Если качество нас утраивает, задача считается выполненной. В противном случае возвращаемся к подбору метода и параметров.
Более подробная информация, примеры реальных задач для машинного обучения, а также рассказ о гиперплоскостях, нейронных сетях. deep learning, методе Виолы-Джонса, решающих деревьях и бустинге доступны в видеозаписи лекции.