
#classic_ML
Наивный байесовский классификатор
Другой "простой" метод, который приходится рассказывать студентам в некотором смысле как дань истории - наивный байесовский классификатор. Начиналось все довольно просто: на заре развития электронной почты люди уже страдали от спама. Возникла простая идея: давайте сначала отсортируем письма на спам и не спам, чтобы получить обучающую выборку, а потом посчитаем вероятность встретить каждое слово из выборки в спаме и не в спаме (ну просто долю одних и других случаев). Дальше, когда нам приходит новое письмо, рассчитываем вероятность того, что оно спамное как произведение вероятностей увидеть каждое слово письма в спаме. И аналогично оцениваем вероятность того, что письмо НЕ спамное. Какая вероятность больше, таков и ответ.
В общем случае этот подход обобщается так: для каждого признака объекта вы по выборке оцениваете его распределение в классе 0 и в классе 1, а дальше просто смотрите на признаки объекта, считаете вероятность такой объект увидеть в каждом классе (как произведение по всем признакам объекта) и выбираете наиболее вероятный класс. Если классы априори в разной степени часто встречаются в природе (например, классы - болен ковидом и не болен) - то имеет смысл умножить это все на априорные вероятности классов.
Чем же нам сейчас полезен на практике наивный байес? На практике - уже ничем. А вот в постижении теории очень даже полезная штука, только там не только про наивного байеса надо разбираться, а вообще про байесовскую теорию классификации (могу как-нибудь написать пост). Ну и еще чтобы на экзамене мучать бедных студентов вопросами почему наивный байес наивный и причем там теорема Байеса
Метод K средних
Метод К средних это простой и изящный метод кластеризации. Кластеризация это довольно неприятная задача, которую не то чтобы кто-то умеет стабильно решать хорошо, подробнее про кластеризацию я писал в учебнике ШАД.
Если кратко, суть метода в следующем. Сначала выбираем K случайных центров для кластеров, потом повторяем до сходимости два шага:
-распределить выборку по ближайшим центрам (центр какого кластера ближе, в тот и попадает объект)
-пересчитать центры кластеров (просто как среднее арифметическое векторов признаков попавших в него объектов)
Неожиданным образом K-means очень крутой и адекватный метод кластеризации. Серьезно, если предположения алгоритма более-менее выполнены (кластеры выпуклые и примерно равного размера), получается очень даже хорошо и можно использовать метод и по сей день. Чудес как в любом методе кластеризации ждать не стоит, но как бейзлайн must, а не побить этот бейзлайн даже не стыдно, особенно если перед K-Means был некоторый feature engineering.
А что вы думаете об этих методах? Есть ли у них до сих пор какие-то применения, о которых можете упомянуть? Надо ли продолжать про них рассказывать людям?
Наивный байесовский классификатор
Другой "простой" метод, который приходится рассказывать студентам в некотором смысле как дань истории - наивный байесовский классификатор. Начиналось все довольно просто: на заре развития электронной почты люди уже страдали от спама. Возникла простая идея: давайте сначала отсортируем письма на спам и не спам, чтобы получить обучающую выборку, а потом посчитаем вероятность встретить каждое слово из выборки в спаме и не в спаме (ну просто долю одних и других случаев). Дальше, когда нам приходит новое письмо, рассчитываем вероятность того, что оно спамное как произведение вероятностей увидеть каждое слово письма в спаме. И аналогично оцениваем вероятность того, что письмо НЕ спамное. Какая вероятность больше, таков и ответ.
В общем случае этот подход обобщается так: для каждого признака объекта вы по выборке оцениваете его распределение в классе 0 и в классе 1, а дальше просто смотрите на признаки объекта, считаете вероятность такой объект увидеть в каждом классе (как произведение по всем признакам объекта) и выбираете наиболее вероятный класс. Если классы априори в разной степени часто встречаются в природе (например, классы - болен ковидом и не болен) - то имеет смысл умножить это все на априорные вероятности классов.
Чем же нам сейчас полезен на практике наивный байес? На практике - уже ничем. А вот в постижении теории очень даже полезная штука, только там не только про наивного байеса надо разбираться, а вообще про байесовскую теорию классификации (могу как-нибудь написать пост). Ну и еще чтобы на экзамене мучать бедных студентов вопросами почему наивный байес наивный и причем там теорема Байеса
Метод K средних
Метод К средних это простой и изящный метод кластеризации. Кластеризация это довольно неприятная задача, которую не то чтобы кто-то умеет стабильно решать хорошо, подробнее про кластеризацию я писал в учебнике ШАД.
Если кратко, суть метода в следующем. Сначала выбираем K случайных центров для кластеров, потом повторяем до сходимости два шага:
-распределить выборку по ближайшим центрам (центр какого кластера ближе, в тот и попадает объект)
-пересчитать центры кластеров (просто как среднее арифметическое векторов признаков попавших в него объектов)
Неожиданным образом K-means очень крутой и адекватный метод кластеризации. Серьезно, если предположения алгоритма более-менее выполнены (кластеры выпуклые и примерно равного размера), получается очень даже хорошо и можно использовать метод и по сей день. Чудес как в любом методе кластеризации ждать не стоит, но как бейзлайн must, а не побить этот бейзлайн даже не стыдно, особенно если перед K-Means был некоторый feature engineering.
А что вы думаете об этих методах? Есть ли у них до сих пор какие-то применения, о которых можете упомянуть? Надо ли продолжать про них рассказывать людям?