Метод k ближайших соседей (пример)
Материал из MachineLearning.
м  («Метод к ближайших соседей» переименована в «Метод k ближайших соседей (пример)»)  | 
				|||
| Строка 1: | Строка 1: | ||
| - | + | {{TOCright}}  | |
| + | Метод <tex>K</tex> ближайших соседей - это [[Метрический классификатор|метрический алгоритм классификации]], основанный на оценивании сходства объектов. Классифицируемый объект относится к тому классу, которому принадлежат ближайшие к нему объекты [[выборка|обучающей выборки]].  | ||
| + | |||
| + | == Постановка задачи ==  | ||
| + | Пусть <tex>X \in \mathbb{R}^n\</tex> - множество объектов; <tex>Y</tex> - множество допустимых ответов. Задана обучающая выборка <tex>\{(x_i,y_i)\}_{i=1}^\ell</tex>. Задано множество объектов <tex>\ X^m =\{x_i\}_{i=1}^m</tex>.  | ||
| + | |||
| + | Требуется найти множество ответов <tex>\{y_i\}_{i=1}^m</tex> для объектов <tex>\{x_i\}_{i=1}^m</tex>.  | ||
| + | |||
| + | == Алгоритм <tex>K</tex> ближайших соседей ==  | ||
| + | На множестве объектов задается некоторая функция расстояния, задаваемая пользовательской функцией  <tex>\rho(x,x').</tex> Рассматривались следующие функции (ядра): евклидова   | ||
| + | <center><tex>\rho(x,x') = \sum_{i=1}^n (x_i-x'_i)^2;</tex></center>  | ||
| + | максимум модулей  | ||
| + | <center><tex>\rho(x,x') = \max_{i} |x_i-x'_i|;</tex></center>  | ||
| + | сумма модулей  | ||
| + | <center><tex>\rho(x,x') = \sum_{i=1}^n |x_i-x'_i|.</tex></center>  | ||
| + | |||
| + | Для произвольного объекта <tex>x\in X</tex> расположим  | ||
| + | объекты обучающей выборки <tex>x_i</tex> в порядке возрастания расстояний до <tex>x</tex>:  | ||
| + | ::<tex>\rho(x,x_{1; x}) \leq  \rho(x,x_{2; x}) \leq \cdots \leq \rho(x,x_{m; x}),</tex>  | ||
| + | где через <tex>x_{i; x}</tex> обозначается   | ||
| + | тот объект обучающей выборки, который является <tex>i</tex>-м соседом объекта <tex>x</tex>.  | ||
| + | Аналогичное обозначение введём и для ответа на <tex>i</tex>-м соседе:  | ||
| + | <tex>y_{i; x}</tex>.  | ||
| + | |||
| + | Таким образом, произвольный объект <tex>x</tex> порождает свою перенумерацию выборки.  | ||
| + | В наиболее общем виде [[алгоритм]] ближайших соседей есть  | ||
| + | ::<tex>a(x) = \mathrm{arg}\max_{y\in Y} \sum_{i=1}^m \bigl[ x_{i; x}=y \bigr] w(i,x),</tex>  | ||
| + | где <tex>w(i,x)</tex> — заданная ''весовая функция'',  | ||
| + | которая оценивает степень важности <tex>i</tex>-го соседа для классификации объекта <tex>u</tex>.  | ||
| + | |||
| + | В рассматриваемом примере <tex>w(i,x) = [i\leq k] ,</tex> что соответствует методу <tex>k</tex> ближайших соседей.  | ||
| + | |||
| + | === Алгоритм отыскания оптимальных параметров ===  | ||
| + | Оптимальные значения параметра <tex>K</tex> определяют по критерию скользящего контроля с исключением объектов по одному:  | ||
| + | <tex>(k^{*}) = \arg{ } \max_{k}\ LOO(k;X^\ell\),</tex> где  | ||
| + | <tex>LOO(k;X^\ell\)= \sum_{i=1}^l\[y_i = a(x_i;X^l \setminus x_i;k)].  </tex>  | ||
| + | |||
| + | == Вычислительный эксперимент ==  | ||
| + | Показана работа алгоритма в серии задач, основанных как на реальных, так и на модельных данных.  | ||
| + | |||
| + | === Пример 1 ===  | ||
| + | Рассмотрим пример на модельных данных. Выборка состоит из трех классов, которые являются гауссовскими рапределением с диагональными матрицами ковариации.  | ||
| + | <source lang="matlab">  | ||
| + | function demo_KMeans()  | ||
| + | %% Set parameters   | ||
| + | %generating 3 sample normal classes  | ||
| + | N = 100;   | ||
| + | % 1st class contains N objects  | ||
| + | alpha = 1.5; % 2nd class contains alpha*N ones  | ||
| + | sig2 = 1; % assume 2nd class has the same variance as the 1st  | ||
| + | dist2 = 4; % distance from the 1st class  | ||
| + | |||
| + | % parameters for the 3rd class  | ||
| + | beta = 1.3;  | ||
| + | sig3 = 1.5;  | ||
| + | dist3 = 3;  | ||
| + | %  | ||
| + | % % later we move this piece of code in a separate file  | ||
| + | % X - coordinates of educational sequence  | ||
| + | % y - classes of elements in educatioanal sequence  | ||
| + | [X, y] = loadModelData3(N, alpha, sig2, dist2, beta, sig3, dist3);  | ||
| + | |||
| + | %% Section title   | ||
| + | %  | ||
| + | % idx* - indexes of class * in X  | ||
| + | idx1 = find(y == 0); % object indices for the 1st class  | ||
| + | idx2 = find(y == 1);  | ||
| + | idx3 = find(y == 2);  | ||
| + | |||
| + | minErrors=0;  | ||
| + | %% Main calculations  | ||
| + | funcNorm = 'normEuc';  | ||
| + | CalcAndPlot('normEuc', X, y, idx1,idx2,idx3)  | ||
| + | |||
| + | funcNorm = 'normMax';  | ||
| + | CalcAndPlot('normMax', X, y, idx1,idx2,idx3)  | ||
| + | |||
| + | funcNorm = 'normAbs';  | ||
| + | CalcAndPlot('normAbs', X, y, idx1,idx2,idx3)  | ||
| + | |||
| + | end  | ||
| + | |||
| + | function CalcAndPlot(funcNorm, X, y, idx1,idx2,idx3)  | ||
| + | % RR - indexes of ordered educ. seq.  | ||
| + | RR=GetBigIndices4(X, funcNorm);  | ||
| + | % Kopt - optimal parameter for method  | ||
| + | [Kopt,minErrors] = GetK3(RR,y)   | ||
| + | % draw results:  | ||
| + | |||
| + | PlotClassification4(X,y,Kopt,idx1,idx2,idx3, funcNorm,minErrors)  | ||
| + | end  | ||
| + | </source>  | ||
| + | |||
| + | [[Изображение:KNN_ex.png|800px]]  | ||
| + | |||
| + | |||
| + | На графике по осям отложены величины признаков объектов, различные классы показаны крестиками различных цветов, а результат классификации показан разделительными линиями различных цветов.  | ||
| + | |||
| + | === Пример на реальных данных: ирисы ===  | ||
| + | Проведем проверку алгоритма на классической задаче: [http://archive.ics.uci.edu/ml/datasets/Iris Ирисы Фишера]  | ||
| + | Объектами являются три типа ирисов: [http://ru.wikipedia.org/wiki/%D0%98%D1%80%D0%B8%D1%81_%D1%89%D0%B5%D1%82%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%8B%D0%B9 setosa], [http://en.wikipedia.org/wiki/Iris_versicolor versicolor], [http://en.wikipedia.org/wiki/Claytonia_virginica virginica]  | ||
| + | |||
| + | [[Изображение:setosa.jpg|275px]]   | ||
| + | [[Изображение:versicolor.jpg|275px]]   | ||
| + | [[Изображение:virginica.jpg|275px]]   | ||
| + | |||
| + | У каждого объекта есть четыре признака: длина лепестка, ширина лепестка, длина чашелистика, ширина чашелистика.  | ||
| + | Для удобства визуализации результатов будем использовать первые два признака.  | ||
| + | В качестве обучающей и контрольной выборок выбрано по 25 представителей каждого из типов ирисов.  | ||
| + | <source lang="matlab">  | ||
| + | function xxx = PlotIris()  | ||
| + | load 'iris.txt'  | ||
| + | X = iris;  | ||
| + | y=[zeros(50,1);ones(50,1);2*ones(50,1)];  | ||
| + | idx1 = find(y == 0); % object indices for the 1st class  | ||
| + | idx2 = find(y == 1);  | ||
| + | idx3 = find(y == 2);  | ||
| + | CalcAndPlot('normEuc', X, y, idx1,idx2,idx3)  | ||
| + | |||
| + | CalcAndPlot('normMax', X, y, idx1,idx2,idx3)  | ||
| + | |||
| + | CalcAndPlot('normAbs', X, y, idx1,idx2,idx3)  | ||
| + | |||
| + | end  | ||
| + | |||
| + | function CalcAndPlot(funcNorm, X, y, idx1,idx2,idx3)  | ||
| + | % RR - indexes of ordered educ. seq.  | ||
| + | RR=GetBigIndices4(X, funcNorm);  | ||
| + | % Kopt - optimal parameter for method  | ||
| + | [Kopt,minErrors] = GetK3(RR,y)   | ||
| + | % draw results:  | ||
| + | |||
| + | PlotClassification4(X,y,Kopt,idx1,idx2,idx3, funcNorm,minErrors)  | ||
| + | end  | ||
| + | |||
| + | </source>  | ||
| + | [[Изображение:Irisx.png|500px]]  | ||
| + | |||
| + | На графике различные классы показаны крестиками различных цветов, а результат классификации показан разделительными линиями различных цветов. Алгоритм хорошо классифицировал ирисы.  | ||
| + | |||
| + | == Исходный код ==  | ||
| + | Скачать листинги алгоритмов можно здесь [http://mlalgorithms.svn.sourceforge.net/viewvc/mlalgorithms/KMeansFunc/ ].  | ||
| + | |||
| + | == Смотри также ==  | ||
| + | * [[Метрический классификатор]]  | ||
| + | * [[Метод ближайших соседей]]  | ||
| + | * [[Скользящий контроль]]  | ||
| + | |||
| + | == Литература ==   | ||
| + | * К. В. Воронцов, Лекции по метрическим алгоритмам классификации  | ||
| + | * Bishop C. - Pattern Recognition and Machine Learning. Springer. 2006.  | ||
| + | * Abidin, T. and Perrizo, W. SMART-TV: A Fast and Scalable Nearest Neighbor Based Classifier for Data Mining. Proceedings of ACM SAC-06, Dijon, France, April 23-27, 2006. ACM Press, New York, NY, pp.536-540  | ||
| + | * Wang, H. and Bell, D. Extended k-Nearest Neighbours Based on Evidence Theory. The Computer Journal, Vol. 47 (6) Nov. 2004, pp. 662-672.  | ||
| + | * Yu, K. and Ji, L. Karyotyping of Comparative Genomic Hybridization Human Metaphases Using Kernel Nearest-Neighbor Algorithm, Cytometry 2002.  | ||
| + | * Domeniconi, C., and Yan, B. On Error Correlation and Accuracy of Nearest Neighbor Ensemble Classifiers. Proceedings of the SIAM International Conference on Data Mining, Newport Beach, California, April 21-23, 2005  | ||
| + | * UCI Machine Learning Repository, available on line at the University of California,Irvine http://www.ics.uci.edu/~mlearn/MLSum mary.html  | ||
| + | {{Задание|Литвинов Игорь|В.В. Стрижов|16 июня 2009}}  | ||
Версия 20:47, 19 июня 2009
 
  | 
Метод  ближайших соседей - это метрический алгоритм классификации, основанный на оценивании сходства объектов. Классифицируемый объект относится к тому классу, которому принадлежат ближайшие к нему объекты обучающей выборки.
Постановка задачи
Пусть  - множество объектов; 
 - множество допустимых ответов. Задана обучающая выборка 
. Задано множество объектов 
.
Требуется найти множество ответов  для объектов 
.
  Алгоритм 
 ближайших соседей 
На множестве объектов задается некоторая функция расстояния, задаваемая пользовательской функцией   Рассматривались следующие функции (ядра): евклидова 
максимум модулей
сумма модулей
Для произвольного объекта  расположим
объекты обучающей выборки 
 в порядке возрастания расстояний до 
:
где через  обозначается 
тот объект обучающей выборки, который является 
-м соседом объекта 
.
Аналогичное обозначение введём и для ответа на 
-м соседе:
.
Таким образом, произвольный объект  порождает свою перенумерацию выборки.
В наиболее общем виде алгоритм ближайших соседей есть
где  — заданная весовая функция,
которая оценивает степень важности 
-го соседа для классификации объекта 
.
В рассматриваемом примере  что соответствует методу 
 ближайших соседей.
Алгоритм отыскания оптимальных параметров
Оптимальные значения параметра  определяют по критерию скользящего контроля с исключением объектов по одному:
 где
Вычислительный эксперимент
Показана работа алгоритма в серии задач, основанных как на реальных, так и на модельных данных.
Пример 1
Рассмотрим пример на модельных данных. Выборка состоит из трех классов, которые являются гауссовскими рапределением с диагональными матрицами ковариации.
function demo_KMeans() %% Set parameters %generating 3 sample normal classes N = 100; % 1st class contains N objects alpha = 1.5; % 2nd class contains alpha*N ones sig2 = 1; % assume 2nd class has the same variance as the 1st dist2 = 4; % distance from the 1st class % parameters for the 3rd class beta = 1.3; sig3 = 1.5; dist3 = 3; % % % later we move this piece of code in a separate file % X - coordinates of educational sequence % y - classes of elements in educatioanal sequence [X, y] = loadModelData3(N, alpha, sig2, dist2, beta, sig3, dist3); %% Section title % % idx* - indexes of class * in X idx1 = find(y == 0); % object indices for the 1st class idx2 = find(y == 1); idx3 = find(y == 2); minErrors=0; %% Main calculations funcNorm = 'normEuc'; CalcAndPlot('normEuc', X, y, idx1,idx2,idx3) funcNorm = 'normMax'; CalcAndPlot('normMax', X, y, idx1,idx2,idx3) funcNorm = 'normAbs'; CalcAndPlot('normAbs', X, y, idx1,idx2,idx3) end function CalcAndPlot(funcNorm, X, y, idx1,idx2,idx3) % RR - indexes of ordered educ. seq. RR=GetBigIndices4(X, funcNorm); % Kopt - optimal parameter for method [Kopt,minErrors] = GetK3(RR,y) % draw results: PlotClassification4(X,y,Kopt,idx1,idx2,idx3, funcNorm,minErrors) end
На графике по осям отложены величины признаков объектов, различные классы показаны крестиками различных цветов, а результат классификации показан разделительными линиями различных цветов.
Пример на реальных данных: ирисы
Проведем проверку алгоритма на классической задаче: Ирисы Фишера Объектами являются три типа ирисов: setosa, versicolor, virginica
У каждого объекта есть четыре признака: длина лепестка, ширина лепестка, длина чашелистика, ширина чашелистика. Для удобства визуализации результатов будем использовать первые два признака. В качестве обучающей и контрольной выборок выбрано по 25 представителей каждого из типов ирисов.
function xxx = PlotIris() load 'iris.txt' X = iris; y=[zeros(50,1);ones(50,1);2*ones(50,1)]; idx1 = find(y == 0); % object indices for the 1st class idx2 = find(y == 1); idx3 = find(y == 2); CalcAndPlot('normEuc', X, y, idx1,idx2,idx3) CalcAndPlot('normMax', X, y, idx1,idx2,idx3) CalcAndPlot('normAbs', X, y, idx1,idx2,idx3) end function CalcAndPlot(funcNorm, X, y, idx1,idx2,idx3) % RR - indexes of ordered educ. seq. RR=GetBigIndices4(X, funcNorm); % Kopt - optimal parameter for method [Kopt,minErrors] = GetK3(RR,y) % draw results: PlotClassification4(X,y,Kopt,idx1,idx2,idx3, funcNorm,minErrors) end
На графике различные классы показаны крестиками различных цветов, а результат классификации показан разделительными линиями различных цветов. Алгоритм хорошо классифицировал ирисы.
Исходный код
Скачать листинги алгоритмов можно здесь [1].
Смотри также
Литература
- К. В. Воронцов, Лекции по метрическим алгоритмам классификации
 - Bishop C. - Pattern Recognition and Machine Learning. Springer. 2006.
 - Abidin, T. and Perrizo, W. SMART-TV: A Fast and Scalable Nearest Neighbor Based Classifier for Data Mining. Proceedings of ACM SAC-06, Dijon, France, April 23-27, 2006. ACM Press, New York, NY, pp.536-540
 - Wang, H. and Bell, D. Extended k-Nearest Neighbours Based on Evidence Theory. The Computer Journal, Vol. 47 (6) Nov. 2004, pp. 662-672.
 - Yu, K. and Ji, L. Karyotyping of Comparative Genomic Hybridization Human Metaphases Using Kernel Nearest-Neighbor Algorithm, Cytometry 2002.
 - Domeniconi, C., and Yan, B. On Error Correlation and Accuracy of Nearest Neighbor Ensemble Classifiers. Proceedings of the SIAM International Conference on Data Mining, Newport Beach, California, April 21-23, 2005
 - UCI Machine Learning Repository, available on line at the University of California,Irvine http://www.ics.uci.edu/~mlearn/MLSum mary.html
 
|   |  Данная статья является непроверенным учебным заданием.
 До указанного срока статья не должна редактироваться другими участниками проекта MachineLearning.ru. По его окончании любой участник вправе исправить данную статью по своему усмотрению и удалить данное предупреждение, выводимое с помощью шаблона {{Задание}}. См. также методические указания по использованию Ресурса MachineLearning.ru в учебном процессе.  | 



