Умная рыбалка (часть 1)
Каждый раз, отправляясь на рыбалку, мы в предвкушении большого улова. И конечно же нескольких часов на свежем воздухе в окружении чудесной природы. Красота! И всё же одно обстоятельство может испортить всё впечатление. Его можно выразить двумя короткими словами: не клюёт! Да, природа мила, птички поют, солнышко светит, но настроение уже не то…
Что с этим можно сделать? Опытные рыбаки знают, где и когда рыбачить. У них есть излюбленные водоёмы, прикормленные места, секретные рецепты наживки и другие хитрости, да и просто чутьё, выросшее из многолетнего опыта. Они достаточно уверенно могут сказать, насколько активно будет себя вести рыба.
А способен ли на такое компьютер? Скорее всего – да. Это отличная задача для машинного обучения. На этом примере мы разберём простейший и наглядный алгоритм, который будет предсказывать вероятность успешной рыбалки.
Давайте представим продвинутого рыбака (а лучше группу друзей-рыбаков), которые решили поставить эксперимент. Каждый день, невзирая на погоду и на свою интуицию, они приходят на одно и то же озеро и закидывают удочку. Все обстоятельства и результаты рыбалки они аккуратно записывают. А затем, через несколько месяцев, соберут все данные и, вооружившись Искусственным Интеллектом, создадут себе помощника, который будет подсказывать, стоит ли сегодня идти на рыбалку. Так они надеются повысить свои шансы и избежать тех унылых посиделок без единой поклёвки.
Сначала товарищам нужно договориться, какие данные записывать. Из опыта они знают, что влияет на желание рыбы заморить червячка:
- в первую очередь, атмосферное давление – скорее даже не его абсолютное значение, а перепады;
- температура воды и воздуха;
- облачность;
- осадки;
- сила и направление ветра;
- рябь на воде;
- время суток.
Опытные рыбаки добавят ещё ряд важных факторов, таких как уровень воды, цветение, фазы луны и прочие приметы. И это всё только внешние обстоятельства, на которые никак не повлиять. Подробнее о них можно почитать здесь.
Можно учитывать также и те параметры, которые определяет сам рыбак:
- наживка;
- расцветка крючка и лески;
- глубина лова;
- расстояние от берега.
Через некоторое время, если экспериментаторы будут аккуратно и дисциплинированно вести учёт рыбной ловли, получится приличный набор данных (некоторые возможно излишние, но это нормально – программа разберётся). Представим их в виде таблицы, где в последней колонке самое интересное: был клёв или нет. Вполне возможно вместо однозначного да/нет использовать шкалу интенсивности клёва, например: сильный, средний, слабый, никакой. А вот использовать в качестве показателя количество пойманной рыбы я бы не стал: здесь на первое место выходит уже мастерство рыбака. Сейчас у нас другая цель.
Итак, данные собраны, теперь самое время подключится специалисту по машинному обучение. Сформулируем задачу. 15 августа – в тёплый и безветренный день, при температуре +24℃ и влажности 50% (а также измерив ещё кучу показателей) – я собираюсь порыбачить. Мне известны все значения в жёлтой строке таблицы, кроме самого главного: а будет ли клёв?
Многие задачи машинного обучения выглядят похожим образом. Есть много исторических данных, для них известно некоторое значение. А программа должна предсказать это значение для новых данных. В следующий раз попробуем разобраться в простейших способах, как это сделать.
А если вам не терпится увидеть похожую систему в действии, приглашаю на отличный сайт, где можно найти свой регион и получить желанный прогноз. А потом проверить, сидя с удочкой на любимом берегу. Удачной рыбалки!