【机器学习系列文章】第3部分:无监督学习

目录

聚类

k均值聚类

分层聚类

维度降低

主成分分析(PCA)

奇异值分解(SVD)

向前!

练习材料和进一步阅读


聚类和降维:k均值聚类,层次聚类,主成分分析(PCA),奇异值分解(SVD)

 

您如何找到数据集的基础结构?你如何总结它并将其分组最有用?您如何有效地以压缩格式表示数据?这些是无监督学习的目标,称为“无监督”,因为您从未标记的数据开始(没有Y)。

我们将探索的两个无监督学习任务是通过相似性将数据聚类成组,并减少维度以压缩数据,同时保持其结构和有用性。

 

无监督学习方法可能有用的示例:

  • 广告平台将美国人口划分为具有相似人口统计和购买习惯的较小群体,以便广告商可以通过相关广告到达目标市场。
  • Airbnb将其住房列表分组到社区,以便用户可以更轻松地浏览列表。 
  • 数据科学团队减少大型数据集中的维度数量,以简化建模并减小文件大小。

与监督学习相比,提出无监督学习算法的效果指标并不总是容易的。“表现”通常是主观的和特定领域的。

 

聚类

在现实世界中聚类的一个有趣例子是营销数据提供商Acxiom的生命阶段聚类系统Personicx。该服务将美国家庭划分为21个生命阶段组中的70个不同的群组,广告商在定位Facebook广告,展示广告,直接邮件广告等时使用这些群组。

精选的Personicx人口统计集群

他们的白皮书揭示了他们使用了质心聚类主成分分析,这两种技术都是本节所涉及的技术。

您可以想象,对于希望(1)了解其现有客户群并且(2)通过针对具有相关人口统计,兴趣和生活方式的潜在新客户有效使用其广告支出的广告客户来说,访问这些群集非常有用。

通过回答Acxiom的“我的群集是什么?”工具中的一些简单问题,您实际上可以找出您个人所属的群集

让我们通过几种聚类方法来开发直觉,了解如何执行此任务。

k均值聚类

“并且 k 环被赋予了Centroids的种族,他们首先渴望获得力量。”

聚类的目标是创建数据点组,使得不同聚类中的点不同,而聚类中的点是相似的。

使用k-means聚类,我们希望将数据点聚类为k个组。较大的k创建具有更多粒度的较小组,较低的k表示较大的组和较小的粒度。

算法的输出将是一组“标签”,将每个数据点分配给k个组中的一个。在k-means聚类中,定义这些组的方式是为每个组创建一个质心。质心就像群集的核心,它们“捕获”最接近它们的点并将它们添加到群集中。

把它们想象成一个出现在派对上的人,很快成为人们关注的焦点,因为它们非常具有吸引力。如果只有其中一个,每个人都会聚集在一起; 如果有很多,将形成许多较小的活动中心。

以下是k-means聚类的步骤:
1.定义k个质心。随机初始化这些(还有用于初始化质心的更高级算法,最终会更有效地收敛)。
2.找到最近的质心并更新群集分配。将每个数据点分配给k个群集中的一个。每个数据点都分配给最近的质心簇。在这里,“接近度”的度量是超参数 - 通常是欧几里德距离。
3.将质心移动到其簇的中心。每个质心的新位置计算为其簇中所有点的平均位置。
继续重复步骤2和3,直到质心在每次迭代时停止移动很多(即,直到算法收敛)。

简而言之,这就是k-means聚类的工作原理!看看这个算法的可视化 - 像漫画书一样阅读。平面中的每个点都根据每个时刻最接近的质心着色。您会注意到质心(较大的蓝色,红色和绿色圆圈)随机开始,然后快速调整以捕获各自的簇。

k-means聚类的另一个实际应用是对手写数字进行分类。假设我们将数字图像作为像素亮度的长矢量。假设图像是黑白的,是64x64像素。每个像素代表一个维度。因此,这些图像所在的世界具有64x64 = 4,096个维度。在这个4,096维世界中,k-means聚类允许我们将靠近在一起的图像分组并假设它们代表相同的数字,这可以获得非常好的数字识别结果

分层聚类

“让我们让百万选项变成七种选择。或者五个。还是二十?嗯,我们可以稍后决定。“

分层聚类类似于常规聚类,除了您的目标是构建聚类层次结构。当你想如何灵活这可能是有用很多,你最终想要的簇。例如,想象一下在像Etsy或亚马逊这样的在线市场上对项目进行分组。在主页上,您需要一些用于简单导航的大类项目,但是当您进入更具体的购物类别时,您需要增加粒度级别,即更明显的项目群集。

就算法的输出而言,除了集群分配之外,您还可以构建一个很好的树来告诉您集群之间的层次结构。然后,您可以从此树中选择所需的群集数。

以下是分层聚类的步骤:
1.从N个集群开始,每个数据点对应一个集群
2.合并彼此最接近的两个群集。 现在你有N-1个集群。
3.重新计算群集之间的距离。有几种方法可以执行此操作(有关更多详细信息,请参阅本教程)。其中之一(称为平均连锁聚类)是将两个聚类之间的距离视为所有各自成员之间的平均距离。
4.重复步骤2和3,直到获得一个N个数据点的簇。你会得到一棵树(也称为树状图),如下图所示。
5.选择多个簇并在树形图中绘制一条水平线。例如,如果你想要k = 2个簇,你应该在“距离= 20000”周围绘制一条水平线。你将得到一个带有数据点8,9,11,16的簇和一个带有其余数据点的簇。 。通常,您获得的簇的数量是水平线与树形图中垂直线的交叉点数。

资料来源:Solver.com。有关分层群集的更多详细信息,您可以查看此视频  。

维度降低

“这不是每日增加,而是每日减少。劈开不必要的东西。“ - 李小龙

维度降低看起来很像压缩。这是关于尝试降低数据的复杂性,同时保持尽可能多的相关结构。如果你拍摄一个简单的128 x 128 x 3像素图像(长x宽x RGB值),那就是49,152维数据。如果您能够在不破坏图像中太多有意义内容的情况下减少这些图像所在空间的维度,那么您在减少维数方面做得很好。

我们将看一下实践中的两种常用技术:主成分分析奇异值分解

主成分分析(PCA)

首先,一个小的线性代数复习 - 让我们谈谈空间基础

您熟悉具有原点O(0,0)和基础向量 i(1,0)和j(0,1)的坐标平面。事实证明,你可以选择一个完全不同的基础,仍然可以完成所有的数学计算。例如,您可以将O保留为原点,并选择向量i'=(2,1)和j'=(1,2)的基础。如果你有耐心,你会说服自己在i,j'坐标系中标记为(2,2)的点在i,j系统中被标记为(6,6)。

使用Mathisfun的“ 交互式笛卡尔坐标 ” 绘制图

这意味着我们可以改变空间的基础。现在想象一下更高维度的空间。比如,50K尺寸。您可以选择该空间的基础,然后仅选择该基础的200个最重要的向量。这些基础向量称为主要组件,您选择的子集构成一个新空间,其维度小于原始空间,但尽可能保持数据的复杂性。

要选择最重要的主成分,我们会查看它们捕获的数据的差异大小,并按该指标对其进行排序。

另一种思考方式是PCA重新映射我们数据所在的空间,使其更具可压缩性。变换后的尺寸小于原始尺寸。

通过仅使用重新映射空间的前几个维度,我们可以开始了解数据集的组织。这是减少维数的承诺:在保持结构(方差)的同时降低复杂性(在这种情况下为维度)。这是一篇有趣的论文 Samer写的使用PCA(和扩散映射,另一种技术)试图理解维基解密电缆版本。

奇异值分解(SVD)

让我们像大A = m x n矩阵一样表示我们的数据。SVD是一种允许我们将该大矩阵分解成3个较小矩阵的乘积的计算(U = m × r,对角矩阵Σ= r × r,并且V = r × n,其中r是小数)。

以下是该产品的更直观的说明:

r * r对角矩阵Σ中的值称为奇异值。他们很酷的是这些奇异值可以用来压缩原始矩阵。如果你删除矩阵U和V中最小的20%的奇异值和相关列,你可以节省相当多的空间,并且仍能得到基础矩阵的正确表示。

为了更准确地检查这意味着什么,让我们使用这张狗的形象:

我们将使用Andrew Gibiansky 在SVD 上发布的代码。首先,我们证明如果我们按照幅度对奇异值(矩阵Σ的值)进行排序,前50个奇异值包含整个矩阵Σ的85%。

我们可以使用这个事实来丢弃接下来的250个sigma值(即,将它们设置为0)并且只保留狗的图像的“等级50”版本。在这里,我们创建了一个排名为200,100,50,30,20,10和3的狗。显然,图片较小,但我们同意30级狗仍然很好。现在让我们看看我们用这只狗实现了多少压缩。原始图像矩阵是305 * 275 = 83,875个值。等级30狗是305 * 30 + 30 + 30 * 275 = 17,430 - 几乎是数值减少5倍,图像质量损失很小。上面计算的原因是我们还丢弃了在执行操作UΣ'V时乘以零的矩阵U和V的部分(其中Σ'是仅具有前30个值的Σ的修改版本)在里面)。

无监督学习通常用于预处理数据。通常,这意味着在将其提供给深度神经网络或其他监督学习算法之前,以与PCA或SVD类似的保留方式对其进行压缩。

向前!

现在你已经完成了这一部分,你已经获得了一个关于无监督学习的可怕,可怕,永远不会被提及的笑话。开始…

笑话人 - #1:你会不会需要使用无人监督的东西?

人在笑话 - #2:Y?没有Y.

接下来...... 第4部分:神经网络和深度学习

练习材料和进一步阅读

3a-k-means聚类

使用此聚类可视化来构建算法如何工作的直觉。然后,看一下手写数字和相关教程k-means聚类的实现

3b - SVD

关于SVD的一个很好的参考,请不要超过Andrew Gibiansky的帖子

 

原文:https://medium.com/machine-learning-for-humans/unsupervised-learning-f45587588294

 

猜你喜欢

转载自blog.csdn.net/ChenVast/article/details/82849761