k近邻和k-means

k近邻和k-means,听名称很相似,很容易张冠李戴。其实它们的全名为K近邻分类算法(k-Neighbour,KNN)和K均值聚类算法(K-means clustering algorithm)。

  1. k紧邻是一中基本的分类与回归算法,是监督学习算法,没有明显的训练学习过程。
  2. k-means是聚类算法,是无监督学习算法,有训练步骤。

k近邻

k近邻(k-neareast neighbor)的直观理解就是:给定一个训练数据集 T = { ( x i , y i ) , ⋯   , ( x n , y n ) } T = \left \{ \left ( x_{i}, y_{i} \right ), \cdots, \left ( x_{n}, y_{n} \right ) \right \} T={(xi,yi),,(xn,yn)},对于新的实例 x x x,在训练集中找到与之相邻的k个实例 N k ( x ) N_{k}\left( x\right) Nk(x),这 k k k个实例的多数属于哪一类,就把这个实例分到哪一类中。可知, k k k值的选择距离度量分类决策规则 作为k近邻的三要素。
k近邻的分类决策通常会使用多数表决法。新实例 x x x的k个最近训练实例点多数属于哪一类别,新实例 x x x就属于哪一类别。

k值的选择

k k k值是k近邻算法中的超参数。如果 k k k值过小,容易发生过拟合,输入实例对与其邻近的实例点很敏感;如果 k k k值过大,容易发生欠拟合,与输入实例距离较远的实例点也会参与到预测中,干扰预测。一般情况下,会使用交叉验证的方法取合适的 k k k值。

距离度量

我们定义特征空间中的两个实例点的距离反映两个实例点的相似程度。对于k紧邻算法,它的的特征空间一般是 n n n维实向量空间 R n \mathbb{R}^{n} Rn。假设特征空间为 χ \chi χ,为 n n n维实向量空间 R n \mathbb{R}^{n} Rn,其中有两点为 x i , x j x_{i}, x_{j} xi,xj,分别表示为 x i = ( x i 1 , ⋯   , x i n ) T , x j = ( x j 1 , ⋯   , x j n ) T x_{i} = \left ( x_{i}^{1}, \cdots, x_{i}^{n} \right )^{T}, x_{j} = \left ( x_{j}^{1}, \cdots, x_{j}^{n} \right )^{T} xi=(xi1,,xin)T,xj=(xj1,,xjn)T

L p L_{p} Lp定义为:
L p ( x i , x j ) = ( ∑ l = 1 n ∣ x i l − x j l ∣ p ) 1 p ≥ 1 L_{p}\left ( x_{i} , x_{j} \right ) = \left ( \sum_{l=1}^{n} \left | x_{i}^{l} - x_{j}^{l} \right |^{p} \right )^{\frac{1}{p}} \qquad \geq 1 Lp(xi,xj)=(l=1n xilxjl p)p11
p = 2 p=2 p=2时,就是我们常见的欧式距离(Euclidean distance):
L 2 ( x i , x j ) = ∑ l = 1 n ∣ x i l − x j l ∣ 2 L_{2}\left ( x_{i} , x_{j} \right ) = \sqrt{ \sum_{l=1}^{n} \left | x_{i}^{l} - x_{j}^{l} \right |^{2} } L2(xi,xj)=l=1n xilxjl 2
p = 1 p=1 p=1时,被称为马哈顿距离(Manhattan distance):
L 1 ( x i , x j ) = ∑ l = 1 n ∣ x i l − x j l ∣ L_{1}\left ( x_{i} , x_{j} \right ) = \sum_{l=1}^{n} \left | x_{i}^{l} - x_{j}^{l} \right | L1(xi,xj)=l=1n xilxjl
p = ∞ p=\infty p=时,为各个坐标距离的最大值
L ∞ ( x i , x j ) = m a x ∣ x i l − x j l ∣ L_{\infty}\left ( x_{i} , x_{j} \right ) = max \left | x_{i}^{l} - x_{j}^{l} \right | L(xi,xj)=max xilxjl

k-means

k-means是一种聚类算法,是无监督学习算法。假设有训练数据 T = { x i , ⋯   , x n } T = \left \{ x_{i}, \cdots,x_{n} \right \} T={xi,,xn},它将训练数据分为k组,每一组是一个簇,随机选择k个实例作为初始的聚类中心点,对于每一个实例,计算它和这k个聚类中心的距离,然后把它分配到与它距离最近的聚类中心所在的簇中去;计算每个簇中所有实例的平均值,作为新的聚类中心点,以此往复,直至聚类中心点不再发生明显变化。

k-means算法最后得到k个簇,记为 C = { C 1 , ⋯   , C k } C = \left\{ C_{1}, \cdots, C_{k}\right\} C={C1,,Ck},每个簇内的实例相似度高,不同簇中的实例相似度低。计算实例点和聚类中心点的距离一般可以使用欧氏距离。

k-means

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马鹤宁

谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值