#classic_ML



Наивный байесовский классификатор


Другой "простой" метод, который приходится рассказывать студентам в некотором смысле как дань истории - наивный байесовский классификатор. Начиналось все довольно просто: на заре развития электронной почты люди уже страдали от спама. Возникла простая идея: давайте сначала отсортируем письма на спам и не спам, чтобы получить обучающую выборку, а потом посчитаем вероятность встретить каждое слово из выборки в спаме и не в спаме (ну просто долю одних и других случаев). Дальше, когда нам приходит новое письмо, рассчитываем вероятность того, что оно спамное как произведение вероятностей увидеть каждое слово письма в спаме. И аналогично оцениваем вероятность того, что письмо НЕ спамное. Какая вероятность больше, таков и ответ.



В общем случае этот подход обобщается так: для каждого признака объекта вы по выборке оцениваете его распределение в классе 0 и в классе 1, а дальше просто смотрите на признаки объекта, считаете вероятность такой объект увидеть в каждом классе (как произведение по всем признакам объекта) и выбираете наиболее вероятный класс. Если классы априори в разной степени часто встречаются в природе (например, классы - болен ковидом и не болен) - то имеет смысл умножить это все на априорные вероятности классов.



Чем же нам сейчас полезен на практике наивный байес? На практике - уже ничем. А вот в постижении теории очень даже полезная штука, только там не только про наивного байеса надо разбираться, а вообще про байесовскую теорию классификации (могу как-нибудь написать пост). Ну и еще чтобы на экзамене мучать бедных студентов вопросами почему наивный байес наивный и причем там теорема Байеса





Метод K средних



Метод К средних это простой и изящный метод кластеризации. Кластеризация это довольно неприятная задача, которую не то чтобы кто-то умеет стабильно решать хорошо, подробнее про кластеризацию я писал в учебнике ШАД.



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

-распределить выборку по ближайшим центрам (центр какого кластера ближе, в тот и попадает объект)

-пересчитать центры кластеров (просто как среднее арифметическое векторов признаков попавших в него объектов)



Неожиданным образом K-means очень крутой и адекватный метод кластеризации. Серьезно, если предположения алгоритма более-менее выполнены (кластеры выпуклые и примерно равного размера), получается очень даже хорошо и можно использовать метод и по сей день. Чудес как в любом методе кластеризации ждать не стоит, но как бейзлайн must, а не побить этот бейзлайн даже не стыдно, особенно если перед K-Means был некоторый feature engineering.



А что вы думаете об этих методах? Есть ли у них до сих пор какие-то применения, о которых можете упомянуть? Надо ли продолжать про них рассказывать людям?