一、无监督学习算法


### --- 无监督学习算法

~~~ 决策树、线性和逻辑回归都是比较常用的机器学习算法,他们虽然有着不同的功能,
~~~ 但却都属于“有监督学习” 的⼀部分,
~~~ 即是说,模型在训练的时候,即需要特征矩阵X,也需要真实标签y。
~~~ 机器学习当中,还有相当⼀部分算法属于 “无监督学习” ,
~~~ 无监督的算法在训练的时候只需要特征矩阵X,不需要标签。
~~~ 无监督学习的代表算法有聚类算法、降维算法。

~~~ 聚类算法又叫做“无监督分类”,其目的是将数据划分成有意义或有用的组(或簇)。
~~~ 这种划分可以基于我们的业务需求或建模需求来完成,也可以单纯地帮助我们探索数据的自然结构和分布。
~~~     比如在商业中,如果我们手头有大量的当前和潜在客户的信息,
~~~ 我们可以使用聚类将客户划分为若干组,以便进一步分析和开展营销活动,
~~~ 最有名的客户价值判断模型RFM(Recency FrequencyMonetary),就常常和聚类分析共同使用。
~~~ 再比如,聚类可以用于降维和矢量量化(vectorquantization),
~~~ 可以将高维特征压缩到一列当中,常常用于图像,声音,视频等非结构化数据,可以大幅度压缩数据量。

~~~ # 聚类vs分类

|NO.Z.00016|——————————|BigDataEnd|——|Arithmetic&Machine.v16|——|Machine:无监督学习算法.v01|_数据|NO.Z.00016|——————————|BigDataEnd|——|Arithmetic&Machine.v16|——|Machine:无监督学习算法.v01|_聚类_02

 

聚类

分类

核心

将数据分成多个组探索每个组的数据是否有联系

从已经分组的数据中去学习把新数据放到已经分好的组中去

学习类型

无监督,无需标签进行训练

有监督,需要标签进行训练

典型算法

K-Means,DBSCAN,层次聚类,光谱聚类

决策树,贝叶斯,逻辑回归

算法输出

聚类结果是不确定的不一定总是能够反映数据的真实分类同样的聚类,根据不同的业务需求可能是⼀个好结果,也可能是⼀个坏结果

分类结果是确定的分类的优劣是客观的不是根据业务或算法需求决定

~~~     聚类算法是无监督类机器学习算法中最常用的⼀类,
~~~ 其目的是将数据划分成有意义或有用的组(也被称为簇)。
~~~ 这种划分可以基于我们的业务需求或建模需求来完成,
~~~ 也可以单纯地帮助我们探索数据的自然结构和分布。
~~~ 如果目标是划分成有意义的组,则簇应当捕获数据的自然结构。
~~~ 然而,在某种意义下,聚类分析只是解决其他问题(如数据汇总)的起点。
~~~ 无论是旨在理解还是应用,聚类分析都在广泛的领域扮演着重要角色。
~~~ 这些领域包括:心理学和其他社会科学、生物学、统计学、模式识别、信息检索、机器学习和数据挖掘。

~~~ 聚类分析在许多实际问题上都有应用,下面是⼀些具体的例⼦,
~~~ 按聚类目的是为了理解数据⾃然结构还用于数据处理来组织。
### --- K-Means算法
~~~ # K-Means的基本原理
~~~ # K-Means 是如何工作的?

~~~ # 关键概念:簇和质心
~~~ KMeans 算法将一组 N 个样本的特征矩阵 X 划分为 K 个无交集的簇,
~~~ 直观上来看是簇是一组一组聚集在一起的数据,在一个簇中的数据就认为是同一类。
~~~ 簇就是聚类的结果表现。
~~~ 簇中所有数据的均值通常被称为这个簇的“质心”(centroids)。
~~~ 在一个二维平面中,一簇数据点的质心的横坐标就是这一簇数据点的横坐标的均值,
~~~ 质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。

~~~ 在 KMeans 算法中,簇的个数 K 是一个超参数,需要我们人为输入来确定。
~~~ KMeans 的核心任务就是根据我们设定好的 K,找出 K 个最优的质心,
~~~ 并将离这些质心最近的数据分别分配到这些质心代表的簇中去。
### --- 具体过程可以总结如下:

~~~ # 创建 k 个点作为初始质心(通常是随机选择)
~~~ # 当任意一个点的簇分配结果发生改变时:
~~~ 计算质心与数据点之间的距离
~~~ 将数据点分配到据其最近的簇
~~~ # 对每个簇,计算簇中所有点的均值并将均值作为新的质心
~~~ # 直到簇不再发生变化或者达到最大迭代次数
~~~     # 那什么情况下,质心的位置会不再变化呢?

~~~ 当我们找到一个质心,在每次迭代中被分配到这个质心上的样本都是一致的,
~~~ 即每次新生成的簇都是一致的,所有的样本点都不会再从一个簇转移到另一个簇,质心就不会变化了。
~~~ 这个过程在可以由下图来显示,我们规定,将数据分为4簇(K=4),其中白色X代表质心的位置:

|NO.Z.00016|——————————|BigDataEnd|——|Arithmetic&Machine.v16|——|Machine:无监督学习算法.v01|_业务需求_03

~~~     # 在数据集下多次迭代(iteration),就会有:

|NO.Z.00016|——————————|BigDataEnd|——|Arithmetic&Machine.v16|——|Machine:无监督学习算法.v01|_业务需求_04

~~~     第六次迭代之后,基本上质心的位置就不再改变了,生成的簇也变得稳定。
~~~ 此时我们的聚类就完成了,我们可以明显看出,K-Means按照数据的分布,
~~~ 将数据聚集成了我们规定的4类,接下来我们就可以按照我们的业务需求或者算法需求,对这四类数据进行不同的处理。
### --- 簇内误差平方和的定义

~~~ 聚类算法聚出的类有什么含义呢?这些类有什么样的性质?
~~~ 我们认为,被分在同一个簇中的数据是有相似性的,而不同簇中的数据是不同的,
~~~ 当聚类完毕之后,我们就要分别去研究每个簇中的样本都有什么样的性质,
~~~ 从而根据业务需求制定不同的商业或者科技策略。

~~~ 聚类算法的目的就是追求“簇内差异小,簇外差异大”。
~~~ 而这个“差异“,由样本点到其所在簇的质心的距离来衡量。
### --- 对于一个簇来说,所有样本点到质心的距离之和越小,我们就认为这个簇中的样本越相似,
### --- 簇内差异就越小。而距离的衡量方法有多种,令:

~~~ x 表示簇中的一个样本点;
~~~ μ表示该簇中的质心;
~~~ n 表示每个样本点中的特征数目;
~~~ i 表示组成点 x 的每个特征编号;
~~~ 则该样本点到质心的距离可以由以下距离来度量:

|NO.Z.00016|——————————|BigDataEnd|——|Arithmetic&Machine.v16|——|Machine:无监督学习算法.v01|_业务需求_05|NO.Z.00016|——————————|BigDataEnd|——|Arithmetic&Machine.v16|——|Machine:无监督学习算法.v01|_聚类_06

### --- 其中,m 为一个簇中样本的个数;

~~~ j 是每个样本的编号;
~~~ 这个公式被称为簇内平方和(cluster Sum of Square),又叫做 Inertia。
~~~ 而将一个数据集中的所有簇的簇内平方和相加,
~~~ 就得到了整体平方和(Total Cluster Sum ofSquare),又叫做total inertia:

|NO.Z.00016|——————————|BigDataEnd|——|Arithmetic&Machine.v16|——|Machine:无监督学习算法.v01|_数据_07

距离质量

质心

Inertia

欧几里得距离

均值

最小化每个样本点到质心的欧式距离之和

曼哈顿距离

中位数

最小化每个样本点到质心的曼哈顿距离之和

余弦距离

均值

最小化每个样本点的质心的余弦距离之和

~~~     而这些组合,都可以由严格的数学证明来推导。
~~~ 在实际中我们往往都使用欧式距离,
~~~ 因此我们也无需去担忧这些距离所搭配的质心选择是如何得来的了。

                 


Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart

                                                                                                                                                   ——W.S.Landor