Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

Знакомство с машинным обучением в Python

by
Difficulty:BeginnerLength:MediumLanguages:

Russian (Pусский) translation by Oleg Kiselevich (you can also view the original English article)

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

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

Знакомство с машинным обучением

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

Давайте представим, что нам необходимо написать программу, которая сможет определить, является ли тот или иной фрукт апельсином или лимоном. Может показаться, что написать подобный алгоритм достаточно просто, и он будет выдавать требуемый результат, но стоит заметить, что эффективность подобной программы снижается при работе с большим объемом данных. Вот в таких ситуациях и требуется машинное обучение.

Существуют различные этапы в машинном обучении:

  1. сбор данных
  2. сортировка данных
  3. анализ данных
  4. вырабатывание алгоритма
  5. проверка выработанного алгоритма
  6. использование алгоритма для дальнейших выводов

В машинном обучении для поиска закономерностей используются различные алгоритмы, которые подразделяются на две группы:

  • управляемое обучение
  • самостоятельное обучение

Управляемое обучение

Методика управляемого обучения предполагает вырабатывание компьютером способности распознавать элементы на основе предоставленной подборки образцов. Компьютер изучает образцы и вырабатывает способность распознавать новые данные на основе изученной информации.

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

Управляемое обучение применялось во многих приложениях. Например в Facebook - для поиска изображений, подходящих под определенное описание. Именно за счет этого в Facebook сегодня можно осуществлять поиск изображений по словам, описывающим содержимое фотографии. Благодаря тому, что сайт этой социальной сети имеет базу данных изображений и их заголовков, алгоритм способен с определенной степенью точности находить фотографии и сопоставлять их содержимое с описанием.

Управляемое обучение включает только два этапа:

  • обучение
  • проверка

Некоторые алгоритмы управляемого обучения включают:

  • схемы принятия решений
  • методы опорных векторов (схожие алгоритмы обучения)
  • вероятностный классификатор на основе теоремы Байеса
  • метод k-ближайших соседей
  • линейную регрессию

Пример

Мы напишем простую программу для демонстрации того, как работает управляемое обучение. Для этого мы будем использовать библиотеку Sklearn и язык Python. Sklearn - это библиотека машинного обучения для языка программирования Python, которая предоставляет множество возможностей, таких как многоступенчатый анализ, регрессия и алгоритмы кластеризации.

Кроме того Sklearn хорошо взаимодействует с библиотеками NumPy и SciPy.

Установка Sklearn

Инструкция по установке Sklearn предлагает очень простой способ установки для различных платформ. Для работы библиотеки требуется несколько зависимостей:

  • Python (>= 2.7 or >= 3.3),
  • NumPy (>= 1.82)
  • SciPy (>= 0.13.3)

Если эти зависимости уже установлены, то можно установить Sklearn, просто выполнив команду:

Более простым способом является установка Anaconda. Данный пакет сам установит все зависимости, так что вам не придется устанавливать их по одной.

Чтобы проверить, что Sklearn работает корректно, просто импортируйте эту библиотеку в интерпретаторе языка Python:

Если это не вызвало ошибок, значит все готово к работе.

После того, как мы разобрались с установкой, давайте вернемся к нашей задаче. Допустим, мы хотим научиться различать животных. Для этого мы создадим алгоритм, который сможет определить, является ли то или иное животное лошадью или курицей.

Сперва нам необходимо собрать исходные данные для каждого вида животного. Некоторые исходные данные представлены в таблице ниже.

Рост(см) Вес (кг)
Температура (гр. Цельсия)
Название
18
0.6
40 Курица (0)
18
0.6 41
Курица (0)
94
600 37
Лошадь (1)
94
600 38
Лошадь (1)

Полученные нами исходные данные содержат некоторые основные характеристики и их значения для наших двух животных. Чем больше исходных данных, тем более точными и менее предвзятыми будут результаты.

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

Сначала импортируем модуль tree из Sklearn.

Теперь определим набор характеристик, по которым будем классифицировать животных.

Определим результат, который будет давать каждый набор значений. Пусть курица будет представлена результатом 0, а лошадь - результатом 1. 

Далее определяем классификатор, который будет основываться на схеме принятия решения.

Передаем наши данные классификатору.

Полный код этого алгоритма представлен ниже.

Теперь мы можем предполагать определенный набор данных. Мы пробуем определить животное ростом 18 сантиметров, весом 0.6 кг и температурой 41 градус следующим образом:

А вот так мы пробуем определить животное ростом 94 см, весом 600 кг и температурой 37.5 градусов:

Как видно из примера, вы заставили алгоритм изучить все характеристики и названия двух животных, и знания об этих данных далее используются при идентификации новых животных.

Самостоятельное обучение

При самостоятельном обучении ваша машина получает только набор вводных данных. После чего машина сама будет способна определить взаимосвязи между введенными данными и любыми другими предположительными данными. В отличие от управляемого обучения, при котором машине предоставляются некоторые проверочные данные для обучения, самостоятельное обучение предполагает, что компьютер сам найдет закономерности и взаимосвязи между различными наборами данных.

Самостоятельное обучение может далее подразделяться на:

  • кластеризацию
  • ассоциирование

Кластеризация: Кластеризацией называют органичное группирование данных. Например, можно сгруппировать покупательские предпочтения клиентов и использовать их в рекламе, показывая только те объявления, которые соответствуют их покупкам или предпочтениям.

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

Некоторые из популярных алгоритмов самостоятельного обучения включают:

  • кластеризацию k-средних
  • иерархическую кластеризацию

Самостоятельное обучение будет очень важной технологией в ближайшем будущем. Это обусловлено тем, что в настоящее время существует много необработанной информации, которая еще не была оцифрована. 

Заключение

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

Также хочу предложить вам смело переходить по ссылке на Envato Market - нам есть, что предложить вам для приобретения и изучения, а также не стесняйтесь задавать любые вопросы или оставлять ваши ценные отзывы ниже.

Выбор в пользу алгоритмов управляемого или самостоятельного машинного обучения зависит от различных факторов, таких как структура и объем данных.

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

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.