В этой части мы не будем говорить о рекомендательных системах как таковых. Вместо этого мы отдельно сконцентрируемся на главном инструменте машинного обучения — теореме Байеса — и рассмотрим один простой пример её применения — наивный байесовский классификатор. Disclaimer: знакомому с предметом читателю я вряд ли тут сообщу что-то новое, поговорим в основном о базовой философии машинного обучения.
![image](http://clip2net.com/clip/m7004/1345979346-clip-264kb.png)
Теорему Байеса или помнит, или тривиально может вывести любой, кто проходил хоть самый-самый базовый курс теории вероятностей. Помните, что такое условная вероятность
события x при условии события y? Прямо по определению:
, где
– это совместная вероятность x и y, а p(x) и p(y) – вероятности каждого события по отдельности. Значит, совместную вероятность можно выразить двумя способами:
.
Ну, вот вам и теорема Байеса:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/520/1ed/d6d/5201edd6d33dade84e2e69e578c7db72.png)
Вы, наверное, думаете, что я над вами издеваюсь — как может тривиально-тавтологичное переписывание определения условной вероятности быть основным инструментом чего бы то ни было, тем более такой большой и нетривиальной науки, как машинное обучение? Однако давайте начнём разбираться; сначала просто перепишем теорему Байеса в других обозначениях (да-да, я продолжаю издеваться):
![image](http://habrastorage.org/r/w1560/getpro/habr/post_images/138/e30/ccb/138e30ccb4c824996cfc08804c60b9fa.png)
А теперь давайте соотнесём это с типичной задачей машинного обучения. Здесь D — это данные, то, что мы знаем, а θ — это параметры модели, которые мы хотим обучить. Например, в модели SVD данные — это те рейтинги, которые ставили пользователи продуктам, а параметры модели — факторы, которые мы обучаем для пользователей и продуктов.
Каждая из вероятностей тоже имеет свой смысл.
— это то, что мы хотим найти, распределение вероятностей параметров модели после того, как мы приняли во внимание данные; это называется апостериорной вероятностью (posterior probability). Эту вероятность, как правило, напрямую не найти, и здесь как раз и нужна теорема Байеса.
– это так называемое правдоподобие (likelihood), вероятность данных при условии зафиксированных параметров модели; это как раз найти обычно легко, собственно, конструкция модели обычно в том и состоит, чтобы задать функцию правдоподобия. А
— априорная вероятность (prior probability), она является математической формализацией нашей интуиции о предмете, формализацией того, что мы знали раньше, ещё до всяких экспериментов.
Здесь, наверное, не время и не место в это углубляться, но заслуга преподобного Томаса Байеса была, конечно, не в том, чтобы переписать в две строчки определение условной вероятности (не было тогда таких определений), а как раз в том, чтобы выдвинуть и развить такой взгляд на само понятие вероятности. Сегодня «байесовским подходом» называют рассмотрение вероятностей с позиций скорее «степеней доверия», чем фриквентистской (от слова frequency, а не freak!) «доли успешных экспериментов при стремлении к бесконечности общего числа экспериментов». В частности, это позволяет рассуждать о вероятностях одноразовых событий – ведь на самом деле нет никакого «стремящегося к бесконечности числа экспериментов» для событий вроде «Россия станет чемпионом мира по футболу в 2018 году» или, ближе к нашей теме, «Васе понравится фильм «Трактористы»»; тут скорее как с динозавром: или понравится, или нет. Ну а математика, конечно, при этом везде одна и та же, колмогоровским аксиомам вероятности всё равно, что о них думают.
Для закрепления пройденного — простой пример. Рассмотрим задачу категоризации текстов: например, предположим, что мы пытаемся рассортировать по темам поток новостей на основе уже имеющейся базы данных с темами: спорт, экономика, культура… Мы будем использовать так называемую bag-of-words model: представлять документ (мульти)множеством слов, которые в нём содержатся. В результате каждый тестовый пример x принимает значения из множества категорий V и описывается атрибутами
. Нам нужно найти наиболее вероятное значение данного атрибута, т.е.
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/fba/dde/ff4/fbaddeff45df38458d8387da8177c0ae.png)
По теореме Байеса,
![image](http://mathurl.com/bpl9pvf.png)
Оценить
легко: будем просто оценивать частоту его встречаемости. Но оценить разные
не получится — их слишком много,
— это вероятность в точности такого набора слов в сообщениях на разные темы. Очевидно, такой статистики взять неоткуда.
Чтобы с этим справиться, наивный байесовский классификатор (naive Bayes classifier — его иногда даже называют idiot’s Bayes) предполагает условную независимость атрибутов при условии данного значения целевой функции:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/7c8/de2/d30/7c8de2d301c1aa296a1da6b53d192084.png)
Теперь обучить отдельные
гораздо проще: достаточно подсчитать статистику встречаемости слов в категориях (там есть ещё одна деталь, которая приводит к двум разным вариантам наивного байеса, но мы сейчас углубляться в детали не будем).
Заметим, что наивный байесовский классификатор делает чертовски сильное предположение: в классификации текстов мы предполагаем, что разные слова в тексте на одну и ту же тему появляются независимо друг от друга. Это, конечно, полный бред — но, тем не менее, результаты получаются вполне приличные. На самом деле наивный байесовский классификатор гораздо лучше, чем кажется. Его оценки вероятностей оптимальны, конечно, только в случае настоящей независимости; но сам классификатор оптимален в куда более широком классе задач, и вот почему. Во-первых, атрибуты, конечно, зависимы, но их зависимость одинакова для разных классов и «взаимно сокращается» при оценке вероятностей. Грамматические и семантические зависимости между словами одни и те же и в тексте про футбол, и в тексте о байесовском обучении. Во-вторых, для оценки вероятностей наивный байес очень плох, но как классификатор гораздо лучше (обычно, если даже на самом деле
и
, наивный байес выдаст
и
, но классификация при этом будет чаще правильная).
В следующей серии мы усложним этот пример и рассмотрим модель LDA, которая способна выделять темы в корпусе документов безо всякого набора отмеченных документов, причём так, что один документ сможет содержать несколько тем, а также применим её к задаче рекомендаций.
![image](http://clip2net.com/clip/m7004/1345979346-clip-264kb.png)
Теорему Байеса или помнит, или тривиально может вывести любой, кто проходил хоть самый-самый базовый курс теории вероятностей. Помните, что такое условная вероятность
![image](http://mathurl.com/9h48nft.png)
![image](http://mathurl.com/8cr5jjf.png)
![image](http://mathurl.com/9olnpmd.png)
![image](http://mathurl.com/9vb7uhw.png)
Ну, вот вам и теорема Байеса:
![image](https://habrastorage.org/getpro/habr/post_images/520/1ed/d6d/5201edd6d33dade84e2e69e578c7db72.png)
Вы, наверное, думаете, что я над вами издеваюсь — как может тривиально-тавтологичное переписывание определения условной вероятности быть основным инструментом чего бы то ни было, тем более такой большой и нетривиальной науки, как машинное обучение? Однако давайте начнём разбираться; сначала просто перепишем теорему Байеса в других обозначениях (да-да, я продолжаю издеваться):
![image](http://habrastorage.org/getpro/habr/post_images/138/e30/ccb/138e30ccb4c824996cfc08804c60b9fa.png)
А теперь давайте соотнесём это с типичной задачей машинного обучения. Здесь D — это данные, то, что мы знаем, а θ — это параметры модели, которые мы хотим обучить. Например, в модели SVD данные — это те рейтинги, которые ставили пользователи продуктам, а параметры модели — факторы, которые мы обучаем для пользователей и продуктов.
Каждая из вероятностей тоже имеет свой смысл.
![image](http://habrastorage.org/getpro/habr/post_images/3a1/310/83c/3a131083c486867287a21d6b223d457a.png)
![image](http://mathurl.com/c8edm5v.png)
![image](https://habrastorage.org/getpro/habr/post_images/a7f/f23/018/a7ff23018d643ebd4a20be82edd6750d.png)
Здесь, наверное, не время и не место в это углубляться, но заслуга преподобного Томаса Байеса была, конечно, не в том, чтобы переписать в две строчки определение условной вероятности (не было тогда таких определений), а как раз в том, чтобы выдвинуть и развить такой взгляд на само понятие вероятности. Сегодня «байесовским подходом» называют рассмотрение вероятностей с позиций скорее «степеней доверия», чем фриквентистской (от слова frequency, а не freak!) «доли успешных экспериментов при стремлении к бесконечности общего числа экспериментов». В частности, это позволяет рассуждать о вероятностях одноразовых событий – ведь на самом деле нет никакого «стремящегося к бесконечности числа экспериментов» для событий вроде «Россия станет чемпионом мира по футболу в 2018 году» или, ближе к нашей теме, «Васе понравится фильм «Трактористы»»; тут скорее как с динозавром: или понравится, или нет. Ну а математика, конечно, при этом везде одна и та же, колмогоровским аксиомам вероятности всё равно, что о них думают.
Для закрепления пройденного — простой пример. Рассмотрим задачу категоризации текстов: например, предположим, что мы пытаемся рассортировать по темам поток новостей на основе уже имеющейся базы данных с темами: спорт, экономика, культура… Мы будем использовать так называемую bag-of-words model: представлять документ (мульти)множеством слов, которые в нём содержатся. В результате каждый тестовый пример x принимает значения из множества категорий V и описывается атрибутами
![image](http://mathurl.com/cuazv5v.png)
![image](https://habrastorage.org/getpro/habr/post_images/fba/dde/ff4/fbaddeff45df38458d8387da8177c0ae.png)
По теореме Байеса,
![image](http://mathurl.com/bpl9pvf.png)
Оценить
![image](https://habrastorage.org/getpro/habr/post_images/06d/22b/7c6/06d22b7c6dc806c84226d2be5a1cbd26.png)
![image](http://mathurl.com/ck34r7x.png)
![image](http://mathurl.com/ck34r7x.png)
Чтобы с этим справиться, наивный байесовский классификатор (naive Bayes classifier — его иногда даже называют idiot’s Bayes) предполагает условную независимость атрибутов при условии данного значения целевой функции:
![image](https://habrastorage.org/getpro/habr/post_images/7c8/de2/d30/7c8de2d301c1aa296a1da6b53d192084.png)
Теперь обучить отдельные
![image](http://mathurl.com/cyy8sxn.png)
Заметим, что наивный байесовский классификатор делает чертовски сильное предположение: в классификации текстов мы предполагаем, что разные слова в тексте на одну и ту же тему появляются независимо друг от друга. Это, конечно, полный бред — но, тем не менее, результаты получаются вполне приличные. На самом деле наивный байесовский классификатор гораздо лучше, чем кажется. Его оценки вероятностей оптимальны, конечно, только в случае настоящей независимости; но сам классификатор оптимален в куда более широком классе задач, и вот почему. Во-первых, атрибуты, конечно, зависимы, но их зависимость одинакова для разных классов и «взаимно сокращается» при оценке вероятностей. Грамматические и семантические зависимости между словами одни и те же и в тексте про футбол, и в тексте о байесовском обучении. Во-вторых, для оценки вероятностей наивный байес очень плох, но как классификатор гораздо лучше (обычно, если даже на самом деле
![image](https://habrastorage.org/getpro/habr/post_images/715/cf6/2bf/715cf62bf8639499dea3dfafd48efc40.png)
![image](https://habrastorage.org/getpro/habr/post_images/9d8/b0c/ffb/9d8b0cffbb00de50a782c9bffbc945eb.png)
![image](https://habrastorage.org/getpro/habr/post_images/9d5/876/8c2/9d58768c25cff552985b86d2f47aa914.png)
![image](https://habrastorage.org/getpro/habr/post_images/0d2/82b/5ed/0d282b5ede87774b1f7cef0e30462b7a.png)
В следующей серии мы усложним этот пример и рассмотрим модель LDA, которая способна выделять темы в корпусе документов безо всякого набора отмеченных документов, причём так, что один документ сможет содержать несколько тем, а также применим её к задаче рекомендаций.