用Python进行无监督学习的几种最热门的聚类算法

无监督学习是机器学习技术中的一类,用于发现数据中的模式。本文介绍用Python进行无监督学习的几种聚类算法,包括K-Means聚类、分层聚类、t-SNE聚类、DBSCAN聚类等。

无监督学习是机器学习技术中的一类,用于发现数据中的模式。无监督算法的数据没有标注,这意味着只提供输入变量(X),没有相应的输出变量。在无监督学习中,算法自己去发现数据中有意义的结构。

Facebook首席AI科学家Yan Lecun解释说,无监督学习——即教机器自己学习,不需要明确地告诉它们所做的每一件事情是对还是错,是“真正的”AI的关键。

监督学习 VS 无监督学习

在监督学习中,系统试图从之前给出的例子中学习。反之,在无监督学习中,系统试图从给出的例子中直接找到模式。因此,如果数据集有标记,那么它是有监督问题,如果数据集无标记,那么它是一个无监督问题。

用Python进行无监督学习的几种最热门的聚类算法

如上图,左边是监督学习的例子; 我们使用回归技术来寻找特征之间的最佳拟合线。而在无监督学习中,输入是基于特征分离的,预测则取决于它属于哪个聚类(cluster)。

重要术语

  • 特征(Feature):用于进行预测的输入变量。
  • 预测(Predictions):当提供一个输入示例时,模型的输出。
  • 示例(Example):数据集的一行。一个示例包含一个或多个特征,可能有标签。
  • 标签(Label):特征的结果。

为无监督学习做准备

在本文中,我们使用Iris数据集(鸢尾花卉数据集)来进行我们的第一次预测。该数据集包含150条记录的一组数据,有5个属性——花瓣长度,花瓣宽度,萼片长度,萼片宽度和类别。三个类别分别是Iris Setosa(山鸢尾),Iris Virginica(维吉尼亚鸢尾)和Iris Versicolor(变色鸢尾)。对于我们的无监督算法,我们给出鸢尾花的这四个特征,并预测它属于哪一类。我们在Python中使用sklearn Library来加载Iris数据集,并使用matplotlib来进行数据可视化。以下是代码片段。

用Python进行无监督学习的几种最热门的聚类算法
用Python进行无监督学习的几种最热门的聚类算法
用Python进行无监督学习的几种最热门的聚类算法

紫罗兰色:山鸢尾,绿色:维吉尼亚鸢尾,黄色:变色鸢尾

聚类(Clustering)

在聚类中,数据被分成几个组。简单地说,其目的是将具有相似特征的组分开,并将它们组成聚类。

可视化示例:

用Python进行无监督学习的几种最热门的聚类算法

在上图中,左边的图像是未完成分类的原始数据,右边的图像是聚类的(根据数据的特征对数据进行分类)。当给出要预测的输入时,就会根据它的特征在它所属的聚类中进行检查,并做出预测。

Python中的K-Means聚类

K-Means是一种迭代聚类算法,它的目的是在每次迭代中找到局部最大值。首先,选择所需数量的聚类。由于我们已经知道涉及3个类,因此我们通过将参数“n_clusters”传递到K-Means模型中,将数据分组为3个类。

现在,随机将三个点(输入)分成三个聚类。基于每个点之间的质心距离,下一个给定的输入被分为所需的聚类。然后,重新计算所有聚类的质心。

聚类的每个质心是特征值的集合,定义生成的组。检查质心特征权重可以定性地解释每个聚类代表什么类型的组。

我们从sklearn库导入K-Means模型,拟合特征并进行预测。

Python中的K Means实现:

用Python进行无监督学习的几种最热门的聚类算法
用Python进行无监督学习的几种最热门的聚类算法

分层聚类

顾名思义,分层聚类是一种构建聚类层次结构的算法。该算法从分配给它们自己的一个cluster的所有数据开始,然后将最近的两个cluster加入同一个cluster。最后,当只剩下一个cluster时,算法结束。

分层聚类的完成可以使用树状图来表示。下面是一个分层聚类的例子。 数据集可以在这里找到:https://raw.githubusercontent.com/vihar/unsupervised-learning-with-python/master/seeds-less-rows.csv

Python中的分层聚类实现:

用Python进行无监督学习的几种最热门的聚类算法
用Python进行无监督学习的几种最热门的聚类算法

K Means聚类与分层聚类的区别

  • 分层聚类不能很好地处理大数据,但K Means聚类可以。因为K Means的时间复杂度是线性的,即O(n),而分层聚类的时间复杂度是二次的,即O(n2)。
  • 在K Means聚类中,当我们从聚类的任意选择开始时,多次运行算法产生的结果可能会有所不同。不过结果可以在分层聚类中重现。
  • 当聚类的形状是超球形时(如2D中的圆形,3D中的球形),K Means聚类更好。
  • K-Means聚类不允许嘈杂的数据,而在分层聚类中,可以直接使用嘈杂的数据集进行聚类。

t-SNE聚类

t-SNE聚类是用于可视化的无监督学习方法之一。t-SNE表示t分布的随机近邻嵌入。它将高维空间映射到可以可视化的2或3维空间。

具体而言,它通过二维点或三维点对每个高维对象进行建模,使得相似的对象由附近的点建模,而不相似的对象很大概率由远离的点建模。

Python中的t-SNE聚类实现,数据集是Iris数据集:

用Python进行无监督学习的几种最热门的聚类算法
用Python进行无监督学习的几种最热门的聚类算法

这里Iris数据集具有四个特征(4d),它被变换并以二维图形表示。类似地,t-SNE模型可以应用于具有n个特征的数据集。

DBSCAN聚类

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种流行的聚类算法,用作预测分析中 K-means的替代。它不要求输入聚类的数值才能运行。但作为交换,你必须调整其他两个参数。

scikit-learn实现提供了eps和min_samples参数的默认值,但这些参数通常需要调整。eps参数是在同一邻域中考虑的两个数据点之间的最大距离。min_samples参数是被认为是聚类的邻域中的数据点的最小量。

Python中的DBSCAN聚类:

用Python进行无监督学习的几种最热门的聚类算法
用Python进行无监督学习的几种最热门的聚类算法

更多无监督技术:

  • 主成分分析(PCA)
  • 异常检测(Anomaly detection)
  • 自动编码(Autoencoders)
  • 深度置信网络(Deep Belief Nets)
  • Hebbian Learning
  • 生成对抗网络(GAN)
  • 自组织映射(Self-Organizing maps)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • 聚类算法 前面介绍的集中算法都是属于有监督机器学习方法,这章和前面不同,介绍无监督学习算法,也就是聚类算法。在无监...
    飘涯阅读 41,162评论 3 52
  • 写在之前 因简书导入公式很麻烦,如果想获得更好的观看体验请移步https://www.zybuluo.com/ha...
    hainingwyx阅读 6,792评论 2 13
  • 本篇结构 简介 聚类算法的分类 K-Means聚类算法 DBSCAN聚类算法 本篇介绍了聚类算法的种类,重点关注K...
    w1992wishes阅读 7,339评论 0 14
  • 大家早安、午安、晚安哈,继续学习机器学习算法,接下来几篇均是无监督学习算法。今天首先学习K-means(K-均值)...
    keepStriving阅读 5,889评论 0 7
  • 早上跟凤兰去参加“有间杂货店”的发布会,在现场听A师的音频,还是有些小激动。在练习过程中从对方身上看到了自己...
    郑清文阅读 55评论 0 2