Метод Парзеновского окна (пример)
Материал из MachineLearning.
| Строка 33: | Строка 33: | ||
Вычислительный эксперимент был проведен на реальных и модельных данных. В качестве модельных данных были взяты точки из двух нормальных распределений с разными математическими ожиданиями и дисперсиями (соответственно, были получены два класса объектов). После проведения рядка экспериментов были получены следующие результаты:     | Вычислительный эксперимент был проведен на реальных и модельных данных. В качестве модельных данных были взяты точки из двух нормальных распределений с разными математическими ожиданиями и дисперсиями (соответственно, были получены два класса объектов). После проведения рядка экспериментов были получены следующие результаты:     | ||
| + | Код получения данных:  | ||
| + | |||
| + | <source lang="matlab">  | ||
| + | %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))];  | ||
| + | </source>  | ||
| + | |||
| + | В первом случае была использована такая матрица параметров распределения:  | ||
| + | <source lang="matlab">  | ||
| + | V=[0 4 2 60; 20 4 2 50]  | ||
| + | </source>  | ||
| + | |||
| + | Мы видим, что при хорошо разделимых классах, наш алгоритм работает замечательно при правильно подобранном значение <tex>k</tex> и любом ядре.  | ||
| + | |||
| + | [[Изображение:Parzen1.jpg|300px]]  | ||
| + | |||
| + | Матрица параметров распределения:  | ||
| + | <source lang="matlab">  | ||
| + | V=[0 4 2 60; 5 4 2 50]  | ||
| + | </source>  | ||
| + | |||
| + | Во втором случае классы были сближены, что привело к некоторому неустранимому числу ошибок.  | ||
| + | |||
| + | [[Изображение:Parzen3.jpg|300px]]  | ||
| + | |||
| + | Матрица параметров распределения:  | ||
| + | <source lang="matlab">  | ||
| + | V=[0 4 2 60; 0 12 2 50]  | ||
| + | </source>  | ||
| + | |||
| + | В третьем случае были взяты два класса с одинаковыми математическими ожиданиями, но разными дисперсиями. Алгоритм достаточно хорошо разделил и их.  | ||
| + | |||
| + | [[Изображение:Parzen4.jpg|300px]]  | ||
== Исходный код ==  | == Исходный код ==  | ||
Версия 12:51, 19 мая 2009
Метод Парзеновского окна принадлежит к непараметрическим методам классификации и представляет собой одну из возможных реализаций байесовского подхода к решению задачи классификации.
Содержание | 
Постановка задачи разделения классов методом парзеновского окна
Пусть у нас задана выборка , где 
 = 
 - множество объектов, а 
 = 
 - множество объектов на этих ответах. Кроме того, задан объект 
б который небоходимо классифицировать методом парзеновского окна.
Задача состоит в том, что бы подобрать параметр 
 - ширину окна и тип ядра таким образом,что бы при классификации с помощью метода парзеновского окна ошибок было бы как можно меньше:
Алгоритм отыскания оптимальных параметров
Для того, чтобы найти ширину окна и наиболее подходящий нам тип ядра, мы воспользуемся принципом максимального правдоподобия и исключением объектов по одному (leave-one-out,LOO):
То есть, мы будем восстанавливать значение класса для одного объекта из нашей выборки и максимизировать логарифм количества правильных ответов при исключении по очереди всех объектов выборки. Мы можем максимизоровать это значение по двум параметрам - ширине окна  и типу ядра. Ширину окна мы можем подобрать из некоторого диапазона, полученного из эмпирических предположений. Ядро можно выбрать из набора общеизвестных ядер. В моей работе рассматривались несколько основных типов ядер:
| # | ядро  | формула | 
|---|---|---|
| 1 | Епанечникова |   | 
| 2 | Квартическое |   | 
| 3 | Треугольное |   | 
| 4 | Гауссовское |   | 
| 5 | Прямоугольное |   | 
Получившееся выражение имеет достаточно понятный вид:
Вычислительный эксперимент
Вычислительный эксперимент был проведен на реальных и модельных данных. В качестве модельных данных были взяты точки из двух нормальных распределений с разными математическими ожиданиями и дисперсиями (соответственно, были получены два класса объектов). После проведения рядка экспериментов были получены следующие результаты:
Код получения данных:
%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]
Мы видим, что при хорошо разделимых классах, наш алгоритм работает замечательно при правильно подобранном значение  и любом ядре.
Матрица параметров распределения:
V=[0 4 2 60; 5 4 2 50]
Во втором случае классы были сближены, что привело к некоторому неустранимому числу ошибок.
Матрица параметров распределения:
V=[0 4 2 60; 0 12 2 50]
В третьем случае были взяты два класса с одинаковыми математическими ожиданиями, но разными дисперсиями. Алгоритм достаточно хорошо разделил и их.
Исходный код
Скачать листинги алгоритмов можно здесь parzenclassification.m,slidingcontrol.m,fqual.m
Смотри также
Литература
- К. В. Воронцов, Лекции по линейным алгоритмам классификации
 
|   |  Данная статья является непроверенным учебным заданием.
 До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.  | 

