机器学习算法实践 K均值聚类的实用技巧

简介:

Bilal Mahmood:我们最常做的分析之一,便是在数据中提取模式。 比方说,某公司的客户可被划分入哪些细分市场? 我们如何在用户网络中找到特定群体的聚类?

通过机器学习的方式,我们可以得到这些问题的答案。 即使当我们不知道需要查找哪些特定数据段,亦或我们的数据格式是非结构化数据,我们都可以有这么一种技术手段,在算法上,分析出数据中合理的数据模式,合适的数据段和分类结果。

在本文中,我们将会详细介绍一种算法,K-Means Clustering(K均值聚类),包括如何衡量其效果,以及如何确定我们要生成的数据段集数量。

监督VS无监督学习

  机器学习算法实践 K均值聚类的实用技巧

在数据分类领域里,有两种有效的机器学习方式。

通过监督学习,如果你搞清楚哪些输入能映射到哪些离散数据段,便可以对结果的分类做预测。 但在许多情况下,实际上不会有这些预定义好的标签,而只有非结构化数据——根本没有定义好的数据段。这时,您可能就需要借助无监督学习,从未标记的数据中推理出目标数据段。

为了更清楚一些,我们以分类T恤尺寸为例

如果我们拿到如图1A所示数据集,我们将有一组宽度(X1)和长度(X2)的输入,以及他们对应的T恤衫尺寸(S(蓝色)L(绿色)) 。 在这种情况下,我们就可以通过监督学习的技术,如逻辑回归,来绘制一个明确的决策边界,并分离出各类T恤。

但如果我们得到一个如图1B所示的数据集,我们得到一组宽度(X1)和长度(X2)的输入,但没有对应的T恤衫尺寸标签。 在这种情况下,我们就需要使用K均值聚类等无监督式学习技术,来找到相似的T恤衫,并将它们聚集到小(蓝色圆圈)和大(绿色圆圈)的各个类中。

在现实世界的许多应用中,你将面临如图2A所示的情况,因此搞明白如何从非结构化的数据中提取出结构,会有很大的用处。

K均值聚类 机器学习算法实践 K均值聚类的实用技巧

K均值聚类给无监督机器学习提供了一个非常直观的应用,在非结构化的数据中归纳出结构,

K均值聚类,正如其名,会将您的数据中相似的观察结果,分配到同组簇中。 它包括4个简单重复的步骤,迭代地评估对每个观察值有最近(平均)距离的簇。 因此,如果一组观察结果彼此接近,它们可能属于一组簇。

让我们逐步细细了解该算法。 第一步,随机初始化一组聚类中心(上面图2A中的X),或者说,是各组簇的中心。在开始之前,你可以将这些聚类中心设置在任何地方,但我们建议,在你对其初始化的时候,用与你设定的观察值相匹配的随机点。您将依次利用这些类中心,来对你的观察值进行分组,将那些与类中心平均距离最近的观察值(图2B中的蓝色和绿色圆圈)确定一个聚类归属。

该步骤会将数据初始化成几组簇,将你的数据中与类中心最接近的观察值聚集到一起。 但是这些第一次分配后的数据簇,可能不是十分合适的。 所以下一步,你会将你的聚类好的数据簇移动到一个更接近,更合适的位置。即在每个当前已有的各个簇中 找到它们的平均观察值,然后你的聚类中心移动到该位置来(图2C)。 然后,以新的聚类中心为基准,找到的平均距离最近的观察值,并将其分配到新的簇(图2D)

您可以重复进行此过程:簇分配-查找平均距离-移动聚类中心,直到达到收敛。 一旦你找到了一组簇,而且其中所有的观察值都能找到最接近的聚类中心,那就不需要再继续评估最近的平均距离和移动了。 那些分组在一起的观察值将被聚类,这样的话它们可以在输入中共享相似性(如由它们对同一聚类中心所表现出的接近度),你也为你的数据找到了一组合适的聚类方式。

你使用了多少组簇?

机器学习算法实践 K均值聚类的实用技巧

K均值聚类是一种有效的方法,可以为你的数据找到一个良好的聚类方式。 但仍然有一个问题,一开始你如何决定要使用多少组簇?

当你不清楚非结构化数据集的标签或者分类时,需要无监督学习的方式(如K均值聚类)来辅助。 因此,数据本身不会告诉你,簇的正确数量(或标签)是多少。

那么,你该如何衡量自己数据用多少组簇呢? 最简单的方法是利用测量簇的误差,具体如下:

机器学习算法实践 K均值聚类的实用技巧

此函数通过比较观察值(X)与其指定的聚类中心(μ)之间的距离来评估簇的误差。 如果每个对应的聚类中心均呈现最低距离,或者最低总体误差最低,那么这些聚类中心就是与数据最符合的聚类结果。

回到我们T恤衫尺寸的示例,我们如何使用该误差函数来确定正确的簇的数目? 一种方法是“肘部法则”,如上图3所示。 通过绘制数据相对于你初始化的簇的数量的误差,你可以发现误差变化率最尖锐的点。 图3中似乎是在两个簇的地方,表明我们应该可能去划分为小和大两种。

雷锋网提醒,该方法需要注意:通常在你的误差曲线中没有明显的拐点。 因此,不可能总是使用肘部法则来确定合适数量的簇。

在这种情况下,建议依靠你的直觉或者待解决的问题的上下文。 例如,在T恤尺寸案例中,你可能很清楚你想将T恤分为5种尺寸 - 超小型,小型,中型,大型和超大型。但这并不是数据给你提示清楚的,但基于你的直觉,你可以初始化为五个簇数量,并得到合适的聚类。

总而言之,对于到一个聚类问题,K均值聚类提供了一种可迭代的并且有效的算法来发掘数据中的结构。





本文作者:AI研习社
本文转自雷锋网禁止二次转载, 原文链接
目录
相关文章
|
2天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机(SVM)算法
【5月更文挑战第6天】在数据科学和人工智能的广阔天地中,支持向量机(SVM)以其强大的分类能力与理论深度成为机器学习领域中的一个闪亮的星。本文将深入探讨SVM的核心原理、关键特性以及实际应用案例,为读者提供一个清晰的视角来理解这一高级算法,并展示如何利用SVM解决实际问题。
20 7
|
2天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的支持向量机算法
【5月更文挑战第6天】 在数据科学和人工智能领域,支持向量机(SVM)是一种强大的监督学习模型,它凭借其出色的分类能力在众多机器学习任务中占据重要地位。本文旨在深入剖析支持向量机的工作原理,探讨其在高维数据处理中的优势以及面对大规模数据集时的应对策略。通过对核技巧、软间隔以及优化问题的讨论,我们将揭示SVM如何优雅地处理线性不可分问题,并保持模型的泛化性能。
|
5天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
7天前
|
机器学习/深度学习 人工智能 算法
【Python 机器学习专栏】强化学习在游戏 AI 中的实践
【4月更文挑战第30天】强化学习在游戏AI中展现巨大潜力,通过与环境交互和奖励信号学习最优策略。适应性强,能自主探索,挖掘出惊人策略。应用包括策略、动作和竞速游戏,如AlphaGo。Python是实现强化学习的常用工具。尽管面临训练时间长和环境复杂性等挑战,但未来强化学习将与其他技术融合,推动游戏AI发展,创造更智能的游戏体验。
|
7天前
|
机器学习/深度学习 算法 数据可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
Matlab决策树、模糊C-均值聚类算法分析高校教师职称学历评分可视化
|
7天前
|
机器学习/深度学习 运维 算法
【Python机器学习专栏】异常检测算法在Python中的实践
【4月更文挑战第30天】本文介绍了异常检测的重要性和在不同领域的应用,如欺诈检测和网络安全。文章概述了四种常见异常检测算法:基于统计、距离、密度和模型的方法。在Python实践中,使用scikit-learn库展示了如何实现这些算法,包括正态分布拟合、K-means聚类、局部异常因子(LOF)和孤立森林(Isolation Forest)。通过计算概率密度、距离、LOF值和数据点的平均路径长度来识别异常值。
|
7天前
|
机器学习/深度学习 数据可视化 算法
【Python机器学习专栏】t-SNE算法在数据可视化中的应用
【4月更文挑战第30天】t-SNE算法是用于高维数据可视化的非线性降维技术,通过最小化Kullback-Leibler散度在低维空间保持数据点间关系。其特点包括:高维到二维/三维映射、保留局部结构、无需预定义簇数量,但计算成本高。Python中可使用`scikit-learn`的`TSNE`类实现,结合`matplotlib`进行可视化。尽管计算昂贵,t-SNE在揭示复杂数据集结构上极具价值。
|
7天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】关联规则学习:Apriori算法详解
【4月更文挑战第30天】Apriori算法是一种用于关联规则学习的经典算法,尤其适用于购物篮分析,以发现商品间的购买关联。该算法基于支持度和置信度指标,通过迭代生成频繁项集并提取满足阈值的规则。Python中可借助mlxtend库实现Apriori,例如处理购物篮数据,设置支持度和置信度阈值,找出相关规则。
|
17天前
|
机器学习/深度学习 人工智能 算法
基于DCT和扩频的音频水印嵌入提取算法matlab仿真
本文介绍了结合DCT和扩频技术的音频水印算法,用于在不降低音质的情况下嵌入版权信息。在matlab2022a中实现,算法利用DCT进行频域处理,通过扩频增强水印的隐蔽性和抗攻击性。核心程序展示了水印的嵌入与提取过程,包括DCT变换、水印扩频及反变换步骤。该方法有效且专业,未来研究将侧重于提高实用性和安全性。
|
4天前
|
存储 算法
m基于LDPC编译码的matlab误码率仿真,对比SP,MS,NMS以及OMS四种译码算法
MATLAB 2022a仿真实现了LDPC译码算法比较,包括Sum-Product (SP),Min-Sum (MS),Normalized Min-Sum (NMS)和Offset Min-Sum (OMS)。四种算法在不同通信场景有各自优势:SP最准确但计算复杂度高;MS计算复杂度最低但性能略逊;NMS通过归一化提升低SNR性能;OMS引入偏置优化高SNR表现。适用于资源有限或高性能需求的场景。提供的MATLAB代码用于仿真并绘制不同SNR下的误码率曲线。
144 3