Пошагово разбираюсь - тематическая модель (Topic Model), LDA (кейс-код)

машинное обучение

1. Что такое модель LDA

LDA можно разделить на следующие 5 шагов:

  • Одна функция: гамма-функция.
  • Четыре распределения: биномиальное, мультиномиальное, бета и Дирихле.
  • Концепция и идея: сопряженные априоры и байесовская структура.
  • Две модели: pLSA, LDA.
  • Одна выборка: выборка Гиббса

Есть два значения LDA: одно — линейный дискриминантный анализ, а другое — вероятностная тематическая модель:Скрытое распределение Дирихле (LDA), в этой статье речь пойдет о последнем.

Согласно введению в вики, LDA был предложен Блей, Дэвидом М., Нг, Эндрю Ю., Джорданом в 2003 году. Это тематическая модель, которая может дать тему каждого документа в наборе документов в виде вероятности распределения, Таким образом, после извлечения их тем (распределения) путем анализа некоторых документов можно выполнить кластеризацию тем или классификацию текста по темам (распределение). В то же время это типичная модель «мешка слов», то есть документ состоит из группы слов, и между словами нет последовательной связи. Кроме того, документ может содержать несколько тем, и каждое слово в документе генерируется одной из тем.

Как люди создают документы? Сначала перечислите несколько тем, затем выберите темы с определенной вероятностью, и выберите с определенной вероятностью лексику, содержащуюся в этой теме, и, наконец, объедините их в статью. Как показано на рисунке ниже (где слова с разными цветами соответствуют словам в разных темах на рисунке выше).

Тогда LDA является обратным:На основе данного документа обратное его распределение по темам.

В модели LDA документ создается следующим образом:

  • Распространение от Дирихле\alphaТематическое распределение документа, которое я сгенерировал путем выборки в\theta_i.
  • Полиномиальное распределение по темам\theta_iСредняя выборка генерирует тему j-го слова документа i.z_{i,j}.
  • Распространение от Дирихле\betaСредняя выборка для создания темz_{i,j}Соответствующее распределение слов\phi_{z_{i,j}}.
  • из полиномиального распределения слов\phi_{z_{i,j}}Средняя выборка для окончательного создания словw_{i,j}.

Среди них Бета-подобное распределение представляет собой сопряженное априорное распределение вероятностей биномиального распределения, а распределение Дирихле (распределение Дирихле) представляет собой сопряженное априорное распределение вероятностей полиномиального распределения. Кроме того, структура графовой модели LDA показана на следующем рисунке (аналогично структуре байесовской сети):

1.1 Понимание 5 дистрибутивов

Давайте сначала объясним концепции, представленные выше.

  1. Биномиальное распределение

    Биномиальное распределение развито из распределения Бернулли. Распределение Бернулли, также известное как двухточечное распределение или распределение 0-1, представляет собой дискретное случайное распределение, в котором есть только два типа случайных величин: положительные или отрицательные {+, -}. Биномиальное распределение - это эксперимент Бернулли, повторенный n раз, обозначаемый какX\sim_{}b(n,p). Короче говоря, если вы проводите только один эксперимент, это распределение Бернулли, а если вы повторяете его n раз, это биномиальное распределение.

  2. мультиномиальное распределение

    это случай, когда биномиальное распределение распространяется на несколько измерений. Полиномиальное распределение означает, что значение случайной величины в одном эксперименте больше не равно 0-1, а имеет множество дискретных значений (1,2,3...,k). Например, в эксперименте по бросанию шестигранной кости результаты N экспериментов подчиняются полиномиальному распределению K=6. в:

    \sum_{i=1}^{k}p_i=1,p_i>0
  3. Сопряженное предварительное распределение

    существуетБайесовская статистика, еслиАпостериорное распределениеипредварительное распределениепринадлежат к одному и тому же классу, априорное распределение и апостериорное распределение называютсяСопряженное распределение, а априорное распределение называется функцией правдоподобиясопряженный предшествующий.

  4. Бета-распределение

    Сопряженное априорное распределение биномиального распределения. заданные параметры\alpha>0и\beta>0, функция плотности вероятности случайной величины x в диапазоне [0,1]:

    f(x;\alpha,\beta)=\frac{1}{B(\alpha,\beta)}x^{\alpha-1}(1-x)^{\beta-1}

    в:

    \frac{1}{B(\alpha,\beta)}=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)}
    \Gamma(z)=\int_{0}^{\infty}t^{z-1}e^{-t}dt

    Примечание. Это так называемая гамма-функция, которая будет подробно описана ниже.

  5. Распределение Дирихле

    является обобщением бета-распределения в больших размерностях. Форма функции плотности распределения Дирихле точно такая же, как у бета-распределения:

    f(x_1,x_2,...,x_k;\alpha_1,\alpha_2,...,\alpha_k)=\frac{1}{B(\alpha)}\prod_{i=1}^{k}x_i^{\alpha^i-1}

    в

    B(\alpha)=\frac{\prod_{i=1}^{k}\Gamma(\alpha^i)}{\Gamma(\sum_{i=1}^{k}\alpha^i)},\sum_{}x_i=1

На данный момент мы видим, что биномиальное распределение очень похоже на полиномиальное распределение, а бета-распределение очень похоже на распределение Дирихле.

Если вы хотите узнать больше о его принципе, вы можете обратиться к:Популярное понимание тематической модели LDA, вы также можете сначала спуститься вниз и, наконец, оглянуться на подробную формулу, и вы сможете лучше понять ее.

Короче,Можно получить следующую информацию.

  • Бета-распределение - это сопряженное априорное распределение вероятностей биномиального распределения: для неотрицательных действительных чисел\alphaи\beta, имеем следующее соотношение:

    Beta(p|\alpha,\beta)+Count(m_1,m_2)=Beta(p|\alpha+m_1,\beta+m_2)

    в(m_1,m_2)В соответствии с биномиальным распределениемB(m_1+m_2,p)считать. Для наблюдаемых данных, соответствующих биномиальному распределению, как априорное, так и апостериорное распределение параметров являются бета-распределениями, которые являются сопряженными бета-биномиальными. "

  • Распределение Дирихле представляет собой сопряженное априорное распределение вероятностей полиномиального распределения.Общее выражение выглядит следующим образом:

    Dir(\vec{p}|\vec\alpha)+MultCount(\vec{m})=Dir(p|\vec{\alpha}+\vec{m})

    Для наблюдаемых данных, соответствующих полиномиальному распределению, априорное распределение и апостериорное распределение параметров оба являются распределениями Дирихле, которые являются сопряженными Дирихле-полиномиальным распределением. "

  • Фиксированный паттерн байесовского мышления:

    предварительное распределение\pi(\theta)+ образец информацииX= заднее распределение\pi(\theta|x).

1.2 Понимание трех основных моделей

Прежде чем говорить о модели LDA, давайте шаг за шагом разберемся с основными моделями: модель Unigram, модель смеси unigrams и модель pLSA, наиболее близкая к LDA. Для удобства описания сначала определим некоторые переменные:

  • wвыражая слова,VУказывает количество всех слов (фиксированное значение).
  • zпредставлять тему,k- количество тем (заранее заданное, фиксированное значение).
  • D=(W_1,...,W_M)Представляет корпус, где M — количество документов в корпусе (фиксированное значение).
  • W=(w_1,w_2,...,w_N)Представляет документы, где N представляет количество слов (случайных переменных) в документе.
  1. Unigram model

    для документацииW=(w_1,w_2,...,w_N),использоватьp(w_n)выразить словоw_nАприорная вероятность , вероятность создания документа w равна:

    p(W)=\prod_{n=1}^{N}p(w_n)
  2. Mixture of unigrams model

    Процесс генерации модели: сначала выберите тему z для документа, а затем сгенерируйте документ на основе темы, и все слова в документе взяты из темы. Предположим, что у субъектаz_1,...,z_n, вероятность генерации документа w равна:

    p(W)=p(z_1)\prod_{n=1}^{N}p(w_n|z_1)+...+p(z_k)\prod_{n=1}^{N}p(w_n|z_k)=\sum_{z}p(z)\prod_{n=1}^{N}p(w_n|z)
  3. PLSA-модель

    После понимания модели pLSA, модель LDA находится всего в одном шаге — добавление байесовской структуры к pLSA — это LDA.

    В приведенной выше модели «Смесь униграмм» мы предполагаем, что документ создается только с одной темой, но на практике статья часто имеет несколько тем, но вероятности появления каждой из этих тем в документе различны. Например, в документе, представляющем страну, часто упоминается несколько тем, таких как образование, экономика и транспорт. Итак, как создается документ в pLSA?

    Предположим, у вас всего K необязательных тем и V необязательных слов,Давайте поиграем в кости.

    **1.** Предположим, что каждый раз, когда вы пишете документ, вы создаете K-грань кубика «тема-документ» (бросайте этот кубик, чтобы получить любую из K тем) и K-грань «тема-тема». Кубик «Кости. Термин» (каждый кубик соответствует теме, K кубиков соответствуют предыдущим K темам, и каждая грань кубика соответствует термину, который нужно выбрать, а V граней соответствует V необязательным словам).

    Например, можно установить К=3, то есть можно сделать кубик «тема документа» с тремя темами, причем тремя темами могут быть: образование, экономика и транспорт. Тогда пусть V = 3, сделайте 3 кубика «тема-термин» с 3 сторонами, где слова на 3 сторонах кубика с образовательной тематикой могут быть: университет, учитель, курс и 3 стороны кубика с экономической тематикой. Слова на кубике могут быть: рынок, бизнес, финансы, транспорт Слова на трех сторонах кубика могут быть: высокоскоростная железная дорога, автомобиль и самолет.

    **2.** Для каждого написанного слова сначала бросьте кубик «тема документа», чтобы выбрать тему, после получения результата темы используйте кубик «тема-термин», соответствующий результату темы, и бросьте кости, чтобы выбрать нужную тему написанное слово.

    Сначала бросьте кубик «тема документа», предполагая (с определенной вероятностью), что полученная тема является образованием, поэтому следующим шагом будет бросить сито темы образования и (с определенной вероятностью) получить определенное слово, соответствующее сито темы образования: университет.

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

    **Три,** Наконец, вы продолжаете бросать кости «тема-документ» и «тема-термин» несколько раз, повторяя N раз (генерируя N слов), завершая документ, повторяя это, чтобы сгенерировать метод документа M раз. , затем заполните M документов.

    Вышеупомянутый процесс абстрагируется от модели генерации документов PLSA. В этом процессе мы не обращали внимания на порядок появления слов между словами, поэтому pLSA — это метод мешка слов. Весь процесс создания документа заключается в выборе тем для создания документов и определении слов для создания тем.

    И наоборот, поскольку документ был сгенерирован, как сделать вывод о его теме на основе сгенерированного документа? Этот процесс вывода его скрытых тем (распространения) из увиденных документов (фактически обратный процесс создания документов) являетсяЦель тематического моделирования: автоматическое обнаружение тем (раздач) в наборе документов.

    Документ d и слово w — это образцы, которые мы получили, которые можно наблюдать, поэтому для любого документа егоP(w_j|d_i)известен. Так, по большому количеству известной документально-терминовой информацииP(w_j|d_i), обученный документ-темаP(z_k|d_i)и предметный терминP(w_j|z_k), как показано в следующей формуле:

    P(w_j|d_i)=\sum_{k=1}^{K}P(w_j|z_k)P(z_k|d_i)

    Следовательно, вероятность генерации каждого слова в документе получается как:

    P(d_i,w_j)=P(d_i)P(w_j|d_i)=P(d_i)\sum_{k=1}^{K}P(w_j|z_k)P(z_k|d_i)

    так какP(d_i)можно рассчитать заранее иP(w_j|z_k)^{}иP(z_k|d_i)неизвестно, так что\theta=(P(w_j|z_k),P(z_k|d_i))Это параметр (значение), которое мы хотим оценить, с точки зрения непрофессионала, максимизировать это θ.

    Какой метод используется для оценки Обычно используемые методы оценки параметров включают оценку максимального правдоподобия MLE, максимальную оценку MAP после проверки, байесовскую оценку и так далее. Поскольку оцениваемый параметр содержит скрытую переменную z, мы можем рассмотреть алгоритм EM. Подробный алгоритм ЭМ может ссылаться на ранее написанныйЭМ-алгоритмглава.

1.3 модель LDA

На самом деле, когда вы понимаете модель pLSA, вы можете почти понять модель LDA, потому что LDA — это байесовский фреймворк, основанный на pLSA, то есть LDA — это байесовская версия pLSA (потому что LDA байесовская, поэтому необходимо учитывать историческое априорное знание, а затем добавьте два априорных параметра).

Далее сравним, как формируется документ в модели LDA, описанной в начале этой статьи:

  • По априорной вероятностиP(d_i)выбрать документd_i.
  • из распределения Дирихле (т.е. распределения Дирихле)\alphaСредняя выборка для создания документацииd_iраспределение тем\theta_i, другими словами, тематическое распределение\theta_iпо гиперпараметру как\alphaСгенерировано распределение Дирихле.
  • Полиномиальное распределение по темам\theta_iСредняя выборка для создания документацииd_iпредмет j-го словаz_{i,j}.
  • из распределения Дирихле (т.е. распределения Дирихле)\betaСредняя выборка для создания темz_{i,j}Соответствующее распределение слов\phi_{z_{i,j}}, другими словами, распределение слов\phi_{z_{i,j}}по параметру\betaСгенерировано распределение Дирихле.
  • из полиномиального распределения слов\phi_{z_{i,j}}Средняя выборка для окончательного создания словw_{i,j}.

В LDA выбор темы и выбор слова по-прежнему являются двумя случайными процессами.По-прежнему можно сначала извлечь тему: образование из распределения тем {образование: 0,5, экономика: 0,3, транспорт: 0,2}, а затем соответствующую теме распределение слов {Университет: 0,5, Учитель: 0,3, Курс: 0,2} извлекает слово: Университет.

В чем разница между PLSA и LDA? Разница в том, что:

В PLSA распределение тем и слов определяется однозначно. Можно четко указать, что распределение тем может быть {Образование: 0,5, Экономика: 0,3, Трафик: 0,2}, а распределение слов может быть {Университет: 0,5, Учитель : 0,3, Ход: 0,2}. Но в LDA тематическое распределение и распределение слов уже не фиксируются однозначно, то есть не могут быть заданы точно. Например, распределение тем может быть {Образование: 0,5, Экономика: 0,3, Трафик: 0,2} или {Образование: 0,6, Экономика: 0,2, Трафик: 0,2}, в чем мы больше не уверены (т.е. знаю) т.к. оно носит случайный характер. Но как бы она ни менялась, она все равно подчиняется определенному распределению.То есть распределение тем и распределение слов определяются априором Дирихле случайным образом. Поскольку LDA является байесовской версией PLSA, распределение тем и само распределение слов задаются случайным образом на основе предварительных знаний.

Другими словами, LDA дает эти два параметра на основе pLSA.(P(z_k|d_i)、P(w_j|z_k))Добавлены два параметра априорного распределения (байесианизация): априорное распределение Дирихле для тематического распределения.\alpha, и распределение Дирихле до распределения слов\beta.

Подводя итог, LDA на самом деле просто байесовская версия pLSA.После того, как документ создан, оба они должны сделать вывод о его распределении тем и распределении слов в соответствии с документом (то есть оба по существу оценивают данный документ для создания тема, заданная тема Вероятность генерации слов), но используемый метод вывода параметров другой.В pLSA идея оценки максимального правдоподобия используется для вывода двух неизвестных фиксированных параметров, в то время как LDA делает эти два параметра случайными величинами и добавляет дирихле до.

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

Оценка параметра LDA:Выборка Гиббса, см. ссылки в конце текста.

2. Как определить количество тем в LDA?

  1. Субъективное суждение, основанное на опыте, постоянной отладке, высокой работоспособности и наиболее часто используемом.
  2. Основано на недоумении (в основном сравнение того, насколько хороши или плохи две модели).
  3. Метод использования функции логарифмического маргинального правдоподобия также довольно распространен.
  4. Непараметрический метод: метод ГДП на основе процесса Дирихле, предложенный Тех.
  5. На основе сходства между темами: вычислить косинусное расстояние, расстояние KL и т. д. между векторами тем.

3. Как с помощью тематической модели решить проблему холодного запуска в рекомендательной системе?

Проблема холодного старта в рекомендательных системах связана с тем, как давать персонализированные рекомендации пользователям без большого количества пользовательских данных с целью оптимизации рейтинга кликов, коэффициента конверсии или пользовательского опыта (время удержания пользователя, коэффициент удержания и т. д.). ). Проблемы с холодным запуском обычно делятся на три категории: холодный запуск пользователя, холодный запуск элемента и холодный запуск системы.

  • Холодный запуск пользователя означает рекомендацию нового пользователя, который раньше вообще не вел себя или вел себя очень мало;
  • Холодный запуск элемента относится к поиску потенциально заинтересованных пользователей для нового элемента или фильма в списке (с ним не связаны рейтинг или данные о поведении пользователей);
  • Холодный запуск системы относится к тому, как разработать персонализированную систему рекомендаций для недавно разработанного веб-сайта.

Решение проблемы холодного старта — это, как правило, контент-рекомендации. Взяв в качестве примера сценарий Hulu, для холодного запуска пользователя мы надеемся использовать регистрационную информацию пользователя (например, возраст, пол, хобби и т. д.), поисковые ключевые слова или другую информацию, полученную за пределами законного сайта (например, учетная запись пользователя Facebook для входа в систему) и авторизованы для получения сведений об отношениях друзей и содержания комментариев в Facebook), чтобы сделать вывод об интересующей пользователя теме. Получив тему интереса пользователя, мы можем найти других пользователей с той же темой интереса, что и пользователь, и использовать их историческое поведение, чтобы предсказать, какой фильм интересует пользователя.

Точно так же для проблемы холодного запуска предметов мы также можем вывести тему фильма на основе режиссера, актера, категории, ключевых слов и другой информации о фильме, а затем найти похожие фильмы на основе вектора темы и рекомендовать новые. фильмы в прошлые избранные Пользователи, которые смотрят эти похожие фильмы.Темы пользователей и фильмов можно получить с помощью тематических моделей (pLSA, LDA и т. д.).

Взяв в качестве примера пользователей, мы рассматриваем каждого пользователя как документ в топической модели, а соответствующие функции пользователя используются как слова в документе, так что каждый пользователь может быть представлен в виде набора функций. После обучения с помощью тематической модели часто встречающиеся функции будут соответствовать одной и той же теме, и каждый пользователь также получит соответствующее распределение тем. Тематическое распределение каждого фильма также может быть получено аналогичным образом.

** Итак, как решить проблему холодного запуска системы? **Во-первых, можно получить тематический вектор, соответствующий каждому пользователю и фильму, кроме того, необходимо знать степень предпочтения между пользовательской темой и темой фильма, то есть пользователям какой темы какие тематические фильмы могут понравиться. Когда в системе нет данных, нам нужны некоторые предварительные знания для указания, и, поскольку количество тем обычно невелико, по мере того, как система выходит в онлайн, после сбора небольшого количества данных мы можем получить степень предпочтения между темами. более точные оценки.

4. Ссылки

Популярное понимание тематической модели LDA

5. Реализация кода

Применение модели LDA: краткий обзор электронных писем Хиллари

Машинное обучение легко понять серия статей

3.png


автор:@mantchs

Гитхаб:GitHub.com/NLP-love/ml…

Приглашаются все желающие присоединиться к обсуждению! Улучшайте этот проект вместе! Номер группы: [541954936]NLP面试学习群