首页 > 代码库 > 3.无监督学习简介
3.无监督学习简介
无监督学习
1.无监督学习的目标:
利用无标签的数据学习数据的分布或数据与数据之间的关系被称为无监督学习。
1.有监督学习和无监督学习的最大区别在于数据是否有标签
2.无监督学习最常应用的场景是聚类(clustering)和降维(Dimension Reduction)
2.聚类(clustering)
聚类,就是根据数据的"相似性"将数据分为多类的过程.
什么样的数据是相似的数据?以及如何定义相似性? 是很多机器学习任务的基本问题:
评估两个不同样本之间的"相似性",通常使用的方法就是计算两个样本之间的"距离"。使用不同的方法计算样本间的距离会关系到聚类结果的好坏。
下面我们简单介绍一下常用的距离计算方法:
1.欧式距离:欧式距离是最常用的一种距离度量方法,源于欧式空间中两点的距离。如下这张图展示了二维空间中,欧氏距离的计算:
所以欧式距离的计算公式为
2.曼哈顿距离: 曼哈顿距离也称作"城市街区距离",类似于在城市之中驾车行驶,从一个十字路口到另一个十字路口的距离。下面这张图展示了二维空间中,曼哈顿距离的计算方法
所以曼哈顿距离的计算公式为:
3.马氏距离 : 马氏距离表示数据的协方差距离,是一种尺度无关的度量方式。也就是说马氏距离会先将样本点的各个属性标准化,再计算样本间的距离。二维空间中的马氏距离:
在马氏距离的计算标准下,黑色点和红色点的马氏距离是大于黑色点和绿色点的马氏距离的,虽然我们是以欧式空间的距离的标准来衡量,红色点和黑色点的距离好像是 小于黑色点和绿色点的之间的距离的,
计算公式如下:
其中S是协方差矩阵;
4.夹角余弦:余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个样本差异的大小。余弦值越接近1,说明两个向量夹角越接近0度,表明两个向量越相似。
所以余弦相似度的计算公式为:
1.Sklearn vs. 聚类
scikit-learn库(简称sklearn库)提供的常用聚类算法函数包含在sklearn.cluster这个模块中,如:K-Means,近邻传播算法,DBSCAN,等。在后面的讲解中我们会通过实例具体讲解这些函数的使用方法和算法思想。
注意:以同样的数据集应用于不同的算法,可能会得到不同的结果,算法所耗费的时间也不尽相同,这是由算法的特性决定的。下图是我们调用sklearn库的标准函数对不同数据集执行的聚类结果:
我们分别使用了DBSCAN函数,近邻传播算法和谱聚类算法!
我们可以看到对这三类算法而言,在不同数据集上,他们得到的聚类结果都不是相同的,而DBSCAN是一个相对比较快速的算法,近邻传播算法所消耗的时间是相对多一点的!
2. sklearn.cluster
sklearn.cluster模块提供的各聚类算法函数可以使用不同的数据形式作为输入:
1.标准数据输入格式:
[样本个数,特征个数]定义的矩阵形式。
2.相似性矩阵输入格式:
即由【样本数目】定义的矩阵形式,矩阵中的每一个元素为两个样本的相似度,如DBSCAN,AffinityPropagation(近邻传播算法)接受这种输入。如果以余弦相似度为例,则对 角线元素全为1。矩阵中每个元素的取值范围为[0,1]
如下这个表格罗列了几个有代表性的聚类函数和他们的参数、可拓展性、相似性度量
包括有K-means,DBSCAN,高斯混合模型和布尔算法,他们的基本参数包括:聚类个数、邻域大小、还有一些其他超参,对于这几类算法而言,除了高斯混合模型,其他
三类算法都适用于大规模数据,由于高斯混合模型算法复杂度高,所以不大适合大规模数据,而高斯混合模型采用的度量方式是马氏距离,布尔算法采用的度量方式是欧式距离!
接下来我们介绍一下无监督学习的另外一个任务:将维!
3.降维:
降维,就是在保证数据所具有 代表性特性或者分布的情况下,将高维数据转化为低维数据的过程。通常可以用于:数据的可视化或者中间过程,起到精简数据,提高其他机器学习算法效率的作用!
以下这张图展示了四维的鸢尾花数据经过PCA变换在2D(Dimension)空间上的一个展示:
分类 vs .降维
聚类和分类都是无监督学习的典型任务,任务之间存在关联,比如某些高维数据的分类,可以通过降维处理更好的获得,另外学界研究也表明代表性的分类算法如k-means与降维算法如NMF之间存在等价性。
sklearn vs.降维
降维是机器学习领域的一个重要研究内容,有很多被工业界和学术界接受的典型算法,截止到目前sklearn库提供7种降维算法。
降维过程也可以被理解为对数据集的组成成份进行分解(decomposition)的过程,因此sklearn为降维模块命名为decomposition,在对降维算法调用需要使用sklearn.decomposition模块!下面我们展示了sklearn.decompsition模块下的几个常用的降维算法:包括有PCA/FastICA/NMF/LDF算法,他们的主要参数要包含所降维度和其它超参,FastICA尤其适用于超大规模数据,这些算法可以用来处理一些信息处理,图形图像特征提取,文本数据的处理等。
未来任务:在后续的讲解中我们将通过实例展示如何利用sklearn库提供的分类和降维算法解决具体问题。比如:
1.31省市居民家庭消费调查
2.学生月上网时间分布调查
3.人脸图像特征抽取
4.图像分割
3.无监督学习简介