0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何找出数据集的基础结构?如何聚类和建立最有效的分组?

zhKF_jqr_AI 来源:未知 作者:李倩 2018-06-30 09:50 次阅读

如何找出数据集的基础结构?如何聚类和建立最有效的分组?如何在压缩格式后有效地表达数据?这些都是无监督学习的目标。它是“无监督”的——因为你是从未经标记的数据开始的(没有Y)。

在这篇文章中,我们要探讨的无监督学习任务主要有两个,一是通过相似性把数据聚类成组,二是以降低维度的方式压缩数据,同时保持其结构和可用性。

无监督学习可能涉及的场景:

某广告平台把美国消费者细分为有类似购物习惯的较小群体,以便更精准地向他们投放广告;

Airbnb将根据社区对住房列表进行分组,以便用户能更简便地进行查询;

数据科学研究团队降低大型数据集的维度,以简化模型和控制文件大小。

与监督学习相比,我们无法提前预测无监督学习算法的具体效果,它的“表现”往往是主观的,只面向特定领域。

聚类

在现实世界中,聚类的一个典型案例是市场数据提供商Acxiom的系统Personicx,它把美国家庭分为21个生活水平群体,又在其下细分出79类不同群组。也许这看起来并没有多大用处,但对于广告商来说,这些数据成了他们在Facebook上确定广告投放地区、时间段的重要依据。

Personicx人口聚类

在白皮书中,Acxiom称系统使用的聚类方法是质心聚类和主成分分析,之后我们会对它们做简要介绍。

你可以想象,这些数据精准地切合了广告商的需求。对于迫切希望通过推送广告来达到立竿见影效果的广告商而言,他们重视的内容有两个:一是了解目标消费者的群体大小;二是通过针对消费者的人口统计特征,如兴趣爱好和生活方式,挖掘潜在的新客户。

Acxiom有一个名为“我的聚类是什么”的小工具,只需回答几个简单问题,你就能知道算法对你的分类

让我们先从聚类算法开始,慢慢了解他们是怎么做的。

k-means聚类

聚类是一种涉及数据点分组的机器学习技术。给定一组数据点,我们可以用聚类算法将每个数据点到分类到图像中的特定组中。理论上,同一组中的数据点应具有相似的属性和特征,而不同组中的数据点的属性和特征则应高度不同。

通过k-means算法,我们能把目标数据点聚类为k个簇。k值越大,簇越少,每一簇包含的数据点就越多;k值越小,簇越多,每一簇包含的数据点就越少。

该算法的输出是一堆打好了“标签”的数据点,每个标签指向数据点所属的k簇。进行聚类时,算法会根据k值为数据定义k个聚类质心点,这些质心就像是每个簇的核心,它们不断“捕捉”最接近自己的点并把它们添加进聚类中。

如果这还不够形象,那你也可以把它们想成派对舞会上出现的那些充满魅力的人,他们瞬间就能引起身边人的关注。如果这样的人只有一个,那全场人都会聚集在他身边;如果有很多个,那舞会上就会形成许多较小的活动团体。

以下是k-means聚类的简要步骤:

1. 定义k个质心。随机初始化k个质心;

2. 为质心找到最接近它的数据点并构建簇。将每个数据点分配给k个质心中的一个,分配依据是数据点和质心的接近程度,也就是欧氏距离平方和最小。

3. 更新质心位置,将它移到更新后簇的中心。计算簇中所有点的平均位置,这个得出的新向量就是质心的新位置。

k-means聚类的一个实际应用是对手写数字进行分类。假设我们有一些黑白的数字图像,图像的像素为64 × 64,每个像素代表一个维度,那么这些图像就有64 × 64 = 4,096个维度。在这个4,096维的空间中,k-means算法能把所有聚集紧密的像素点聚类成一个簇,假设它们同属于一个数字。实践证明,这种做法在数字识别上取得了非常好的结果。

层次聚类

层次聚类和常规的聚类算法大体相似,它的不同之处在于它聚类的簇具有层次结构。这对于一些有不同灵活性需求的任务来说很有用,如想象一下Amazon的网上商城,它的主页上有很多分组的商品,通过导航栏,我们能找到目标商品所属的大类,之后再是更细分的、更具体的小类。对于一些项目集群,像这样逐层提高数据颗粒密度是有价值的。

就算法的输出而言,除了聚类成各个子集,层次聚类的一个优点是可以呈现一整棵树,并由你自行选择要聚类成什么效果,比如簇的数量。

以下是参差聚类的简要步骤:

1. 定义N个簇,每个簇包含1个数据点;

2. 合并彼此最接近的两个簇,现在我们就有N-1个簇;

3. 重新计算各簇之间的距离。对于计算距离,我们有多种方法,其中一种是将两个簇之间的距离视为他们各自数据点之间的平均距离。

4. 重复步骤2和3,直到最后获得一个包含所有数据点的簇。这时我们得到了一棵树,如下图所示。

5. 选取多个簇并在树状图上绘制一条水平线。例:如果我们想要k = 2个簇,那就应该在distance = 20000的位置画一条线,这时我们就能得到一个包含数据点8、9、11、16的簇以及另一个簇。簇的数量等于水平线和树状图的交点数。

降维

降维听起来和压缩差不多。它是为了尽量减少数据的复杂性,同时保持尽可能多的相关结构。如果我们有一张128 × 128 × 3的图像(长×宽×RGB),它的数据维度就是49,152。这时,如果我们能在不破坏图象原有内容的前提下降低图像所在空间的维度,这对于后续计算是十分有帮助的。

让我们先通过实践看看两种用于降维的主要方法:主成分分析和奇异值分解。

主成分分析(PCA)

在开始讲解前,我们先来做一个线性代数小复习——向量空间和基。

在一个普通的平面坐标中,原点O是(0, 0),基向量i为(1, 0),j为(0, 1)。但事实证明,我们可以选择一个完全不同的基,比如把i'=(2, 1)和j'=(1, 2)作为基向量,这就成了另一个坐标系。如果你有耐心,你可以计算出原来iOj坐标系上的(2, 2)到i'Oj'上会变成(6, 6)。

这样做的意义在于我们能改变向量空间的基,想象更高维的空间,比如5万维。选择一个基,挑选出其中最重要的200个基向量,我们把这些向量称之为“主成分”。这之后,你挑出的向量子集就能构成一个新的向量空间,它的维度比原来的更低,但保留了大部分数据复杂性。

选择最重要的主成分,考察它保留了多少差异性,然后按照这个指标进行排序。

PCA的另一个用处在于降低数据文件大小。经过重新映射后,原本的数据空间会被压缩至低维,更有利于之后的计算。

扩展阅读:Diffusion Mapping and PCA on the WikiLeaks Cable Database

地址:http://mou3amalet.com/cargocollective/675_xuesabri-final.pdf

奇异值分解(SVD)

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

以下是一个直观的例子。

r*r对角矩阵Σ中的值被称为奇异值。它们的神奇之处在于可以用来压缩原始矩阵。如果我们在原始矩阵U和V中删除最小的20%奇异值的相关列,矩阵会缩小很多,但仍能很好地表示底层矩阵。为了更准确地展示它的效果,我们可以来看看这条狗:

首先,如果我们按照量级对奇异值(矩阵Σ的值)进行排序,则前50个奇异值包含整个矩阵Σ85%的量值。

因此我们可以把矩阵Σ中剩下的250个值舍去,也就是设置为0,获得一个“rank 50”的版本。在下图中,我们分别列举了200、100、50、30、20、10和3的狗,可以看出,随着图片空间逐渐变小,它的清晰度也不断下降,但就肉眼的观察情况看,“rank 30”的图像还是表现出了很多接近原图的特征。我们可以计算这一过程中算法压缩了多少空间:原始图像矩阵有305 × 275 = 83,875个值;“rank 30”的狗则只有305 × 30 + 30 + 30 × 275 = 17,430个值(要算上矩阵U和V乘以0的量)——几乎是原图的五分之一。

实战演练和进阶阅读

k-means聚类

尝试可视化聚类过程,以建立对算法工作原理更直观的理解。你也可以参考用k-means聚类手写数字的开源项目,并学习坐着列出的各类在线教程。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 聚类
    +关注

    关注

    0

    文章

    146

    浏览量

    14168
  • K-means
    +关注

    关注

    0

    文章

    28

    浏览量

    11225
  • 数据集
    +关注

    关注

    4

    文章

    1178

    浏览量

    24351

原文标题:《Machine Learning for Humans》第五章:无监督学习

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于模糊表征的音频例子检索及相关反馈

    避免先前基于例子的音频检索要按照监督机制训练不同类别的复杂的音频模板,直接从原始音频流中提取压缩域特征,使用时空约束机制进行压缩域特征的模糊,用结果的质心来表征整个音频例子,基
    发表于 03-06 22:10

    【中级】labview每日一教【11.24】视频最有效数据表达

    背后所隐含的信息,但是相比数组来说,方波就变得更为直观;今天就让我们来学习如何实现最有效数据表达labview如何实现最有效数据表达[hide] [/hide]labview如何实
    发表于 11-24 09:26

    FCM算法以及改进模糊算法用于医学图像分割的matlab源程序

    FCM算法以及改进模糊算法用于医学图像分割的matlab源程序
    发表于 05-11 23:54

    建立开发和测试(总结)

    • 被选择作为开发和测试数据,应当与你未来计划获取并对其进行良好处理的数据有着相同的分布,而不一定和训练
    发表于 12-14 10:56

    请教51用的算法

    在一个数组中使用算法找出重复出现的数组元素,然后使用其他字符表示,达到减少储存空间的作用,有哪位大哥做过相关的项目吗?希望可以赐教一下或者有偿提供服务也可以!
    发表于 03-09 23:07

    三种算法学习

    KMeans理论与算法实现
    发表于 03-12 07:02

    LDA主题学习总结

    LDA主题学习小结
    发表于 06-01 10:29

    Python如何实现模糊动态

    利用Python实现模糊动态
    发表于 06-02 17:38

    电源纹波抑制和减少的最有效的方式

    来源:互联网说到纹波,我们一直想做到抑制或减少它。但是理想化和实际中还是存在一定差距,在一定的环境下纹波是存在的。下面我们知晓下电源纹波抑制和减少的最有效的方式!
    发表于 10-22 20:49

    基于OTT/MDT大数据特征分析

    )和孤立的采样点(采样点样本少或无簇特征)认为不具有特征,优先进行清洗;    图6:基于GPS特征的采样点清洗和基于特征的小区信
    发表于 12-03 14:53

    ESD如何选择最有效的保护方案?

    ESD波形是什么ESD方面所需考虑因素ESD如何选择最有效的保护方案
    发表于 04-08 06:07

    K均值算法的MATLAB怎么实现?

    什么是K-均值法?K均值算法的MATLAB怎么实现?
    发表于 06-10 10:01

    Mahout 0.9中的(Clustering)工具的用法

    什么是Mahout?怎样去使用Mahout 0.9中的(Clustering)工具?
    发表于 09-23 07:30

    一个benchmark实现大规模数据上的OOD检测

    %。如下图,随着类别数量的增加,利用MSP检测的性能下降的也非常快。很少有研究大规模环境下的OOD检测,评价和有效性都很有限。但是我们当然希望能够在大规模数据上取得不错的效果,并设立一套完整的评价体系来
    发表于 08-31 15:11

    最有效防电脑辐射方法有哪些?

    最有效防电脑辐射方法有哪些?      第一招:在电脑旁放上几盆仙人掌,它可以有效地吸收辐射;   第二招:还对
    发表于 02-23 15:29 449次阅读