[БЕЗ_ЗВУКА] Начнем разбираться с задачей восстановления распределений. Итак, в прошлом видео мы обнаружили проблему нехватки данных. Ну, например, если у нас есть выборка из 100 тысяч точек, а признаков 10 тысяч, то нам откровенно не хватит этих точек для восстановления многомерного распределения внутри каждого класса, поэтому нужно что-то придумать. Первое решение достаточно простое: можно просто свести задачу восстановления плотности внутри класса от оценки функции многих переменных к оценке функции одной переменной. Например, это можно сделать с помощью наивного байесовского классификатора. Наивный байесовский классификатор — это байесовский классификатор, то есть классификатор, принимающий решение по принципу: выбрать класс, для которого максимальна вероятность P(x) при условии класса умножить на априорную вероятность класса, с «наивной» гипотезой. «Наивная» гипотеза заключается в том, что мы считаем, что плотность класса расписывается в произведение плотностей по каждому признаку. Понятно, что эта гипотеза выполняется только если признаки независимы, а это, как правило, неправда, но с какой-то степенью точности так предположить можно. Тогда для использования наивного байесовского классификатора нам остается лишь восстановить априорные вероятности классов и распределение каждого признака внутри класса. Ну первое сделать совершенно несложно. Априорную вероятность можно взять либо из каких-то внешних сведений, либо оценить как долю объектов этого класса в обучающей выборке, ну если, конечно, в ней эта доля примерно такая же, как в жизни. Если признаки бинарные, то оценить плотность признака при условии класса тоже достаточно просто. Ну даже здесь будет не плотность, а именно вероятность принять значение 1 и вероятность принять значение 0. И первую вероятность мы можем просто оценить как долю объектов в данном классе, у которых значение этого признака 1, а вторую — как долю объектов в данном классе, у которых значение этого признака 0. Рассмотрим пример: классификацию текстов. Классификация текстов можно по обучающей выборке составить словарь из слов и в качестве признаков использовать вхождение слов из словаря в текст: 1 — если входит, 0 — если не входит. Распределение в каждом классе можно восстановить так же, как было предложено сейчас для бинарных признаков, но просто доля таких случае в классе. Теперь можно применить наивный байесовский классификатор и решить задачу классификации текстов. Обратите внимание, получится не совсем то же самое, что было в примере с фильтром спама. Попробуйте разобраться, почему. Если значение признака никогда не встречалось в классе, то вероятность такого значения признака будет оценена нулем. Так как в наивном байесовском классификаторе мы берем произведение вероятностей, это приведет к занулению всего этого произведения. Один из возможных выходов из этой ситуации — это сглаживание вероятности. Например, его можно сделать следующим образом: можно в числителе и в знаменателе дроби, которой мы оцениваем вероятность, добавить некоторые константы таким образом, чтобы в сумме вероятности по-прежнему давали единицу. Ну а сами эти константы можно выбрать так, чтобы в отсутствии данных получалась какая-то определенная вероятность, например 1/2 или 1 поделить на количество классов, либо подобрать эти константы таким образом, чтобы качество алгоритма получалось наибольшим. Итак, проблема нехватки данных для восстановления многомерного распределения может решаться использованием наивного байесовского классификатора. В этом случае задача будет сведена к восстановлению N одномерных распределений. В случае бинарных признаков распределение можно восстанавливать простыми частотными оценками, и классификатор получается очень похожим на наш первый пример со спам-фильтром. В следующем видео мы обсудим случаи других признаков и другие возможные решения проблемы нехватки данных.