机器学习二之K近邻
K近邻原理
K近邻工作机制:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个邻居的信息来进行预测。通常在分类任务中可使用投票法,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用平均法,即将k个样本的实际输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或者加权投票,距离越近的样本权重越大。
K近邻学习关键流程
- 把一个物体表示成向量
- 标记好每个物体的标签
- 计算两个物体之间的距离/相似度
- 选择合适的K
距离/相似度计算
常用的距离计算方法有,欧氏距离,马氏距离,曼哈顿距离,切比雪夫距离等。
欧氏距离:在二维和三维空间中的欧式距离的就是两点之间的距离。不失一般性,在n维空间中,两点之间的欧氏距离表示如下
d
=
∑
i
=
1
n
(
x
i
1
−
x
i
2
)
2
d=\sqrt{\sum_{i=1}^{n} \left ( x_{i1} -x_{i2}\right ) ^2}
d=i=1∑n(xi1−xi2)2
马氏距离:表示数据的协方差距离,是一种有效的计算两个未知样本集的相似度的方法。在n维空间中,两点之间的马氏距离可以写成
d
=
(
X
1
−
X
2
)
T
S
−
1
(
X
1
−
X
2
)
d=\sqrt{(X_{1}-X_{2})^{T}S^{-1}(X_{1}-X_{2})}
d=(X1−X2)TS−1(X1−X2)
上
式
中
,
S
−
1
为
n
×
n
的
协
方
差
矩
阵
上式中,S^{-1}为n×n的协方差矩阵
上式中,S−1为n×n的协方差矩阵
曼哈顿距离:标明两个点在标准坐标系上的绝对轴距总和。在n维空间中,两点间的曼哈顿距离可以写成
d
=
∑
i
=
1
n
∣
x
i
1
−
x
i
2
∣
d=\sum_{i=1}^{n}|x_{i1}-x_{i2}|
d=i=1∑n∣xi1−xi2∣
切比雪夫距离:各坐标数值差绝对值的最大值。在n维空间中,两点之间的切比雪夫距离可以写成
d
=
m
a
x
∣
x
i
1
−
x
i
2
∣
,
i
=
1
,
2...
,
n
d=max|x_{i1}-x_{i2}|, i=1,2...,n
d=max∣xi1−xi2∣,i=1,2...,n
闵可夫斯基距离:是一组距离集合,在n维空间中,两点之间的闵可夫斯基距离可以写成
d
=
∑
i
=
1
n
(
x
i
1
−
x
i
2
)
p
p
d=\sqrt[p]{\sum_{i=1}^{n} \left ( x_{i1} -x_{i2}\right ) ^p}
d=pi=1∑n(xi1−xi2)p
当p为1时,该式为曼哈顿距离;p为2时,该式为欧氏距离;当p为无穷大时,该式的极限为切比雪夫距离。
核化距离 在距离计算时加入二阶,三阶,高斯等核函数
KNN常见问题问答
如何选择KNN的超参数: K是KNN算法的超参数,随着K的增大,KNN算法的类别划分曲线变得平滑。K的值可以通过交叉验证的方法来选择,对于其它的机器学习算法超参数选择同样可以用 交叉验证方法。
如何处理大量数据: 使用K-D tree方法,类似哈希算法(LSH)
如何处理特征之间的相关性: 使用马氏距离,利用 large margin loss 方法学习马氏距离公式中协方差矩阵S。
如何处理样本的重要性: 对距离加权,距离近的权重大。加权方法如下
w
(
X
,
X
i
)
=
e
x
p
(
−
λ
∣
X
−
X
i
∣
2
2
)
w(X,X_{i})=exp(-\lambda|X-X_{i}|_{2}^{2})
w(X,Xi)=exp(−λ∣X−Xi∣22)
P
(
y
∣
X
)
=
∑
i
=
1
n
w
(
X
,
X
i
)
δ
(
y
,
y
i
)
∑
i
=
1
n
w
(
X
,
X
i
)
P(y|X)=\frac{\sum_{i=1}^{n}w(X,X_{i})\delta (y,y_{i})}{\sum_{i=1}^{n}w(X,X_{i})}
P(y∣X)=∑i=1nw(X,Xi)∑i=1nw(X,Xi)δ(y,yi)
δ
(
y
,
y
i
)
=
{
1
0
y
=
y
i
y
≠
y
i
\delta(y,y_{i})=\left\{\begin{matrix} 1\\ 0\end{matrix}\right. \begin{matrix} y=y_{i}\\ y\neq y_{i}\end{matrix}
δ(y,yi)={10y=yiy̸=yi