Машинное обучение

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

Как уже указывалось, подобный метод распределения оборудования не обеспечивает минимума денежных затрат, связанных с СПО. Для ликвидации указанного дефекта рассматриваемой подсистемы необходимо обеспечить оператора соответствующими методическими материалами. В частности, с этой целью могут быть использованы экономико-математическая модель и машинная программа выбора оптимального для данных условий технологического оборудования для СПО либо упрощенная методика рационального распределения буровых установок в УБР.  
Отраслевая автоматизированная система управления (ОАСУ) — предназначена для управления подведомственными организациями как автономно, так и в составе общегосударственной автоматизированной системы управления. Задачи ОАСУ — оптимизация текущих и перспективных планов развития и размещения предприятий химической промышленности, темпов развития отдельных ее подотраслей, состава промышленных комплексов, балансов производства и распределения химической продукции, проведение технико-экономического анализа и др. Решение задач осуществляется с помощью формализации традиционных процедур обработки данных и представления в виде машинных программ. В ОАСУ большая часть информации хранится в памяти ЭВМ (банки данных) и участвует в процессе планово-экономических расчетов по мере необходимости. Ниже показаны подсистемы ОАСУ  
Реализация на ЭВМ выявленных и формализованных комплексов задач по автоматизации управления подготовкой производства может быть осуществлена с применением машинных программ, написанных на КОБОЛЕ, ФОРТРАНЕ и других имеющихся в математическом обеспечении АСУП языках.  
Программное обеспечение (ПО) — совокупность машинных программ, представленных в форме, необходимой для их использования при автоматическом проектировании.  
Математическое обеспечение. Эффективность функционирования всего КТС АСПР в значительной мере зависит от полноты, комплексности и качества системы программ и программных средств, необходимых для автоматизированного решения планово-экономических задач. Такая система создается в ходе проектирования и внедрения математического обеспечения АСПР, которое охватывает машинные программы, реализующие алгоритмы сбора, подготовки, обработки и отображения информации в ходе составления и проверки выполнения государственных планов, а также средства, обеспечивающие сам процесс программирования и реализации на ЭВМ планово-экономических задач.  
Механизация и автоматизация труда архитекторов, инженеров и обслуживающего персонала проектных институтов является одним из важнейших резервов сокращения продолжительности строительного проектирования. Главной задачей совершенствования проектирования является переход на машинную технологию проектирования, соответствующую современному уровню развития науки и техники и позволяющую обрабатывать огромное количество информации автоматизированным способом. Эта задача может быть решена только с помощью вычислительной техники и других технических средств. Применение математических методов и ЭВМ в проектировании позволяет не только выбрать оптимальный вариант проектного решения, но и автоматически выполнять чертежи, соответствующие этому варианту, т. е. перейти к машинному проектированию объектов строительства. Использование автоматизированной системы проектирования значительно сокращает сроки выполнения проектных работ, улучшает качество проектно-сметной документации, исключает ошибки в проектах и сметах, снижает стоимость и трудоемкость проектных работ. При использовании ЭВМ в проектировании некоторую сложность представляет разработка машинных программ, особенно для выбора объемно-планировочных и архитектурных  

Прикладные машинные программы должны разрабатываться на основе следующих принципов модульность, независимость от. структуры данных, способность к развитию на основе концепции базы данных.  
Для автоматизированного расчета абсолютной экономической эффективности, получаемой в результате практической реализации сбалансированных планов в сферах промышленности и строительства, должно быть предусмотрено применение алгоритмов и машинных программ, обеспечивающих получение и выдачу на печать специальных выходных форм, в которых указанный эффект определяется прежде всего следующими факторами степенью сбалансированности выпуска БКУ с поставками комплектующей продукции сокращением объемов незавершенного строительства ростом уровня загрузки мощностей предприятий и монтажных организаций экономией транспортных затрат по ведению монтажных работ повышением ритмичности работы монтажных организаций.  
Подсистема математического обеспечения представляет собой комплекс математических методов, алгоритмов и машинных программ решения задач управления с помощью ЭВМ.  
Предложенный алгоритм может быть использован как для расчета эксплуатационных, так и для всех промежуточных колонн. С его помощью может быть составлена машинная программа для ЭВМ, однако он с успехом может быть использован и при ручном счете.  
Итак, в данном параграфе мы рассмотрели вопросы, связанные с реализацией машинной программы нашего имитационного исследования. Теперь, когда у нас есть такая программа, перед проведением эксперимента необходимо устроить генеральную проверку, в результате которой надо ответить на вопрос, пригодна ли наша машинная модель для проведения имитационного эксперимента. Этот этап будет описан в следующем параграфе.  
Способы проверки основаны на том, что на предыдущем этапе была построена машинная программа для расчетов по модели. Эту программу надо использовать для проведения контрольных просчетов ) такие просчеты дают возможность проверить некоторые необходимые условия пригодности модели.  
Методы исследования модели уже были кратко проанализированы в 4 гл. 1. Будем считать, что метод выбран, и перейдем к вопросу о разработке машинных программ, предназначенных для реализации выбранного метода исследования модели.  
Помимо многочисленных технических вопросов, которые мы здесь рассматривать не будем ), приходится обычно решать одну принципиальную проблему — выбирать язык программирования. Для написания машинной программы у исследователя имеются две основные возможности выбрать универсальный язык программирования типа алгол, фортран, лисп и так далее либо остановиться на некотором специализированном языке. Так, для изучения математических моделей с помощью метода имитационных экспериментов разработаны специализированные языки динамо, симула и т. д. Кроме того, многие вычислительные системы, предназначенные для анализа моделей с помощью некоторых частных, но широко использующихся методов (например, методов линейного программирования), имеют свои собственные входные языки, являющиеся, по существу, специализированными языками программирования.  

Так, в иллюстративной модели народного хозяйства необходимо оценить разумность получаемых результатов при некоторых способах распределения национального дохода между потреблением, накоплением и вложением в научно-технические исследования. Далее надо оценить влияние изменений параметров производственной функции и функции б (А, V), а также других па раметров на интересующие нас показатели — национальный доход, потребление на душу населения и количество основных фондов. Если окажется, что изменения параметров в пределах точности их задания слабо влияют на результаты, то можно переходить к следующему шагу проверки, который состоит в сравнении результатов аналитического исследования математической модели с результатами расчета по машинной программе в упрощенных случаях. На этом шаге удается выявить ошибки, допущенные при переходе от математической модели к ее реализации в виде машинной программы.  
Для выполнения этих вычислений имеются соответствующие машинные программы. На практике западные компании обычно не применяют множественный регрессивный анализ. Это происходит не потому, что они его не понимают, а потому, что сложность результатов не помогает руководителю, непосредственно планирующему и контролирующему расходы своего подразделения.  
Для того чтобы поставить ЭВМ на службу аналитику, требуется вначале выполнить постановку задачи комплексного анализа, затем разработать алгоритм решения и математическое описание для ПЭВМ сформировать новую информационную систему и создать банк данных для анализа подготовить машинные программы решения аналитических задач на одном из машинных языков. Работа эта весьма трудоемкая, требующая высокой квалификации как аналитика, так и программиста.  
Расходы на программирование определяются объемом работы, которую нужно выполнить для подготовки машинных программ при эксплуатации проектируемой ЭВМ (написание, отладка). Их величина во многом зависит от объема общего математического обеспечения проектируемой ЭВМ и, в частности, наличия в его составе трансляторов с основных алгоритмических языков.  
Средняя стоимость разработки одной команды, зависит от многих особенностей ЭВМ и определяется с учетом производительности программиста, работающего на данной модели ЭВМ. Отечественный опыт показывает, что стоимость одного оператора машинной программы (включая подготовку носителей информации, отладку программы и ее документирование) может быть принята равной 5-Н7 руб.  
В ходе решения задач на ЭВМ в соответствии с машинной программой формируются результатные сводки, которые печатаются машиной на бумаге или отображаются на экране.  
Так, в сводных бухгалтерских отчетах (баланс, отчет о прибылях и убытках и др.) в заголовочной части бланка проставляются коды постоянных признаков отчитывающейся организации идентификационный номер налогоплательщика (ИНН), код организации по ОКПО, отрасль (вид деятельности) по ОКОНХ, организационно-правовая форма по КОПФ, орган управления государственным имуществом по ОКПО единица измерения по СОЕЙ. Для проверки правильности проставленных кодов вводится строка Контрольная сумма , которая представляет собой искусственный итог по всем кодам. Машинная программа осуществляет контроль по контрольным суммам и позволяет обнаружить неверно проставленные коды. На основании кодов происходит свод и группировка поступивших бухгалтерских отчетов в вышестоящей организации, органах налоговой инспекции и др.  
Технология применения кодов в современных условиях использования ПЭВМ определяется прежде всего эксплуатационными возможностями машин, а также методами программирования, обеспечивающими создание в машине различных взаимосвязанных массивов информации — банка данных. Новая информационная технология, использующая персональные компьютеры, строится, как правило, на безбумажной технологии, где происходит автоматическое, а не ручное формирование первичного документа. Как известно, документ состоит из различных реквизитов-признаков и оснований. Технологический процесс предусматривает при этом автоматическое занесение реквизитов-признаков в документ. С этой целью в машинной программе имеется специальный блок меню справочники (словари), которые содержат определенный перечень номенклатур, используемый в данной задаче. Некоторые номенклатуры, являющиеся постоянными для данного вида деятельности (бухгалтерского учета, банковских операций), содержатся в программе, другие составляются на месте. К первому виду номенклатур относятся отраслевые классификаторы. Состав справочника имеет вид  
К выходным сводкам предъявляются следующие требования. Состав содержащихся в них показателей должен быть достаточным для целей управления. Особое внимание уделяется достоверности отражаемых данных, их логическому расположению. Сводки должны выдаваться к указанному сроку, в регламентном режиме и при ответе на запрос. Машина должна изготовлять готовые для использования таблицы печатать титульный лист, заголовочную часть, и оформляющую часть. В соответствии с машинной программой производится автоматическое заполнение всех таблиц в заданной последовательности. Все это позволяет получить на ПЭВМ готовую выходную форму, имеющую юридическую силу и пригодную для использования на любом уровне управления.  
Обработка экономических задач характеризуется большими объемами информации и сложным документооборотом. Совершенствование документооборота происходит на основе специально разработанных машинных программ, обеспечивающих электронный документооборот.  
Возникают межфункциональные комплексы задач управления. Новые версии программных продуктов по бухгалтерскому учету объединяют информацию комплексов различных участков учета. Так, например, в типовых проектах учета труда и заработной платы одновременно предусмотрена выписка платежных документов по платежам в фонды (платежные поручения по оплате подоходного налога, отчислениям в пенсионный фонд, медицинское страхование, начисление в фонд занятости). Выполнение такой машинной программы объединяет два комплекса учетных задач — учет труда и заработной платы и финансово-расчетные операции. Аналогичные примеры можно привести и в комплексах задач по учету материальных ценностей, учету готовой продукции и др.  
Третья фаза обработки состоит в составлении сводного синтетического учета отчетно-сальдовых ведомостей по счетам главной книги, баланса и форм финансовой отчетности, что обеспечивается головным модулем машинной программы Проводка — Главная книга — Баланс .  

Процесс обработки данных в информационной технологии преследует определенную цель — решение с помощью ЭВМ вычислительных задач, отображающих функциональные задачи той системы, в которой ведется управление. Для реализации этой цели должны существовать модели обработки данных, соответствующие алгоритмам управления и воплощенные в машинных программах.  
Процедура преобразования данных на физическом уровне осуществляется с помощью аппаратных средств вычислительной системы (процессоры, оперативные и внешние запоминающие устройства), управление которыми производится машинными программами, реализующими структурированную совокупность алгоритмов решения вычислительных задач.  
Математический аппарат системы управления представляет собой комплекс алгоритмов и машинных программ, реализующих задачи управления на базе формализованной целевой функции и функционирующих в заданном режиме работы системы.  
Применение ЭВМ вследствие относительной дороговизны машинного времени и длительности подготовительных работ (разработка алгоритмов, систематизация информации, составление машинных программ, ввод информации и т. д.) эффективно лишь при осуществлении основных функций управления и прежде всего в плановой и учетной работе.  
Фрейм по своей организации во многом похож на семантическую сеть. Фрейм является сетью узлов и отношений, организованных иерархически, где верхние узлы представляют общие понятия, а нижние — более частные случаи этих понятий. Во фреймовой системе понятие в каждом узле определяется набором атрибутов — слотов. Каждый слот может быть связан с процедурами (например, машинными программами), которые выполняются, когда информация в слотах (значения атрибутов) меняется.  
Программное обеспечение САПР ОП — совокупность машинных программ, а также пакетов прикладных программ, предназначенных для получения конкретных проектных решений. Программное обеспечение по своему назначению разбивается на два вида системное и прикладное (проблемное).  
В команде при помощи кода (шифра) указываются элементарная операция (сложение, вычитание, запись и т. п.), которую должна выполнить машина адреса ячеек с числами, над которыми нужно выполнить эту элементарную операцию, и адрес той ячейки, в которую должен быть помещен результат этой операции. Последовательность команд образует программу работы машины. Программа вводится в машину вместе с исходными данными. После этого все вычисления и запись результатов производятся машиной автоматически. Табуляграммы электронно-вычислительных машин так же как и счетно-перфораиионных, могут служить учетными регистрами, отчетными сводками, аналитическими ведомостями и т. п.  
На технологических установках внедряются управляющие вычислительные машины (УВМ). В настоящее время подобные машины имеются на ряде установок каталитического рифор-минга, пиролиза, полимеризации. Создание и внедрение УВМ — новое перспективное направление в работах по автоматизации производства, требующее математического описания технологических процессов, разработки машинных программ. Применение средств автоматизации обеспечивает повышение эффективности производства. Широкое распространение опыта передовых коллективов, творческая инициатива новаторов производства спо-  
На технологических установках внедряются УВМ (управляющие вычислительные машины). В настоящее время подобные машины имеются на ряде установок АВТ, каталитического рифор-минга, пиролиза, полимеризации и др. Создание и внедрение УВМ — новое направление в работах по автоматизации производства. Это переход к более высокому уровню автоматизации, требующий, однако, значительной работы по математическому описанию технологических процессов, разработке алгоритмов управления, машинных программ, созданию специализированных быстродействующих управляющих машин.  
Внедряемые в настоящее время автоматизированные системы управления и широкое использование электронно-вычислительной техники позволяют формализовать задачи нормирования, передать ЭВМ наиболее трудоемкие расчеты и, в частности, расчет обсадных колонн. Для этого необходимо иметь алго-ритм расчета, на основе которого может быть составлена машинная программа, являющаяся частью. математического обеспечения подсистемы материальных нормативов.  
Для написания машинной программы имитационного эксперимента у исследователя имеются две основные возможности выбрать универсальный язык программирования типа алгол, фортран, лисп, кобол и т. д., либо остановиться на специализированном языке имитационного моделирования типа динамо, GPSS, симула и т. д. Под имитационным языком обычно имеется в виду язык программирования, обладающий некоторыми специфическими чертами, полезными при проведении имитационного исследования некоторого достаточно широкого класса моделей. Основными преимуществами специализированных имитационных языков являются 1) удобство программирования на этих языках 2) их концептуальная направленность. Смысл первого фактора и его значение очевидны и будут продемонстрированы в примерах, приведенных ниже. Второй фактор дает возможность заранее определить форму математической модели исследуемого явления, и тем самым упростить процесс ее построения, вплоть до возможности сразу сформулировать математическую модель в виде программы на соответствующем имитационном языке. Концептуальная направленность специализированных языков позволила единообразно описать значительное число имитационных задач, что дало возможность установить связь между различными разработками в области имитационных экспериментов. Еще одним достоинством специализированных имитационных языков является их наглядность, которая позволяет объяснить программу лицам, плохо знакомым с программированием на ЭВМ.  
Взаимная увязка комплексов учетных задач заложена в самой методологии бухгалтерского учета, системе ведения счетов и выполнения проводок, гда каждая хозяйственная операция отражается дважды в кредите одного счета и дебете другого. Информационные связи комплекса учетных задач позволяют выделить три фазы обработки, заложенные в основу машинных программ. На первой фазе производятся первичный учет, составление первичных бухгалтерских документов, их обработка и составление ведомостей аналитического учета по каждому участку учета (например, по учету заработной платы, составляется расчетно-платежная документация, своды начисленной и удержанной заработной платы и др.). Все операции преобразования выполняются на основании пакета прикладных программ конкретного участка учета или встроенным модулем в единую программу бухгалтерского учета (например, БЭМБИ+).  

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

Ближе к делу

— Получается, зарабатывать на этом деле я не сразу смогу?
Да, до решения задач за призы в $100 000 нам ещё далеко, но ведь все начинали с чего-то простого.
Итак, сегодня нам потребуются:

  • Python 3 (с установленной pip3)
  • Jupyter
  • SKlearn, NumPy и matplotlib

Если чего-то нет: ставим всё за 5 минутДля начала, скачиваем и устанавливаем Python 3 (при установке не забудьте поставить pip и добавить в PATH, если скачали установщик Windows). Затем, для удобства был взят и использован пакет Anaconda, включающий в себя более 150 библиотек для Python ( на скачивание). Он удобен для использования Jupyter, библиотек numpy, scikit-learn, matplotlib, а так же упрощает установку всех. После установки, запускаем Jupyter Notebook через панель управления Anaconda, или через командную строку(терминал): «jupyter notebook».
Дальнейшее использование требует от читателя некоторых знаний о синтаксисе Python и его возможностях (в конце статьи будут представлены ссылки на полезные ресурсы, среди них и «основы Python 3»).
Как обычно, импортируем необходимые для работы библиотеки:
import numpy as np from pandas import read_csv as read
— Ладно, с Numpy всё понятно. Но зачем нам Pandas, да и еще read_csv?
Иногда бывает удобно «визуализировать» имеющиеся данные, тогда с ними становится проще работать. Тем более, большинство датасетов с популярного сервиса Kaggle собрано пользователями в формате CSV.
А вот так выглядит визуализированный pandas’ом датасет
Здесь колонка Activity показывает, идёт реакция или нет (1 при положительном, 0 при отрицательном ответе). А остальные колонки — множества признаков и соответствующие им значения (различные процентные содержания веществ в реакции, их агрегатные состояния и пр.)
— Помнится, ты использовал слово «датасет». Так что же это такое?
Датасет — выборка данных, обычно в формате «множество из множеств признаков» → «некоторые значения» (которыми могут быть, например, цены на жильё, или порядковый номер множества некоторых классов), где X — множество признаков, а y — те самые некоторые значения. Определять, например, правильные индексы для множества классов — задача классификации, а искать целевые значения (такие как цена, или расстояния до объектов) — задача ранжирования. Подробнее о видах машинного обучения можно прочесть в статьях и публикациях, ссылки на которые, как и обещал, будут в конце статьи.

Простая реализация задачи на классификацию

Переходим к основной части статьи — решаем задачу классификации. Всё по порядку:

  • создаём обучающую выборку
  • пробуем обучить машину на случайно подобранных параметрах и классах им соответствующих
  • подсчитываем качество реализованной машины

Посмотрим на реализацию (каждая выдержка из кода — отдельный Cell в notebook):
X = data.values y = data.values from sklearn.cross_validation import train_test_split as train X_train, X_test, y_train, y_test = train(X, y, test_size=0.6) from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier(n_estimators=100, n_jobs=-1) clf.fit(X_train, y_train) clf.score(X_test, y_test)
Создаем массивы, где X — признаки (с 1 по 13 колонки), y — классы (0ая колонка). Затем, чтобы собрать тестовую и обучающую выборку из исходных данных, воспользуемся удобной функцией кросс-валидации train_test_split, реализованной в scikit-learn. С готовыми выборками работаем дальше — импортируем RandomForestClassifier из ensemble в sklearn. Этот класс содержит в себе все необходимые для обучения и тестирования машины методы и функции. Присваиваем переменной clf (classifier) класс RandomForestClassifier, затем вызовом функции fit() обучаем машину из класса clf, где X_train — признаки категорий y_train. Теперь можно использовать встроенную в класс метрику score, чтобы определить точность предсказанных для X_test категорий по истинным значениям этих категорий y_test. При использовании данной метрики выводится значение точности от 0 до 1, где 1 <=> 100% Готово!
Про RandomForestClassifier и метод кросс-валидации train_test_splitПри инициализации clf для RandomForestClassifier мы выставляли значения n_estimators=100, n_jobs = -1, где первый отвечает за количество деревьев в лесу, а второй — за количество участвующих в работе ядер процессора (при -1 задействованы все ядра, по умолчанию стоит 1). Так как мы работаем с данным датасетом и нам негде взять тестирующую выборку, используем train_test_split для «умного» разбиения данных на обучающую выборку и тестирующую. Подробнее про них можно узнать, выделив интересующий Вас класс или метод и нажав Shift+Tab в среде Jupyter.
— Неплохая точность. Всегда ли так получается?
Для решения задач на классификацию важным фактором является выбор наилучших параметров для обучающей выборки категорий. Чем больше, тем лучше. Но не всегда (об этом также можно прочитать подробнее в интернете, однако, скорее всего, я напишу об этом ещё одну статью, рассчитанную на начинающих).
— Слишком легко. Больше мяса!
Для наглядного просмотра результата обучения на данном датасете можно привести такой пример: оставив только два параметра, чтобы задать их в двумерном пространстве, построим график обученной выборки (получится примерно такой график, он зависит от обучения):

Да, с уменьшением количества признаков, падает и точность распознавания. И график получился не особенно-то красивым, но это и не решающее в простом анализе: вполне наглядно видно, как машина выделила обучающую выборку (точки) и сравнила её с предсказанными (заливка) значениями.
Реализация здесь from sklearn.preprocessing import scale X_train_draw = scale(X_train) X_test_draw = scale(X_test) clf = RandomForestClassifier(n_estimators=100, n_jobs=-1) clf.fit(X_train_draw, y_train) x_min, x_max = X_train_draw.min() — 1, X_train_draw.max() + 1 y_min, y_max = X_train_draw.min() — 1, X_train_draw.max() + 1 h = 0.02 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) pred = clf.predict(np.c_) pred = pred.reshape(xx.shape) import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap cmap_light = ListedColormap() cmap_bold = ListedColormap() plt.figure() plt.pcolormesh(xx, yy, pred, cmap=cmap_light) plt.scatter(X_train_draw, X_train_draw, c=y_train, cmap=cmap_bold) plt.xlim(xx.min(), xx.max()) plt.ylim(yy.min(), yy.max()) plt.title(«Score: %.0f percents» % (clf.score(X_test_draw, y_test) * 100)) plt.show()
Предлагаю читателю самостоятельно узнать почему и как он работает.

Материалы, вдохновившие автора на создание данной статьи

Исторические очерки:

  • Статья про то, зачем нужно машинное обучение сегодня, и что к этому привело
  • Как ни странно, довольно таки замысловатая статья с Википедии про машинное обучение в целом

Подробнее про машинное обучение:

  • Про машинное обучение и науку о данных
  • Еще одна интересная лекция от того же ведущего

Изучаем python, или до работы с данными:

  • Очень полезный курс от талантливых преподавателей из ИТМО и СПбАУ
  • Отличный русскоязычный ресурс для изучающих Python, но плохо ориентирующихся на англоязычных ресурсах

Однако для наилучшего освоения библиотеки sklearn пригодится знание английского: в этом источнике собраны все необходимые знания (так как это API reference).
Более углубленное изучение использования машинного обучения с Python стало возможным, и более простым благодаря преподавателям с Яндекса — этот курс обладает всеми необходимыми средствами объяснения, как же работает вся система, рассказывается подробнее о видах машинного обучения итд.
Файл сегодняшнего датасета был взят отсюда и несколько модифицирован.
Где брать данные, или «хранилище датасетов» — собрано огромное количество данных от самых разных источников. Очень полезно тренироваться на реальных данных.

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

Обучение с учителем и без учителя

Большую часть задач машинного обучения можно разделить на обучение с учителем (supervised learning) и обучение без учителя (unsupervised learning). Если вы представили себе программиста с плёткой в одной руке и куском сахара в другой, вы немного ошиблись. Под «учителем» здесь понимается сама идея вмешательства человека в обработку данных. При обучении с учителем у нас есть данные, на основании которых нужно что-то предсказать, и некоторые гипотезы. При обучении без учителя у нас есть только данные, свойства которых мы и хотим найти. На примерах разницу вы увидите немного яснее.

Обучение с учителем

У нас есть данные о 10 000 квартирах в Москве, причём известна площадь каждой квартиры, количество комнат, этаж, на котором она расположена, район, наличие парковки, расстояние до ближайшей станции метро и так далее. Кроме того, известна стоимость каждой квартиры. Нашей задачей является построение модели, которая на основе данных признаков будет предсказывать стоимость квартиры. Это классический пример обучения с учителем, где у нас есть данные (10 000 квартир и различные параметры для каждой квартиры, называемые признаками) и отклики (стоимость квартиры). Такая задача называется задачей регрессии. О том, что это такое, мы поговорим чуть позже.

Красные точки — имеющиеся данные (по оси x — значение признака, по оси y — значение ответа), синяя прямая — построенная модель.(источник:Википедия)

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

Задача классификации. На первой картинке объекты разделяются прямой. На второй более сложной кривой. Заметьте, что некоторые объекты классифицируются неправильно. Это нормальная практика в задачах классификации.(источник:sebastianraschka.com)

Обучение без учителя

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

Кластеризация на 3 кластера. Отметим, что обычно разделение на кластеры является не таким явным и нет единого «правильного» разделения.(источник:i-msdn.sec)

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

Классы задач машинного обучения

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

  • Задача регрессии: на основании различных признаков предсказать вещественный ответ. Другими словами, ответом может быть 1, 5, 23.575 или любое другое вещественное число, которое, например, может олицетворять стоимость квартиры. Примеры: предсказание стоимости акции через полгода, предсказание прибыли магазина в следующем месяце, предсказание качества вина на слепом тестировании.
  • Задача классификации: на основании различных признаков предсказать категориальный ответ. Другими словами, ответов в такой задаче конечное количество, как в случае с определением наличия у пациента рака или определения того, является ли письмо спамом. Примеры: распознавание текста по рукописному вводу, определение того, находится на фотографии человек или кот.
  • Задача кластеризации: разбиение данных на похожие категории. Примеры: разбиение клиентов сотового оператора по платёжеспособности, разбиение космических объектов на похожие (галактики, планеты, звезды и так далее).
  • Задача уменьшения размерности: научиться описывать наши данные не N признаками, а меньшим числом (как правило, 2-3 для последующей визуализации). В качестве примера помимо необходимости для визуализации можно привести сжатие данных.
  • Задача выявления аномалий: на основании признаков научиться различать отличать аномалии от «не-аномалий». Кажется, что от задачи классификации эта задача ничем не отличается. Но особенность выявления аномалий состоит в том, что примеров аномалий для тренировки модели у нас либо очень мало, либо нет совсем, поэтому мы не можем решать такую задачу как задачу классификации. Пример: определение мошеннических транзакций по банковской карте.

(источник:amid.fish)

Нейронные сети

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

Нейронная сеть (или искусственная нейронная сеть) — это сеть нейронов, где каждый нейрон является математической моделью реального нейрона. Нейронные сети начали пользоваться большой популярностью в 80-х и ранних 90-х, однако в конце 90-х их популярность сильно упала. Впрочем, в последнее время это одна из передовых технологий, используемых в машинном обучении, применяемая в огромном количестве приложений. Причина возврата популярности проста: увеличились вычислительные способности компьютеров.

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

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

Ограниченность нейронных сетей

Впрочем, в нейронных сетях нет ничего магического и в большинстве случаев опасения касательно сценария «Терминатора» не имеют под собой оснований. Допустим, учёные натренировали нейронную сеть на распознавание рукописных цифр (такое приложение может использовать, скажем, на почте). Как может работать такое приложение и почему здесь не о чем беспокоиться?

Допустим, мы работаем с изображениями 20×20 пикселей, где каждый пиксель представляется оттенком серого (всего 256 возможных значений). В качестве ответа у нас имеется одна из цифр: от 0 до 9. Структура нейронной сети будет следующая: в первом слое будет 400 нейронов, где значение каждого нейрона будет равно интенсивности соответствующего пикселя. В последнем слое будет 10 нейронов, где в каждом нейроне будет вероятность того, что на изначальном изображении нарисована соответствующая цифра. Между ними будет некоторое число слоев (такие слоя называются скрытыми) с одинаковым количеством нейронов, где каждый нейрон соединён с нейроном из предыдущего слоя и ни с какими более.

Рёбрам нейронной сети (на картинке они показаны как стрелочки) будут соответствовать некоторые числа. Причем значение в нейроне будет считаться как следующая сумма: значение нейрона из предыдущего слоя * значение ребра, соединяющего нейроны. Затем от данной суммы берётся определенная функция (например, сигмоидная функция, о которой мы говорили ранее).

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

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

Интересные факты и лайфхаки

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

Например, вторая кампания Барака Обамы была фактически выиграна лучшей на тот момент командой в области анализа данных. Разумеется, речь не идет о том, что они советовали ему соврать о чем-то, работа строилась значительно более умным путем: они выбирали, в каком штате, перед какой аудиторией, в какой день и на какую тему он должен выступать. Причем каждый раз они замеряли, как это сказывается на опросах вида «За кого бы вы проголосовали, если бы выборы были в ближайшее воскресенье?». Другими словами, подобные решения принимали не политтехнологи, а исключительно специалисты по анализу данных. Особенно интересным это становится в свете того, что, по оценкам специалистов, это дало ему преимущество в 8-10%.

(источник:flickr.com)

Кроме того, современный интернет довольно сложно представить без ретаргетинга, или персонализированной рекламы. Вспомните: вы выбираете какой-то продукт в интернете, а после покупки ещё на протяжении двух недель вам показывают его в различного рода рекламе. В одном из своих выступлений директор по маркетингу сервисов компании «Яндекс» Андрей Себрант дал на этот счёт такой совет:

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

Рекомендации по обучению

Если у вас появилось желание изучить технологии машинного обучения, стоит отметить, что для глубокого изучения предмета с пониманием всего фундамента следует разбираться как минимум в математическом анализе, линейной алгебре и методах оптимизации (с упором на последние два). Кроме того, желательно знать основы программирования и какой-нибудь язык программирования. В машинном обучении, как правило, используется R, Python или Matlab.

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

Мотивировать его изучение можно следующим образом: посмотрите учебный план. Если вы просмотрите все лекции и решите все задания, то вы гарантированно сможете применять все эти вещи на практике. В частности, вы освоите алгоритмы линейной регрессии (задача регрессии), логистической регрессии, метода опорных векторов, нейронных сетей (задача классификации), K-means (кластеризация), PCA (понижение размерности), выявления аномалий и узнаете как построить рекомендательную систему (рекомендация товаров по вашим оценкам, например, фильмов или песен). На последней неделе курса вам также расскажут, как построить систему, которая будет находить и расшифровывать надписи на картинках или опознавать людей.

Для тех, кто хочет изучать предмет со всеми математическими тонкостями в лучших традициях сильных технических вузов, можно порекомендовать курс от ВШЭ или специализацию от МФТИ. Заметим лишь, что специализация является платной и для доступа к ней придется оформить подписку приблизительно за 3000 рублей в месяц. Впрочем, есть бесплатный период в 7 дней.

Что такое машинное обучение

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

История машинного обучения началась ещё в 1950-е годы, когда информатикам удалось научить компьютер играть в шашки. С тех пор вместе с вычислительной мощностью росла сложность закономерностей и прогнозов, которые компьютер способен распознать и составить, а также проблем, которые он может решить.

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

Quantamagazine.org

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

Почему машинное обучение — это важно

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

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

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

Ibtimes.co.uk

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

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

Как машинное обучение применяют сегодня

Алгоритмы машинного обучения уже способны впечатлить.

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

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

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

Недавно IBM опросилаAutomotive 2025: Industry without borders. руководителей автомобильных компаний. 74% из них ожидают появления на дорогах умных машин уже к 2025 году.

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

Почему вам стоит следить за машинным обучением

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

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

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

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

По даннымThe Future of Jobs. Всемирного экономического форума, в течение следующих пяти лет компьютеры и роботы займут пять миллионов рабочих мест, которые сейчас принадлежат людям.

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

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *