无监督学习
无监督学习中训练集是没有标签的。它会给定一些数据或者例子。
无监督学习应用
- 学习没有标签的聚类或者群组(eg:基因分组)
- 数据分组(eg:市场客户划分)
- 图像压缩(图像都是没有标签的数据)
无监督学习分类:
建模:
对一些模型的概率或者参数的估计
- 学习翻译词典
- 学习语言语法
- 学习社交图谱
聚类
原始数据有一些特征,将这些特征提取出来,根据特征进行聚类或者分组。自然挖掘里面的关系。
eg:
- 基因图谱分析属于哪种病人
- 一堆图片放在一起找出里面哪些属于同一个人分堆
- 搜索引擎搜索结果
- 客户分类定向投放广告
- 网络图聚类
- 用于数据可视化(eg:以山形状显示出来,这一堆的特征是山的高度)
聚类的表示
- 使用一些特征来描述这堆数据
- 分析数据之间的相似性或者距离,来判断是扁平聚类还是分层聚类
- 确定聚类数:提前确认好,或者根据数据自由分组
聚类算法分类
扁平算法
- 以整个数据集中一个随机的部分开始
- 迭代优化
- 典型代表:kmeans、基于模型的聚类、谱聚类
分层算法
- 从上到下:凝聚算法
- 从下到上:分裂算法
聚类也可分为硬聚类也可分为软聚类(硬聚类中每个数据只能属于一个类,软聚类中可以属于不同的类,他会告诉你不同类的概率。)
K-均值聚类(kmeans)
1、原理和计算
从一些初始的聚类中心开始,将每个数据分配/聚类到最近的中心。再用聚类中点的平均值重新计算作为中心(不一定在点上)。重新分配以后一部分点的归属会发生变化。到某次不再发生变化,迭代结束。
这个迭代的过程中用到的聚类是硬聚类,每一次迭代的过程中只能属于某一个类。
欧氏距离:计算方法 d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x,y)=\sqrt{\sum_{i=1}^n(x_i-y_i)^2} d(x,y)=∑i=1n(xi−yi)2 ,适合空间数据,用于表示两个点之间的直线距离。【说明:这个和二维上的计算没什么区别,之所以是x,y是因为两个点 A ( x 1 , x 2 , x 3 . . . x n ) A(x_1,x_2,x_3...x_n) A(x1,x2,x3...xn)和 B ( y 1 , y 2 , y 3 . . . y n ) B(y_1,y_2,y_3...y_n) B(y1,y2,y3...yn),本质上还是同一维度的AB对应数值相减】。
也有一些不适用的情况:比如文本聚类文本中每个单词作为一个特征,值对应的是单词出现的次数,(这里面也包括一些为0的)。典型代表是葡萄酒数据(wine数据),里面的三个维度反应的是某三个词出现的次数。这时候用欧式距离是不合理的,没有实际意义。
当欧式距离不适用的时候,我们可以使用余弦相似度作为判断依据
余弦相似度(similarity):公式和余弦是一样的,(有的书里面sim是cos归成[0,1]范围内的数,公式会略微改变)【余弦计算公式就是高中数量积变换的】。
c o s = s i