Метод Парзеновского окна (пример)

Материал из MachineLearning.

Перейти к: навигация, поиск

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

Содержание

Постановка задачи разделения классов методом парзеновского окна

Пусть у нас задана выборка \{(\mathbf{x}_i,y_i)\}_{i=1}^m, где X^m = \{\mathbf{x}_i\}_{i=1}^m - множество объектов, а Y^m = \{\mathbf{y}_i\}_{i=1}^m - множество\ref{Переписать.} объектов на этих ответах. Кроме того, задан объект x_0, который небоходимо классифицировать. Задача состоит в том, что бы подобрать параметр h - ширину окна и тип ядра\ref{Ввести определение ядра и класс, из которого оно выбирается.} таким образом,что бы при классификации с помощью метода парзеновского окна \ref{Переписать.}ошибок было бы как можно меньше:

a(x;X^{l},h)=\arg \max_{y\in Y} \lambda_{y} \sum_{i=1}^l {[}y_i = y{]} K\left(\frac{p(x,x_i)}{h}\right).

\ref{Описать все используемые переменные.}

Алгоритм отыскания оптимальных параметров

Для того, чтобы найти ширину окна и наиболее подходящий нам тип ядра, мы воспользуемся принципом максимального правдоподобия и исключением объектов по одному (leave-one-out,LOO):

h^{*}=\arg{ } \max_{h} \sum_{i=1}^l \log \hat{p}_h (x_i;X^{m}{/}x_i)

То есть, мы будем восстанавливать значение класса для одного объекта из нашей выборки и максимизировать логарифм количества правильных ответов при исключении по очереди всех объектов выборки. Мы можем максимизоровать это значение по двум параметрам - ширине окна h и типу ядра. Ширину окна мы можем подобрать из некоторого диапазона, полученного из эмпирических предположений. Ядро можно выбрать из набора общеизвестных ядер. В моей работе рассматривались несколько основных типов ядер:

# ядро K(r) формула
1 Епанечникова E(r)=\frac{3}{4}(1-r^2){[}{|}r{|}<=1{]}
2 Квартическое Q(r)=\frac{15}{16}(1-r^2)^2{[}{|}r{|}<=1{]}
3 Треугольное T(r)=(1-{|}r{|}){[}{|}r{|}<=1{]}
4 Гауссовское G(r)=(2\pi)^{(-\frac{1}{2})}exp(-\frac{1}{2}r^2)
5 Прямоугольное \Pi(r)=\frac{1}{2}{[}{|}r{|}<=1{]}

Получившееся выражение имеет достаточно понятный вид:

(h^{*},K(r))=\arg{ } \max_{K(r)} \max_{h} \sum_{i=1}^l \log \hat{p}_h (x_i;X^{m}{/}x_i)

Вычислительный эксперимент

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

Код получения данных:

%NORMGENERATION generation of normal data in 2 classes with different
%parameteres to be described in V: V(1,1) V(1,2) parameters of normal
%distribution for first class; V(2,1) V(2,2) parameters of normal
%distribution for first class; V(1,3) - number of properties; V(1,4),
%V(2,4) - number of objects in first and second class
X1=random('normal',V(1,1),V(1,2),V(1,3),V(1,4));
X2=random('normal',V(2,1),V(2,2),V(1,3),V(2,4));
X=[X1 , X2];
Y=[ones(1,V(1,4)) , zeros(1,V(2,4))];

В первом случае была использована такая матрица параметров распределения:

V=[0 4 2 60; 20 4 2 50]

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

Матрица параметров распределения:

V=[0 4 2 60; 5 4 2 50]

Во втором случае классы были сближены, что привело к некоторому неустранимому числу ошибок.

Матрица параметров распределения:

V=[0 4 2 60; 0 12 2 50]

В третьем случае были взяты два класса с одинаковыми математическими ожиданиями, но разными дисперсиями. Алгоритм достаточно хорошо разделил и их.

Исходный код

Скачать листинги алгоритмов можно здесь parzenclassification.m, slidingcontrol.m, fqual.m, kgenerate.m

Смотри также

Литература

  • К. В. Воронцов, Лекции по линейным алгоритмам классификации


Данная статья является непроверенным учебным заданием.
Студент: Участник:Зайцев Алексей
Преподаватель: Участник:В.В. Стрижов
Срок: 28 мая 2009

До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}.

См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.


Замечания

Личные инструменты