Не забудьте посадить дерево, перед тем как отправиться на рыбалку. Точнее не посадить, а построить. Напоминаю, мы уже научились применять простой метод из машинного обучения для определения вероятности хорошего клёва – дерево принятия решений.
В прошлый раз мы строили дерево вручную, в произвольном порядке выбирая признаки, влияющие на поклёвку. Сначала обратили внимание на погоду, потом на температуру, осадки, и так далее. Вообще это очень похоже на то, как мы в жизни принимаем решения, учитывая несколько факторов, например, при покупке бытовой техники или выборе детского сада ребёнку.
А вспомните, как мы выбираем место для отпуска: хочется, чтобы и возле моря, и недалеко от исторического центра, и со всеми удобствами, да ещё и не дорого. Понятно, что чем-то придётся жертвовать.
Но вернёмся к рыбалке. Напомню, клёв мы предсказываем на основании исторических данных: ищем среди прошлых записей похожие дни и смотрим на поведение рыбы в эти дни. При этом можем столкнуться с такой ситуацией. Допустим, сегодня новолуние, дует восточный ветер, влажность 40%, атмосферное давление растёт, уровень воды поднялся. Стоит выбираться на рыбалку? Смотрим на дерево и видим:
Оказывается, был точно такой же день 13 июля, и рыбалка тогда не порадовала. Откладываем удочки в сторону? Не стоит торопиться с выводами. Одного единственного случая недостаточно, чтобы принять решение. Вот если бы таких дней было 3-5 и рыба вела себя примерно одинаково, то это уже достаточное основание. Понятно, что для этого данных должно быть намного больше: придётся собирать их долгие годы.
А можно поступить проще: не строить такое глубокое дерево. Как и в казино, надо уметь вовремя остановиться. Например, на следующий картинке в интервале температур от 18℃ до 23℃ хорошая статистика: 10 Да / 2 Нет. Это даёт нам высокую уверенность 83% (10 разделить на 12). Если продолжить ветвление с этого места, то конечно можно вычислить при каких условиях произошли те 2 неудачные рыбалки, но опять же это будет слишком редкая ситуация, чтобы на неё полагаться.
Итак, мы знаем, как вовремя закончить построение дерева. Теперь обратный вопрос: а как начать? Ведь признаки можно выбирать в разном порядке – и получатся разные деревья. Какому из них верить? Ответ простой: построить несколько деревьев. Чем больше, тем лучше. А потом сравнить их предсказания.
Тут уже без компьютера не обойтись: слишком много вычислений. Вот как это выглядит. Допустим, у вас есть таблица с 20 признаками: погода, температура, ветер, давление и так далее. Программа выбирает случайным образом 5 признаков и строит по ним дерево. Понятно, что оно будет не самым показательным, потому что не учитывает другие важные факторы. Но программа нарисует 100 таких деревьев – так называемый случайный лес. Каждое дерево для заданных условий скажет вероятность положительного ответа: 50%, 80%, 33% и так далее. Остаётся только посчитать средний процент.
Практика показывает, что такой подход даёт гораздо более надёжные результаты. Его можно сравнить с соц. опросом. Найдите 100 рыбаков и задайте им один вопрос: будет сегодня клёв или нет. У каждого рыбака свой опыт, чутьё. Каждый обращает внимание на какие-то разные особенности. У каждого в голове появится своё невидимое дерево. В итоге вы получите 100 ответов и посчитаете среднее.
Напоследок ещё раз прорекламирую сайт, дающий прогноз клёва рыбы. Не знаю, используют ли они деревья, леса или другие методы машинного обучения, но по словам создателей, они в своих моделях учитывают сотни факторов. А значит, успешность рыбалки, которую я здесь выбрал чисто для иллюстрации, вполне можно предсказывать.
А аналоги рыбалки можно придумать и на Голосе. Будут ли боты клевать на мой пост? Заметит ли его @psk? Сколько рыбок, китов и дельфинов приплывут, если хорошенько прикормить местечко бустерами?
У нас в далеком 1999 году на предмете "нейросети" были курсовые - мой друг как раз делал предсказание клёва по статистике наблюдений (у его отца была такая вроде). Там в чём фишка - программы нейросетей сами определяют важность того или иного фактора. Некоторые оказываются совсем незначимыми.
(я "предсказывал" результаты московского Спартака в чемпионате России)
Совершенно верно, есть способы определить вклад каждого признака в предсказательную модель. И могут быть неожиданные открытия.
Интересно, получилось что-нибудь со «Спартаком»? Если это были его золотые 90-е, то задача кажется несложной. Хотя смотря что предсказывать: можно разницу в счёте или победную серию.
Точно не помню, тем более в момент сдачи чемпионат был закончен (зима). А потом уже не притрагивался :)