《大数据架构和算法实现之路:电商系统的技术实战》——2.3 聚类的效果评估

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

本节书摘来自华章计算机《大数据架构和算法实现之路:电商系统的技术实战》一书中的第2章,第2.3节,作者 黄 申,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 聚类的效果评估

聚类最终的目标是将相似度很高的数据对象聚集到同一个群组,而将不够相似的数据对象分隔在不同的群组。不过,在实际应用中这些相似度标准导致的结果质量是否足够高呢?是否就一定符合用户的预期呢?最为直接的衡量方法是让用户试用并给出反馈,但是这需要在访谈上耗费大量的时间和人力。与此同时,聚类本身又缺乏黄金标准这样的答案集合。

“对啊,这样听起来好像聚类没有办法做离线的评估哦。”

“也不尽然,虽然很有挑战,但是我们还是有一些迂回的方法可以尝试,这里介绍一个最为常用的外部准则(External Criterion)法。”

其实所谓的外部准则法,就是借鉴分类问题中的黄金标准和评价指标,计算聚类结果和已有标准分类的吻合程度。其基本假设是:对于每个聚出来的群组,希望其组员来自一个分类,尽量“纯净”。举个例子,我们对水果案例中的10颗水果进行聚类,2个聚类算法在结束后分别得到下面的分组。

算法A

{1, 8, 10}, {4, 7}, {2, 3, 5, 6, 9}

算法B

{1, 8}, {10}, {4, 7}, {2, 5, 6}, {3, 9}

评估之前是无法知道它们的标签的,需要评估的时候,拿出分类的标签作为参考答案,我们可以得到:

算法A

{苹果a,西瓜b,西瓜d},{甜橙a,西瓜a},{苹果b,苹果c,甜橙b,甜橙c,西瓜c}

算法B

{苹果a,西瓜b},{西瓜d},{甜橙a,西瓜a},{苹果b,甜橙b,甜橙c0},{苹果c,西瓜c}

这样就能衡量每个群组的纯度。在此之前,首先简短介绍下熵(entropy)的概念:它是用来刻画给定集合的纯度的,如果一个集合里的元素全部都属于同一个分类,那么熵就为0,表示最纯净。如果元素分布在不同的分类里,那么熵就是大于0的值,而且随着分类的增多,元素的分布就越均匀,熵值也越大,表示混乱程度越高。其计算公式如下:

screenshot

其中n表示集合中分类的数量,pi表示属于第i个分组的元素在集合中的占比。有了用于分类的训练数据,以及熵的定义,就可以计算每个聚类的纯度了。对于群组{苹果b,苹果c,甜橙b,甜橙c,西瓜c}而言,共5个对象,苹果有2个占0.4,甜橙有2个也占0.4,西瓜占剩余的0.2,其熵值约是1.52:

screenshot

由于聚类结果有多个群组,最后进行加和平均:

screenshot

那么算法A聚类的结果其最终整体的熵值为:

screenshot

算法B聚类的结果其最终整体的熵值为:

screenshot

不过,由于聚类并不会像分类那样指定类的个数,因此这种最基础的熵值评估存在一个明显的问题:它会偏向于聚出更多的群组,这样评测出的结论是算法B会优于算法A。但果真如此吗?西瓜b和d被算法A聚集了,但被算法B给拆分了。最极端的情况就是每个数据对象就是一个群组,这样全体的熵为0。但是这样并没有实际意义,因为没有产生任何的聚类效果。所以可将整体熵的计算修正为如下形式。

screenshot

这里假设聚类的划分是合理的,Entropy (C)是基于这个划分计算的熵值,如果一个算法聚出来很多细小的群组,那么Entropy (C)一定很大,会进行一个惩罚。

这样一来,算法A的Entropy (C)计算就会变成如下形式:

screenshot

算法B的Entropy (C)计算则变成如下形式:

screenshot

除了标注数据,聚类还可以借鉴分类中的评价指标,例如准确率(Accuracy)和F值(F-Measure)。不过前提是需要将聚出的群组和某个标注的分类对应起来,最基本的方法是看组员大多数属于哪个分类,然后以这个分类作为答案,将群组作为“分类的预测”。这样问题就转化成为分类的离线评估了,具体请参见之前第1章有关分类的阐述。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
5月前
|
存储 算法 数据挖掘
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
本文介绍了2023年中国高校大数据挑战赛赛题B的Python实现方法,该赛题涉及DNA存储技术中的序列聚类与比对问题,包括错误率分析、序列聚类、拷贝数分布图的绘制以及比对模型的开发。
109 2
【2023年中国高校大数据挑战赛 】赛题 B DNA 存储中的序列聚类与比对 Python实现
|
2月前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
143 4
|
5月前
|
数据采集 机器学习/深度学习 算法
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
本文通过K-Means聚类算法对NBA球员数据进行聚类分析,旨在揭示球员间的相似性和差异性,为球队管理、战术决策和球员评估提供数据支持,并通过特征工程和结果可视化深入理解球员表现和潜力。
188 1
【优秀设计案例】基于K-Means聚类算法的球员数据聚类分析设计与实现
|
5月前
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
173 1
|
2月前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
2月前
|
机器学习/深度学习 数据采集 搜索推荐
大数据与金融风控:信用评估的新标准
【10月更文挑战第31天】在数字经济时代,大数据成为金融风控的重要资源,特别是在信用评估领域。本文探讨了大数据在金融风控中的应用,包括多维度数据收集、智能数据分析、动态信用评估和个性化风控策略,以及其优势与挑战,并展望了未来的发展趋势。
|
3月前
|
算法 数据挖掘
基于粒子群优化算法的图象聚类识别matlab仿真
该程序基于粒子群优化(PSO)算法实现图像聚类识别,能识别0~9的数字图片。在MATLAB2017B环境下运行,通过特征提取、PSO优化找到最佳聚类中心,提高识别准确性。PSO模拟鸟群捕食行为,通过粒子间的协作优化搜索过程。程序包括图片读取、特征提取、聚类分析及结果展示等步骤,实现了高效的图像识别。
|
4月前
|
算法 搜索推荐 开发者
别再让复杂度拖你后腿!Python 算法设计与分析实战,教你如何精准评估与优化!
在 Python 编程中,算法的性能至关重要。本文将带您深入了解算法复杂度的概念,包括时间复杂度和空间复杂度。通过具体的例子,如冒泡排序算法 (`O(n^2)` 时间复杂度,`O(1)` 空间复杂度),我们将展示如何评估算法的性能。同时,我们还会介绍如何优化算法,例如使用 Python 的内置函数 `max` 来提高查找最大值的效率,或利用哈希表将查找时间从 `O(n)` 降至 `O(1)`。此外,还将介绍使用 `timeit` 模块等工具来评估算法性能的方法。通过不断实践,您将能更高效地优化 Python 程序。
75 4
|
5月前
|
数据采集 资源调度 算法
【数据挖掘】十大算法之K-Means K均值聚类算法
K-Means聚类算法的基本介绍,包括算法步骤、损失函数、优缺点分析以及如何优化和改进算法的方法,还提到了几种改进的K-Means算法,如K-Means++和ISODATA算法。
218 4
|
5月前
|
数据采集 自然语言处理 数据可视化
基于Python的社交媒体评论数据挖掘,使用LDA主题分析、文本聚类算法、情感分析实现
本文介绍了基于Python的社交媒体评论数据挖掘方法,使用LDA主题分析、文本聚类算法和情感分析技术,对数据进行深入分析和可视化,以揭示文本数据中的潜在主题、模式和情感倾向。
423 0