Изучите машинное обучение, создав прогноз цен на жилье в 15 строках кода.

Эта запись в блоге изначально была опубликована на сайте HP Developers.

Машинное обучение здесь, чтобы остаться. Приведет ли это к сингулярности, все еще спекулятивно, однако не следует сомневаться в том, изменит ли это то, как инженеры-программисты решают проблемы. Его уже внедряют многие компании для создания более богатого UX, как с Apple ARKit (крутые примеры на madewitharkit.com), и для ответов на сложные вопросы, как с Amazon Echo. Здесь, в HP, мы используем его для решения сложных задач, с которыми мы сталкиваемся, связанных с 3D-печатью, для оптимизации производительности деталей и даже для печати индивидуальной обуви. Машинное обучение — очень мощная техника, которую специалисты по решению проблем должны понять сейчас, а не в следующем году.

Прикладное машинное обучение

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

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

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

  • Кредитный рейтинг
  • Величина займа
  • Тип кредита
  • Срок членства

Логика программирования будет выглядеть так:

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

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

Этот метод называется обучение с учителем. Мы будем использовать его в нашем уроке ниже. (Другие популярные методы — это обучение без учителя и обучение с подкреплением.)

Учебное пособие по прогнозированию цены дома

Самый быстрый способ узнать о машинном обучении — создать обучающую машину, поэтому давайте создадим наш собственный предиктор цен на жилье. Допустим, базовая стоимость каждого дома составляет 240 тысяч долларов, а каждая спальня добавляет к цене 15 тысяч долларов. (Мы используем «k» для сокращения 1000, чтобы числа были небольшими.)

| Bedrooms | Home Price |
|----------|------------|
|     0    |    $240k   |
|     1    |    $255k   |
|     2    |    $270k   |
|     3    |    $285k   |
|     4    |    $300k   |

Для прогнозирования цены на жилье требуется простая линейная модель (y = mx + b). Мы можем использовать эту формулу:

Price of house = ($15k * # of bedrooms) + $240k

Теперь давайте создадим для этого программу машинного обучения. Используя обучающие данные, мы хотим, чтобы наша модель определяла значения m и b, которые, как мы знаем, будут равны 15 и 240 соответственно.

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

docker run -it gcr.io/tensorflow/tensorflow:latest /bin/bash

В коде мы настраиваем некоторые основные заполнители и переменные, которые будут использоваться во время обучения. Затем мы пишем функцию loss, которая вычисляется путем вычитания y (данное значение или истина) из значения prediction. Затем мы передаем это значение loss нашему optimizer. С каждой итерацией наш optimizer будет пытаться получить значения y и prediction как можно ближе, обновляя значения переменных m и b.

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

Value of m is [ 15.00007153] and value of b is [ 239.99978638].

Что вы думаете о значениях m и b? Очень близко к нашим ожидаемым значениям, верно? 💁

Ниже представлена ​​визуализация того, как модель оптимизируется на каждой итерации. В начале значения m и b начинаются с 1.0 (как мы указали в нашем коде), но со временем они становятся правильными значениями. И мы также видим, что наш loss (прогноз — y) со временем уменьшается до 0.

В. Как бы вы учитывали район в своем «Прогнозе цен на жилье»?

В. Как вы относитесь к домашним изображениям?

Надеюсь, приведенный выше учебник помог вам понять основы машинного обучения. Скоро каждый инженер полного стека будет использовать машинное обучение в своих приложениях. Мы недалеко от npm install object-detect.

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

Спасибо, что прочитали! Не стесняйтесь нажимать кнопку «Рекомендовать» ниже, если эта статья показалась вам интересной!

Вы можете связаться со мной в Twitter или LinedIn.