Московский государственный университет имени М.В.Ломоносова
Опубликован: 30.04.2008 | Доступ: свободный | Студентов: 1614 / 251 | Оценка: 4.24 / 3.92 | Длительность: 14:56:00
Специальности: Математик
Лекция 10:

Селекция признаков

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >

10.4. Векторная селекция признаков. Мера отделимости классов

Ранее обсуждались дискриминантные свойства отдельных признаков. Теперь рассмотрим дискриминантные способности векторов признаков.

Пусть

  • X – множество признаков,
  • X_r – подмножество из r признаков,
  • C(X_r) – мера отделимости классов на множестве признаков X_r.

Тогда задача выглядит следующим образом:

C(X_r)\rightarrow\max_{X_r\leq X}.

Существует различные подходы к описанию меры отделимости. Мы рассмотрим два таких подхода:

  • Дивергенция
  • Матрица рассеивания.

10.4.1. Дивергенция. Будем рассматривать Байесовское правило:

P(\Omega_1|x)><P(\Omega_0|x),
по которому выбирается \Omega_1. Ошибка классификации задается следующим интегралом:
P_l=P(\Omega_0)-\int\limits_{R_1}[P(\Omega_1|x)-P(\Omega_0|x)]p(x)dx

Пусть

  • R_1 – область решения по классу \Omega_1 ; если x\in R_1, то класс \Omega_1 ;
  • R_1\bigcup R_0=R^l – все пространство признаков,
  • P(\Omega_1|x)-P(\Omega_0|x) – очень важный показатель разделимости классов. От этой разности зависит ошибка классификации;
  • \frac{P(\Omega_1|x)}{P(\Omega_0|x)} – информация о разделяющих свойствах вектора признаков (другая форма этого показателя).

Информацию о разделяющих свойствах вектора признаков можно записать следующим образом:

\ln
\left(
\frac{P(\Omega_1)}{P(\Omega_0)}\cdot\frac{P(x|\Omega_1)}{P(x|\Omega_0)}
\right).

Если

\frac{P(\Omega_1)}{P(\Omega_0)}=const,
то
\int_{-\infty}^{+\infty}
\left[
\ln\frac{p(x|\Omega_1)}{p(x|\Omega_0)}
\right]
p(x|\Omega_1)dx=D_{01}
где D_{01} – характеристика отделимости. Аналогично:
D_{10}=\int\limits_{-\infty}^{+\infty}
\left[
\ln\frac{p(x|\Omega_0)}{p(x|\Omega_1)}
\right]
p(x|\Omega_0)dx.

Обозначим через d_{01}=D_{01}+D_{10} дивергенцию разделения классов по вектору признаков x. Аналогично для случая многоклассовой задачи d_{ij} – дивергенция классов \Omega_i и \Omega_j. Тогда

d=\sum_{i=0}^k\sum_{j=0}^k P(\Omega_i)P(\Omega_j)d_{ij}.

Дивергенция есть мера расстояния между плотностями. Она имеет следующие свойства:

d_{ij}\geq 0;\; d_{ij}=0 при i=j;\;d_{ij}=d_{ji}. Если компоненты вектора признаков независимы, можно показать, что d_{ij}(x_1,x_2,\ldots,x_l)=\Sigma d_{ij}(x_r).

Дивергенция учитывает различия и в средних, и в дисперсии. Однако, она очень чувствительна к разности средних, что затрудняет использование.

10.4.2. Мера на основе матриц рассеивания

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

Пусть

S_iматрица ковариации, S_i=E\left\lfloor(x-\mu_i)(x-\mu_i)^T\right\rfloor, где xвектор признаков и \mu_i – среднее значение по x, принадлежащим данному классу, \mu_i=E(x|\Omega_i).

S_W=\sum_{i=1}^M P_i S_iматрица внутриклассового рассеивания есть мера дисперсии признаков, где P_i – априорная вероятность данного класса, P_i=P(\Omega_i).


S_b=\sum_{i=1}^M P_i (\mu_i-\mu_0)(\mu_i-\mu_0)^Tматрица внеклассового рассеивания, где \mu_0=\sum_{i=1} P_i \mu_i – общее среднее – разброс относительно общего среднего всех классов (центр тяжести).

S_m – смешанная матрица рассеивания (ковариация относительно общего среднего), S_m=E\left\lfloor(x-\mu_0)(x-\mu_0)^T\right\rfloor=S_w+S_b.

Определение. Следом (обозначается trace ) называется сумма диагональных элементов матрицы.

Пример. Пусть задана матрица A={\|a_{ij}\|}_{l\times l}. Тогда trace(A)=\sum_{i=1}^l a_{ii}.

Пусть J_1=\frac{trace(S_m)}{trace(S_w)}} – критерий, принимающий большие значения, когда образы хорошо кластеризуются вокруг своих средних в границах каждого класса и кластеры разных классов хорошо разделены. Иногда вместо S_m используют S_b. Тогда получаем задачу J_1\rightarrow\max.

Вместо критерия J_1 можно использовать другие критерии:


J_2=\frac{|S_m|}{|S_W|}\left|S_m S_W^{-1}\right|,\\
J_3=\left\{S_m S_W^{-1}\right\}

Последний критерий очень удобен на практике для аналитических выкладок.

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

Рассмотрим алгоритм наращивания вектора признаков. Пусть из l признаков нужно отобрать m.

Рассмотрим множество признаков \{x_1\},\{x_2\},\ldots,\{x_l\},. Необходимо найти признак, имеющий наибольшую селективную способность. Это аналогично нахождению \max_{x_i}C(\{x_i\}). Пусть X_1=\{x_j\}, где \{x_j\}=\arg\max_{\{x_i\}}C(\{x_i\}).

Пусть X_r – построенное множество признаков. Далее, X\backslash X_r=\max_{X\in X\backslash X_r}C(X_r\bigcup\{x_i\}).

Условие остановки: C(X_{r+1})-C(X_r)<\varepsilon, либо r=m.

10.4.4. Стратегия сокращения вектора признаков

Пусть X – множество признаков.

Шаг алгоритма: набор признаков X_r, чтобы выполнялось \max_{X_i\leq X_r}C(X_r\backslash\{x_i\}) и X_{r-1}=X_r\backslash\{x_i\}.

Условие остановки: |C_{t+1}-C_t|<\varepsilon, либо r=m.

10.4.5. Выбор стратегии

Пусть l:\;1<l<m. Если l>\frac12, то используем стратегию сокращения вектора признаков. Если l<\frac12, то используем стратегию наращивания вектора признаков.

В качестве альтернативы можно использовать сравнение l-m с l. Если l-m<, то используем стратегию сокращения вектора признаков. Если l-m>l, то используем стратегию наращивания вектора признаков.

Обе стратегии являются жадными.

Определение. Стратегия называется "жадной", если она не допускает шагов возврата.

10.4.6. Алгоритм плавающего поиска. Примером нежадной стратегии является метод плавающего поиска. Плавающий поиск базируется на стратегии вставки и исключения.

Пусть все признаки упорядочены по убыванию меры C(\x_i{\}). Пусть также X_k=\{x_1,\ldots,x_k\} – первые k признаков, имеющие наибольшее C(\x_i{\}). Тогда остальные признаки строятся следующим образом:


Y_{l-k}=X\backslash X_k, \\
X_{k+1}=\left\{X_k,x_{k+1}\right\}.

Предположим, что построены множества X_2,X_3,\ldots,X_{k-1}. Рассмотрим алгоритм плавающего поиска.

Шаг 1. Вставка.

Добавление признаков: x_{k+1}=\arg\max C(\{X_k,y\}) и X_{k+1}=\left\{X_k,x_{k+1}\right\}.

Шаг 2. Проверка

x_r=\arg\max C(X_{k+1}\backslash\{x_s\}),x_s\in X_{k+1}, где x_r – признак дающий наименьший вклад (минимальные потери при выбросе).

Если r=k+1, то увеличиваем k и переходим на шаг 1.

Если r\neq k+1 и C(X_{k+1}\backslash\{x_r\})<C(x_k), то переходим на шаг 1.

Если k=2, то X_k=X_{k+1}\backslash\{x_r\} и переходим на шаг 1.

Шаг 3. Исключение x_r.

X'_k=X_{k+1}\backslash\{x_r\}

Поиск наименее значительного элемента в новом множестве x_s=\arg\max C(X'_k\backslash\{y\}),y\in X'_k.

Если C(X'_K\backslash\{\x_s})<C(X_{k-1}), то X_k=X'_k и переходим на шаг 1.

Если X'_{k-1}=X'_k-\{x_s\}, то уменьшаем k на 1.

Если k=2, то X_k=X'_k, C(X_k)=C(X'_k) и переходим на шаг 1.

Переходим на шаг 3.

< Лекция 9 || Лекция 10: 1234 || Лекция 11 >