K近邻算法
K近邻算法思想:在一定区域内,根据待测样本周围最近的邻居样本,基于统计的方式预测待测样本类别。
实例
根据下图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。也就是说,现在,我们不知道中间那个绿色的数据是从属于哪一类(蓝色小正方形或者红色小三角形),下面,我们就要解决这个问题:给这个绿色的圆分类。
选定区域,对类别进行判断:
①如果K=3,绿色圆点最近的3个邻居是2个红色小三⻆角形和1个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。
②如果K=5,绿色圆点的最近5个邻居是2个红色三角形和3个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色这个待分类点属于蓝色的正方形一类。
算法
输入:训练数据集T = (x1, y1), (x2, y2), · · ·,(xN , yN)
其中,Xi是实例的特征向量,Yi是实例标签,待测样本向量为x
输出:x的预测标签y
步骤:
①根据给定的距离度量,在训练集T中找出与x最邻近的k个点,涵盖这k个点的x领域记作
N
k
(
x
)
N_k(x)
Nk(x);
②在
N
k
(
x
)
N_k(x)
Nk(x)中根据分类决策规则(如多数表决)决定x的类别y :
y
=
a
r
g
m
a
x
∑
c
j
I
(
y
i
=
c
i
)
,
i
=
1
,
2
,
⋯
,
N
;
j
=
1
,
2
,
⋯
,
K
y=argmax\sum_{c_j}I(y_i=c_i),i=1,2,\cdots,N;j=1,2,\cdots,K
y=argmax∑cjI(yi=ci),i=1,2,⋯,N;j=1,2,⋯,K;
其中I为指示函数,
y
i
=
c
i
y_i=c_i
yi=ci时为1,否则为0。
K近邻模型
在K近邻模型中,分类决策规则大多采用多数表决的方式。待确定的,包括样本间的距离度量方法和参数K的选择。
距离度量
①欧式距离(常用):
②曼哈顿距离:
③切比雪夫距离:
④余弦距离:
k值选择
常用较小的数值。通常采用交叉验证法选取最优的K值(常低于训练样本数的平方根)。
优缺点
优点
①适合对稀有事件进行分类;
②适合多分类问题。
缺点
①内存消耗大(要扫描全部训练集,开销较大);
②不适用数据不均衡的数据集;