GOLOS
RU
EN
UA
mindmaker
2 года назад

Умная рыбалка (часть 2)


Источник: Pixabay + Pixabay

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

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

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

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

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

  Такая структура часто встречается в программировании и называется деревом. С точки зрения биологии, это – скорее перевёрнутое дерево: у него есть корень Погода и три ветви – Солнце, Облачно и Дождь. Дальше наше дерево продолжит ветвиться вниз.

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

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

  Давайте продолжим. Каждую из трёх получившихся таблиц можно снова разделить, уже по другому признаку – например, по температуре. Однако использовать точные значения температуры (+14℃, +15℃, +18℃, +19℃ и так далее) не очень удобно – получится слишком много ответвлений. Лучше здесь применить диапазоны:

  • меньше 18℃
  • от 18℃ до 23℃
  • больше 23℃

  Это позволит нам снова разделять данные на три группы. Почему именно на три? Почему именно такие диапазоны? Сейчас это не принципиально, числа могут быть и другими. Но для наглядности пусть будет так. В результате из ветви Солнце нашего дерева вырастают новые:

  Заметьте, что на каждом шаге мы получаем всё больше полезной информации. Предыдущая картинка говорила, что в солнечные дни 20 раз клёв был и 11 не был (20 Да / 11 Нет) – что, в принципе, не даёт достаточной уверенности рыболову. Но если учесть ещё и температуру, то видим в интервале от 18℃ до 23℃ довольно оптимистичные 10 Да / 2 Нет. А вот при более жарком воздухе цифры уже не такие радужные: 3 Да / 6 Нет – тут стоит хорошо подумать, прежде чем отправляться за добычей.

  Цифры бывают и более очевидные. Если, скажем, взять ветку Дождь и разделить данные в зависимости от силы ветра, может получиться такая ситуация:

  При сильном ветре и дожде клёв ни разу не был зафиксирован: 0 Да / 5 Нет. Понятно, что в такие дни на озере делать нечего.

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

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

  • с какого параметра начать строить дерево? (мы выбрали Погоду)
  • какой параметр выбрать следующим? (мы взяли Температуру)
  • на какие интервалы лучше всего разбить температуру? (мы выбрали три произвольных диапазона)
  • до каких пор продолжать строить дерево?

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

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

  После аккуратного построения дерева на одной из ветвей мы видим всего одну запись: 0 Да / 1 Нет. Означает ли это, что при таких обстоятельствах никогда не стоит выбираться на рыбалку? Что делать в таком случае? Ответим на этот вопрос в следующий раз.

2
52.831 GOLOS
На Golos с January 2018
Комментарии (4)
Сортировать по:
Сначала старые