Участник:Sergey Lavrushkin/EM-алгоритм кластеризации: различия между версиями
Нет описания правки |
|||
| Строка 22: | Строка 22: | ||
=== Математическое описание алгоритма === | === Математическое описание алгоритма === | ||
Исходные данные: | |||
* <math>k</math> — число кластеров, | |||
* <math>X =\{x_{1}, x_{2}, ..., x_{n}\}</math> — множество из <math>n</math> наблюдений <math>q</math>-мерного пространства, | |||
* <math>\epsilon</math> — допустимое отклонение для логарифмического правдоподобия, | |||
* <math>m</math> — максимальное число итераций | |||
Вычисляемые данные: | |||
* <math>(w, \theta) = (w_1, ..., w_k; \mu_1, ..., \mu_k; \Sigma_1, ..., \Sigma_k)</math> — параметры смеси гауссовых распределений | |||
* <math>Y</math> — матрица с вероятностями членства в кластерах | |||
==== Постановка задачи разделения смеси гауссовых распределений ==== | |||
Пусть <math>w_1, ..., w_k</math> — априорные вероятности кластеров, <math>p_1(x), ..., p_k(x)</math> — плотности распределения кластеров, | |||
тогда плотность распределения вектора признаков <math>x</math> сразу по всем кластерам равна: | |||
:<math> | |||
\begin{align} | |||
p(x) = \sum_{j=1}^{k}w_jp_j(x) | |||
\end{align} | |||
</math> | |||
Необходимо на основе выборки оценить параметры модели <math>w_1, ..., w_k, p_1(x), ..., p_k(x)</math>. Это позволит оценивать вероятность принадлежности к кластеру и, таким образом, решить задачу кластеризации. Такая задача | |||
называется задачей разделения смеси распределений: | |||
:<math> | |||
\begin{align} | |||
p(x) = \sum_{j=1}^{k}w_jp_j(x),\quad p_j(x) = \phi(\theta_j; x), | |||
\end{align} | |||
</math> | |||
где <math>\theta_j</math> — параметры распределения <math>p_j(x)</math>. | |||
В случае смести гауссовых распределений предполагается, что все компоненты имеют многомерное нормальное распределение. То есть в случае <math>q</math>-мерного пространства признаков <math>p_j(x)</math> имеют следующий вид: | |||
:<math> | |||
\begin{align} | |||
& p_j(x) = \frac{1}{\Big(2\pi\Big)^{\frac{q}{2}}\sqrt{|\Sigma_j|}}\exp{\bigg\{-\frac{\delta^2}{2}\bigg\} },\\ | |||
& \delta^2 = \Big( x - \mu_j \Big)^T \Sigma_j^{-1} \Big( x - \mu_j \Big), | |||
\end{align} | |||
</math> | |||
где: | |||
* <math>\Sigma_j</math> — ковариационная матрица размером </math>q \times q</math>, | |||
* <math>\mu_j</math> — <math>q</math>-мерный вектор математических ожиданий, | |||
* <math>\delta^2</math> — квадратичное расстояние Махаланобиса. | |||
В случае смеси гауссовых распределений получаем, что <math>\theta_j = (\mu_j, \Sigma_j)</math>. То есть для решения задачи разделения смеси гауссовых распределений необходимо оценить вектор параметров <math>(w, \theta) = (w_1, ..., w_k; \mu_1, ..., \mu_k; \Sigma_1, ..., \Sigma_k)</math>. Согласно принципу максимизации правдоподобия: | |||
:<math> | |||
\begin{align} | |||
w, \theta = \underset{w, \theta}{\operatorname{argmax}} \sum_{i=1}^{n}\ln{p(x_i)} = \underset{w, \theta}{\operatorname{argmax}} \sum_{i=1}^{n}\ln{\sum_{j=1}^{k}w_jp_j(x_i)} | |||
\end{align} | |||
</math> | |||
Таким образом, имеет место задача максимизации суммы логарифмов сумм, решение которой представляет большую трудность. В таком случае полезным оказывается итеративный метод решения — EM-алгоритм. | |||
==== EM-алгоритм ==== | |||
Оптимальные параметры задачи разделения смеси гауссовых распределений отыскиваются последовательно с помощью итерационного EM-алгоритма. Основная идея – вводится вспомогательный вектор скрытых переменных. Это позволяет свести сложную оптимизационную задачу к последовательности итераций по пересчету коэффициентов (скрытых переменных по текущему приближению вектора параметров - E-шаг) и максимизации правдоподобия (с целью найти следующее приближение вектора - М-шаг). | |||
EM-алгоритм заключается в следующем: | |||
<ol> | |||
<li> В начале работы алгоритма задаются параметры начального приближения. Наиболее общим способом инициализации является присвоение элементам матрицы математических ожиданий случайных значений <math> \mu_j \leftarrow Random </math>, начальные ковариационные матрицы определяются как единчиные <math>\Sigma_j \leftarrow I</math>, веса кластеров задаются одинаковыми <math>w_i \leftarrow \frac{1}{k}</math>. Также в качестве начальных параметров можно использовать результат работы алгоритма K-means. (Данная эвристика применяется, так как K-means требуется намного меньше итераций до достижения стабилизации, в то время как каждый шаг EM требует больших вычислительных затрат).</li> | |||
<li> Далее итеративно выполняется следующая пара процедур: | |||
<ul> | |||
<li>E-шаг: используя текущее значение вектора параметров <math>(w, \theta) = (w_1, ..., w_k; \mu_1, ..., \mu_k; \Sigma_1, ..., \Sigma_k)</math>, вычисляем значение вектора скрытых переменных <math>g</math>: | |||
:<math> | |||
\begin{align} | |||
g_{ij} = \frac{w_j p_j(x_i)}{\sum_{l=1}^{k}w_lp_l(x_i)} | |||
\end{align} | |||
</math></li> | |||
<li>М-шаг: переоценка вектора параметров, используя текущее значение вектора скрытых переменных: | |||
:<math> | |||
\begin{align} | |||
& n_j = \sum_{i = 1}^{n}g_{ij}, \\ | |||
& \mu_j^{new} = \frac{1}{n_j} \sum_{i = 1}^{n}g_{ij}x_i, \\ | |||
& \Sigma_j^{new} = \frac{1}{n_j} \sum_{i = 1}^{n}g_{ij}(x_i - \mu_j^{new})(x_i - \mu_j^{new})^T,\\ | |||
& w_j^{new} = \frac{n_j}{n}. | |||
\end{align} | |||
</math></li> | |||
</ul> | |||
</li> | |||
</ol> | |||
Итерации происходят до сходимости или достижения максимального числа итераций. | |||
=== Вычислительное ядро алгоритма === | === Вычислительное ядро алгоритма === | ||
Версия от 14:07, 12 октября 2016
Автор статьи: Сергей Лаврушкин (группа 620)
Свойства и структура алгоритма
Общее описание алгоритма
EM–алгоритм — алгоритм кластеризации, заключающийся в максимизации правдоподобия. Его название происходит от слов "expectation-maximization", что переводится как "ожидание-максимизация". Это связано с тем, что каждая итерация содержит два шага — вычисление математических ожиданий (expectation) и максимизацию (maximisation). Алгоритм основан на методике итеративного вычисления оценок максимального правдоподобия, предложенной в 1977 г. (A. P. Demster, N. M. Laird, D. B. Rubin. Maximum Likelihood from Incomplete Data via the EM Algorithm).
В основе идеи EM-алгоритма лежит предположение, что исследуемое множество данных может быть смоделировано с помощью линейной комбинации многомерных нормальных распределений, а целью является оценка параметров распределения, которые максимизируют логарифмическую функцию правдоподобия, используемую в качестве меры качества модели. Иными словами, предполагается, что данные в каждом кластере подчиняются определенному закону распределения, а именно, нормальному распределению. С учетом этого предположения можно определить параметры - математическое ожидание и дисперсию, которые соответствуют закону распределения элементов в кластере, наилучшим образом "подходящему" к наблюдаемым данным.
Таким образом, предполагается, что любое наблюдение принадлежит ко всем кластерам, но с разной вероятностью. Тогда задача будет заключаться в "подгонке" распределений смеси к данным, а затем в определении вероятностей принадлежности наблюдения к каждому кластеру. Наблюдение должно быть отнесено к тому кластеру, для которого данная вероятность выше.
Алгоритм EM основан на вычислении расстояний. Он может рассматриваться как обобщение кластеризации на основе анализа смеси вероятностных распределений. В процессе работы алгоритма происходит итеративное улучшение решения, а остановка осуществляется в момент, когда достигается требуемый уровень точности модели. Мерой в данном случае является монотонно увеличивающаяся статистическая величина, называемая логарифмическим правдоподобием.
Преимущества и недостатки алгоритма
Среди преимуществ EM-алгоритма можно выделить следующие:
- Мощная статистическая основа.
- Линейное увеличение сложности при росте объема данных.
- Устойчивость к шумам и пропускам в данных.
- Возможность построения желаемого числа кластеров.
- Быстрая сходимость при удачной инициализации.
Однако алгоритм имеет и ряд недостатков. Во-первых, предположение о нормальности всех измерений данных не всегда выполняется. Во-вторых, при неудачной инициализации сходимость алгоритма может оказаться медленной. Кроме этого, алгоритм может остановиться в локальном минимуме и дать квазиоптимальное решение.
Математическое описание алгоритма
Исходные данные:
- [math]\displaystyle{ k }[/math] — число кластеров,
- [math]\displaystyle{ X =\{x_{1}, x_{2}, ..., x_{n}\} }[/math] — множество из [math]\displaystyle{ n }[/math] наблюдений [math]\displaystyle{ q }[/math]-мерного пространства,
- [math]\displaystyle{ \epsilon }[/math] — допустимое отклонение для логарифмического правдоподобия,
- [math]\displaystyle{ m }[/math] — максимальное число итераций
Вычисляемые данные:
- [math]\displaystyle{ (w, \theta) = (w_1, ..., w_k; \mu_1, ..., \mu_k; \Sigma_1, ..., \Sigma_k) }[/math] — параметры смеси гауссовых распределений
- [math]\displaystyle{ Y }[/math] — матрица с вероятностями членства в кластерах
Постановка задачи разделения смеси гауссовых распределений
Пусть [math]\displaystyle{ w_1, ..., w_k }[/math] — априорные вероятности кластеров, [math]\displaystyle{ p_1(x), ..., p_k(x) }[/math] — плотности распределения кластеров, тогда плотность распределения вектора признаков [math]\displaystyle{ x }[/math] сразу по всем кластерам равна:
- [math]\displaystyle{ \begin{align} p(x) = \sum_{j=1}^{k}w_jp_j(x) \end{align} }[/math]
Необходимо на основе выборки оценить параметры модели [math]\displaystyle{ w_1, ..., w_k, p_1(x), ..., p_k(x) }[/math]. Это позволит оценивать вероятность принадлежности к кластеру и, таким образом, решить задачу кластеризации. Такая задача называется задачей разделения смеси распределений:
- [math]\displaystyle{ \begin{align} p(x) = \sum_{j=1}^{k}w_jp_j(x),\quad p_j(x) = \phi(\theta_j; x), \end{align} }[/math]
где [math]\displaystyle{ \theta_j }[/math] — параметры распределения [math]\displaystyle{ p_j(x) }[/math]. В случае смести гауссовых распределений предполагается, что все компоненты имеют многомерное нормальное распределение. То есть в случае [math]\displaystyle{ q }[/math]-мерного пространства признаков [math]\displaystyle{ p_j(x) }[/math] имеют следующий вид:
- [math]\displaystyle{ \begin{align} & p_j(x) = \frac{1}{\Big(2\pi\Big)^{\frac{q}{2}}\sqrt{|\Sigma_j|}}\exp{\bigg\{-\frac{\delta^2}{2}\bigg\} },\\ & \delta^2 = \Big( x - \mu_j \Big)^T \Sigma_j^{-1} \Big( x - \mu_j \Big), \end{align} }[/math]
где:
- [math]\displaystyle{ \Sigma_j }[/math] — ковариационная матрица размером </math>q \times q</math>,
- [math]\displaystyle{ \mu_j }[/math] — [math]\displaystyle{ q }[/math]-мерный вектор математических ожиданий,
- [math]\displaystyle{ \delta^2 }[/math] — квадратичное расстояние Махаланобиса.
В случае смеси гауссовых распределений получаем, что [math]\displaystyle{ \theta_j = (\mu_j, \Sigma_j) }[/math]. То есть для решения задачи разделения смеси гауссовых распределений необходимо оценить вектор параметров [math]\displaystyle{ (w, \theta) = (w_1, ..., w_k; \mu_1, ..., \mu_k; \Sigma_1, ..., \Sigma_k) }[/math]. Согласно принципу максимизации правдоподобия:
- [math]\displaystyle{ \begin{align} w, \theta = \underset{w, \theta}{\operatorname{argmax}} \sum_{i=1}^{n}\ln{p(x_i)} = \underset{w, \theta}{\operatorname{argmax}} \sum_{i=1}^{n}\ln{\sum_{j=1}^{k}w_jp_j(x_i)} \end{align} }[/math]
Таким образом, имеет место задача максимизации суммы логарифмов сумм, решение которой представляет большую трудность. В таком случае полезным оказывается итеративный метод решения — EM-алгоритм.
EM-алгоритм
Оптимальные параметры задачи разделения смеси гауссовых распределений отыскиваются последовательно с помощью итерационного EM-алгоритма. Основная идея – вводится вспомогательный вектор скрытых переменных. Это позволяет свести сложную оптимизационную задачу к последовательности итераций по пересчету коэффициентов (скрытых переменных по текущему приближению вектора параметров - E-шаг) и максимизации правдоподобия (с целью найти следующее приближение вектора - М-шаг).
EM-алгоритм заключается в следующем:
- В начале работы алгоритма задаются параметры начального приближения. Наиболее общим способом инициализации является присвоение элементам матрицы математических ожиданий случайных значений [math]\displaystyle{ \mu_j \leftarrow Random }[/math], начальные ковариационные матрицы определяются как единчиные [math]\displaystyle{ \Sigma_j \leftarrow I }[/math], веса кластеров задаются одинаковыми [math]\displaystyle{ w_i \leftarrow \frac{1}{k} }[/math]. Также в качестве начальных параметров можно использовать результат работы алгоритма K-means. (Данная эвристика применяется, так как K-means требуется намного меньше итераций до достижения стабилизации, в то время как каждый шаг EM требует больших вычислительных затрат).
- Далее итеративно выполняется следующая пара процедур:
- E-шаг: используя текущее значение вектора параметров [math]\displaystyle{ (w, \theta) = (w_1, ..., w_k; \mu_1, ..., \mu_k; \Sigma_1, ..., \Sigma_k) }[/math], вычисляем значение вектора скрытых переменных [math]\displaystyle{ g }[/math]:
- [math]\displaystyle{ \begin{align} g_{ij} = \frac{w_j p_j(x_i)}{\sum_{l=1}^{k}w_lp_l(x_i)} \end{align} }[/math]
- М-шаг: переоценка вектора параметров, используя текущее значение вектора скрытых переменных:
- [math]\displaystyle{ \begin{align} & n_j = \sum_{i = 1}^{n}g_{ij}, \\ & \mu_j^{new} = \frac{1}{n_j} \sum_{i = 1}^{n}g_{ij}x_i, \\ & \Sigma_j^{new} = \frac{1}{n_j} \sum_{i = 1}^{n}g_{ij}(x_i - \mu_j^{new})(x_i - \mu_j^{new})^T,\\ & w_j^{new} = \frac{n_j}{n}. \end{align} }[/math]
- E-шаг: используя текущее значение вектора параметров [math]\displaystyle{ (w, \theta) = (w_1, ..., w_k; \mu_1, ..., \mu_k; \Sigma_1, ..., \Sigma_k) }[/math], вычисляем значение вектора скрытых переменных [math]\displaystyle{ g }[/math]:
Итерации происходят до сходимости или достижения максимального числа итераций.