任务安排
1、机器学习导论 8、核方法
2、KNN及其实现 9、稀疏表示
3、K-means聚类 10、高斯混合模型
4、主成分分析 11、嵌入学习
5、线性判别分析 12、强化学习
6、贝叶斯方法 13、PageRank
7、逻辑回归 14、深度学习
KNN及其实现
Ⅰ 分类与聚类
首先,我们先来区分下两个重要概念,分类与聚类
分类:
事先已知道数据集中包含多少种类,从而对数据集中每一样本进行分类,且所分配的标签必须包含在已知的标签集中,属于监督学习。
聚类:
将数据对象的集合分成相似的对象类(簇)的过程。使得同一类(簇)中的对象之间具有较高的相似性,而不同类(簇)中的对象具有较高的相异性,并且事先不知道数据集本身有多少类别,属于无监督学习。
正所谓,物以类聚,人以群分,对于分类和聚类的应用也大相径庭
分类应用:对一个学校的在校大学生进行性别分类,我们知道有且仅可分为“男”,“女”两类
聚类应用:对于在校大学生,同学们根据自己的兴趣爱好等因素聚成 n n n 个小团体
由此我们知道,分类与聚类:
不同点:
分类已知种类个数与类型进行区分;
聚类的种类个数与类型均未知;
共同点:
分类与聚类的类中有很高相似性,类间有很高相异性
Ⅱ 定义
KNN 算法,是数据挖掘分类技术中最简单的一种
KNN(K-NearestNeighbor),K 最近邻分类算法,K 是指最近的 K 个邻居,而测试样本可以根据这 K 个邻居的特征值来代表,KNN 算法,就是通过测量不同特征值之间的距离来实现的
★Ⅲ 算法剖析
输入:训练样本 {
x i , y i xi,yi xi,yi} i = 1 n ^{n}_{i=1} i=1n,测试样本 x x x,近邻个数 K K K,距离函数 d i s t dist dist
输出:测试样本的预测类别 y y y
1.计算测试数据与各个训练数据之间的距离;
2.按照距离的递增关系进行排序;
3.选取距离最小的 K 个点;
4.分别确定前 K 个点所在类别的出现频率;
5.返回前 K 个点中出现频率最高的类别作为测试数据的预测分类;
(老师还给了个看着挺复杂的公式)
y ← arg m a x ∑ i = 1 K δ ( y , f ( s i ) ) ( y ∈ f ( X ) y←\arg max{∑^K_{i=1}δ(y,f(si))}(_{y∈f(X)} y←argmaxi=1∑Kδ(y,f(si))(y∈f(X)
记 x x x 的 K K K 个最近邻为 S 1 、 S 2 … … S k S1、S2……Sk S1、S2……Sk
f ( X ) f(X) f(X) 是类别映射函数
脉冲函数 δ ( x , y ) δ(x,y) δ(x,y) 当且仅当 x = y x=y x=y 时取1,其他为0
通俗点理解,右边的 ∑ ∑ ∑ 函数是计数器,符合一类的+1,最终把最多的一类赋值给 y y y(即 x x x 的预测类别)
Ⅳ 距离的求法
分析了这么多,归根结底,KNN 算法的核心是求距离(即每个训练样本点与测试样本点之间的距离),下面介绍几种常见距离:
★1、欧几里得距离(Euclidean Distance):
就是我们最常见的距离求法,衡量多维空间各点之间的绝对距离
d i s t ( X , Y ) = ∑ i = 1 n ( x i − y i ) 2 dist(X,Y)=\sqrt{∑^n_{i=1}(xi-yi)^2} dist(X,Y)=i=1∑n(xi−yi)