统计学习方法——k临近模型
//2021年11月30日14点19分
//参考资料《统计学习》
//内容:k临近与一些聚类方法
========================================================================================================================
先来看KNN的概要
输入:训练集数据
$T = \{(x_1,y_1),(x_2,y_2),\ldots,(x_N,y_N)\}$
其中,$x_i\in \chi\subseteq \mathbf{R}^n$为实例的特征向量;$y_i\in \gamma =\{c_1,c_2,\ldots,c_K\}$为实例的类别,$i=1,2,\ldots,N$;实例特征向量$x$。(这里开始读的时候有点奇怪,后面发现$x$对应的是待分类的训练集数据)
也就是说对于$(x_i,y_i)$,$x$是数据(或数据的特征向量),$y$是标签。
输出:实例$x$所属的类$y$
算法:
- 根据给定距离度量,在训练集$T$中找出与$x$最邻近的$k$个点,涵盖这$k$个点的$x$的邻域记作$N_{k}(x)$;
- 在$N_{k}(x)$中根据分类决策规则(如多数表决)决定$x$的类别$y$;
$y=argmax_{c_j}{\sum_{x_i \in N_{k}(x)}I(y_i=c_j)}, \quad i=1,2,\ldots,N;j=1,2,\ldots,K$
式中,$I$为指示函数,当$y_i =c_j$时$I=1$否则为0。
**KNN没有显式的学习过程(所谓显式学习是否是力学下的显式概念?)**??这个疑问没有解决
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
然后是KNN的模型
我从算法流程中观察到KNN的几个关键要素,并大概对KNN的模型有一定认知。
训练集:
$(x,y)$
距离度量:
特征空间中的两个实例点的距离是两个实例点相似程度的反应。??(这句话绝了,高度概括了特征在聚类任务中扮演的角色。)
k邻近模型的特征空间一般是$n$维实数向量空间$\mathbf{R}^n$,一般用$L_p$距离(Minkowski distance)??(这里省略了大部分定义的内容)
$L_p(x_i,x_j)=(\sum_{l=1}^{n}|x_{i}^{(l)}-x_{j}^{(l)}|^p)^{\frac{1}{p}}$
$p=1$称为曼哈顿距离;
$p=2$称为欧式距离;
$p=\infty$是各个坐标的最大值(切比雪夫距离);??(矩阵论上划的水,现在的泪)
$k$值:
$k$值的选择对KNN结果会产生重大影响;
影响的主要评价指标是:
近似误差(approximation error):
估计误差(estimation error):
那么我们讨论$1 $k$较小时,approximation error 较小,estimation error 较大?? $k$较大时,approximation error 较大,estimation error 较小??($k$越大,被预测出现错误的概率越大。错误分为是该类的没被分到该类,不是该类的被分入该类) 到$k=N$时: 无论输入实例是什么,都将其预测为训练实例中最多的类。 **一般采用交叉验证法取一个较小的$k$值** 分类决策规则: 多数表决: 由输入实例的$k$个邻近的训练实例中多数类决定输入实例的类。 其解释为:如果分类的损失函数为0-1损失函数,分类函数为$f:\mathbf{R}^{n}\to\{c_1,c_2,\ldots,c_K\}$; 误分类概率:误分类概率=1-分对的概率;??(这还是个均匀分布) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 如上吧啦吧啦了一堆,那么KNN的实现kd树($k-dimension tree$): = ======================================================================================================================== 在倒回到“聚类方法中”,“聚类”与“KNN“到底有什么样的联系? 同样的我们有: 输入: $ X=[x_{ij}]_{m\times n}=\begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1n}\\ x_{21} & x_{22} & \cdots & x_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ x_{m1} & x_{m2} & \cdots & x_{mn} \\ \end{pmatrix}$ 从这里看到我们有$x_{1\times j}$的样本,有$x_{i\times 1}$的特征。??(如果我们输入数据可以由矩阵形式写出,相应的我们可以利用矩阵运算出$X$的聚类结果) ??(我想为什么样本是$x_{1\times j}$而不是$x_{j\times i}$。后来发现,样本是一个一个按顺序放入算法的,那从左到右排列样本符合我们的一般阅读习惯,哈哈。) 输出:实例$x$所属的类$y$ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 那么“聚类”和“KNN”哪里不一样了? 聚类有多种相似度(similarity)和距离(distance)的定义(以下举例为书中使用的例子): ①闵可夫斯基距离(上文KNN中已经讲到):$L_p(x_i,x_j)=(\sum_{l=1}^{n}|x_{i}^{(l)}-x_{j}^{(l)}|^p)^{\frac{1}{p}}$; ②马哈拉诺比斯距离: 马氏距离考虑各个分量(特征)之间的相关性并于各个特征分量的尺度无关 定义:给定一个样本集合$X$,$X=[x_{i,j}]_{m\times n}$,其协方差矩阵记作$S$。样本$x_i$与样本$x_j$之间的马氏距离$d_ij$为 $d_{ij}=[ (x_{i}-x_{j})^{T} S^{-1} (x_{i}-x_{j}) ]^{\frac{1}{2}}$ 其中,$x_{i}=(x_{1i},x_{2i},\ldots,x_{mi})^{T}$,$x_{j}=(x_{1j},x_{2j},\ldots,x_{mj})^{T}$ 当$S$为单位矩阵时,即样本数据的各个分量相互独立($j$个样本,$X$的列秩为$j$)且各个分量的方差为1(这里应该讲的是standardized eucildean distance)时,马氏距离就是欧式距离,所以马氏距离是欧式距离的推广。 这里就要问一句为什么马氏距离是这样设计的???(这里先挖坑,后面填) ③相关系数(correlation coeffcient): 相关系数的绝对值越接近1,表示样本越相似,以此也可以作为聚类的标准。 定义:样本$x_i$与样本$x_j$之间的相关系数定义为 $ r_{ij}=\frac{\sum_{k=1}^{m}(x_{ki}-\overline{x}_{i})(x_{kj}-\overline{x}_{j})}{[\sum_{k=1}^{m}(x_{ki}-\overline{x}_{i})^{2}\sum_{k=1}^{m}(x_{kj}-\overline{x}_{j})^{2}]} $??(这里公式有点小) 其中,$\overline{x}_i=\frac{1}{m}\sum_{k=1}^{m}x_{ki}$,$\overline{x}_{j}=\frac{1}{m}\sum_{k=1}^{m}x_{kj}$。??(求均值) ④夹角余弦(cosine): 夹角余弦越接近于1,表示样本越相似。 定义:样本$x_i$与样本$x_{j}$之间的夹角余弦定义为 $s_{ij}=\frac{\sum_{k=1}^{m}x_{ki}x_{kj}}{[\sum_{k=1}^{m}x^{2}_{ki}\sum_{k=1}^{m}x^{2}_{kj}]^{\frac{1}{2}}}$ **总结一下上文提到的距离或者相似度度量,发现选用何种度量方式和特征向量长啥样直接相关** -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- “聚类”的“类”或者“簇” 通过聚类得到的类或者簇,本质是样本的子集。 假定一个样本属于一个类,或类的交集属于空集??(此为硬聚类 hard clustering) 一个样本属于多个类,或类的交集不为空集??(此为软聚类 soft clustering) 书中只讲述了硬聚类的方法。 用$G$表示类或者簇(cluster),用$x_i$,$x_j$表示类中样本,用$n_G$表示$G$中样本的个数,用$d_{ij}$表示样本$x_{i}$与$x_{j}$之间的距离。 现给出几个常见定义 定义1:设$T$为给定的整数,若集合$G$中任意两个样本$x_{i}$,$x_{j}$,有 ??(翻译翻译就是距离小于$T$的都是一类或者簇) $d_{ij}\leq T$ 则称$G$为一个类或者簇。 定义2:使$T$为给定的正数,若对集合$G$的任意样本$x_{i}$,一定存在$G$中的另一个样本$x_{j}$,使得 ??(翻译翻译就是只要有数据且$i>1$那就能聚出一类或簇)??(存在定理?) $d_{ij}\leq T$ 则称$G$为一个类或簇。 定义3:设$T$为给定的整数,若对集合$G$中任意一个样本$x_{i}$,$G$中的另一个样本$x_j$,使得 ??(翻译翻译就是距离度量均值小于$T$的都是一类或簇) $\frac{1}{n_{G}-1} \sum_{x_{j}\in {G} } d_{ij}\in T$ 其中$n_{G}$为$G$中样本的个数,则称$G$为一个类或者簇。 定义4:设$T$和$V$为给定的两个正数,如果集合$G$中任意两个样本$x_{i}$,$x_{j}$的距离$d_ij$满足 ??(翻译翻译就是这是按数据特征向量的部分元素聚类) $\frac{1}{n_{G}(n_{G}-1)} \sum_{x_{j}\in {G} } \sum_{x_{j}\in {G}} d_{ij}\in T$ $d_{ij}\leq V$ 则称$G$为一个类或者簇 **定义1可推广得其他定义** **不难看出定义4是定义3的严格版本** 对于“类”的特征还有以下一些刻画 ①类的均值$\overline{x}_G$,又称类的中心 $\overline{x}_{G}=\frac{1}{n_G}\sum_{i=1}^{n_G}x_i$ ②类的直径(diameter)$D_G$ $D_G=\underset{x_{i},x_{i}\in G}{max}d_{ij}$ ③类的样本散布矩阵$A_G$(scatter matrix) $A_{G}=\sum_{i=1}^{n_G}(x_{i}-\overline{x}_{G})(x_{i}-\overline{x}_{G})^{T}$ ④类的样本协方差矩阵$S_G$(covariance matrix) $S_G =\frac{1}{n_{G}-1}A_{G} =\frac{1}{n_{G}-1}\sum_{i=1}^{n_G}(x_{i}-\overline{x}_{G})^{T}$ 类与类之间也存在距离 如果有一数据$G$中两个类$G_p$和$G_q$,他们之间的距离表示为$D(p,q)$,也称其为链接(linkage)。 设类$G_p$包含$n_p$个样本,$G_q$包含$n_q$个样本,分别用$\overline{x}_p$和$\overline{x}_q$表示$G_p$和$G_q$的均值(类的中心) ①最短距离(单链接 single linkage):$D_{pq}=min\{d_{ij}|x_{i}\in G_{p},x_{j}\in G_{q}\}$ ②最长距离(完全链接 complete linkage):$D_{pq}=max\{d_{ij}|x_{i}\in G_{p},x_{j}\in G_{q}\}$ ③中心距离:$D_{pq}=d_{\overline{x}_{p}\overline{x}_{q}}$ ④平均距离:$D_{pq}=\frac{1}{n_{p}n_{q}}\sum_{x_{i}\in G_{p}}\sum_{x_{j}\in G_{q}}d_{ij}$ ======================================================================================================================== 到此,我们返回聚类的几种方式 首先是层次聚类的两种方式: ①聚合(agglomerative)$\to$自下而上(bottom-up)??(以下聚类方法均为聚合式) ③分裂(divisive)$\to$自上而下(top-down) 这种分类方式假设的是数据有层次结构,他是一种hard clustering。 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 聚合聚类的流程是: 因此可以观察到,聚合聚类需要确定一些超参数:Ⅰ聚类距离或相似度量。Ⅱ合并规则。Ⅲ停止条件c。 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- k均值聚类 模型: $n$个样本的集合$X=\{x_{1},x_{2},\ldots,x_{n}\}$,每个样本由一个特征向量表示,特征向量的维数假设为$m$,k均值聚类的目标是将$n$个样本分到$k$个不同类中; 设$k 用$C$表示划分,一个划分对应一个聚类结果。即类$l\in \{1,2,\ldots,k\}$,样本$i\in \{1,2,\ldots,n\}$。 策略: for $i=1\ldots j$
将每个样本各自分到一个类;??($j$个样本有$j$个类)
距离相近的两个类合并成为一个新类;
if $i=c$
$return 0;