机器学习算法—KMEANS算法原理及阿里云PAI平台算法模块参数说明

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 阿里云PAI平台提供了大量已经封装完成可以直接使用的机器学习算法模块,本文说明KMEANS算法的原理并在原理的基础上说明PAI平台KMEANS模块中参数设置的意义,根据原理介绍算法的优点和缺点

概述:

KMEANS算法又被成为K均值算法,是一种常用的聚类算法,由于不需要根据给定的训练集训练模型因此是一种无监督学习算法。其本质是根据选定的参数K将数据分类成K类,在聚类过程中从单一样本开始通过不断计算聚类数据的均值来作为整个类的中心进而再将距离此类别中心最近的数据纳入同一类。

算法原理:

1、以下图样本散点图展示数据集的整体分布情况
KM001.png
2、K值是KMEANS最重要的选择参数,直接决定着数据聚类的类别数量,在选择K值后,会在数据中随机选择K个数据样本最为初始中心点,如K=3,则结果如下图所示
KM002.png
3、计算和中心点距离最近的点,将其归入同类
KM003.png
4、每个类别当有了两个以上的数据时,类的中心就会发生变化,因此类中一旦有新的数据被划入时就需要重新计算整个类的中心点,这一步的计算也是整个算法的核心,所以称为K均值算法
KM004.png
5、通过几步计算之后的结果,能够更直观的展示出类的聚合情况和中心点的位置情况
KM005.png
6、判断聚类过程结束的标准有两个,一是中心点的位置不再发生变化,即结果收敛;二是执行了最够多次的迭代次数(通俗可以理解为计算了几次中心点位置)
KM006.png

注意事项:

1、K值是整个算法中最重要的参数,但是也是最不好确定的参数,如果需要比较好的确定K值,需要采用其他验证算法,如计算样本离最近聚类中心的总和,总和越小,则聚类的效果越好;轮廓系数,轮廓系数的范围为-1至1之间,数字越大则聚类效果越好;兰德指数,范围为-1至1之间,数字越大则聚类效果越好;同质化得分,如果所有的聚类都只包含属于单个类的成员的数据点则聚类结果将满足同质性,其取值范围为0至1之间,值越大意味着聚类结果与真实情况越吻合。
2、以上验证方法虽然对于确定K值有效,但是验证过程需要额外的计算力资源,并且占用的计算力接近于聚类过程所需要的计算力资源,数据集如果较大,则计算力的消耗会产生叠加效应。
3、较为简易的方法为,从数据集中随机抽取部分小规模数据,以散点图等可视化手段来观察数据的可能聚类数量,以此来判断K的取值。这种方法可以认为是经验法的一种表现形式,相比经验法的完全定性分析,随机抽取数据观察能够在经验的基础上增加定量的分析部分,虽然随机抽取的数据也可能有误差,但是抽取的数据量越多,则准确度越高。
4、因为初始的中心点选择是根据K的值随机选择K个点,所以选择的随机性加上迭代过程造成算法的结果只是局部最优解,毕竟反复的计算最短距离的点和类的中心都是在局部已经聚合的类的基础上进行的,而不是从全局的范围进行。

算法使用场景:

1、隐含类别的数据较为平衡的情况,如隐含类别的数据量差别较大,则聚类的效果就较差。
2、数据最好是凸数据,即隐含类别间的差异越大,则聚类效果越好,因为中心点不再变化所需要的迭代次数较少,比较容易收敛。
3、一般作为数据预处理,或者用于辅助分类贴标签使用,因为在已经经过分类的数据上再进行聚类,准确度会非常高。

阿里云PAI平台算法模块及参数设置说明:

inputTableName :输入表表名
selectedColNames:输入表中用于训练的列名,默认选择所有列
inputTablePartitions:输入表中指定哪些分区参与训练,默认选择所有分区
centerCount:聚类数K,是算法中最重要的参数,决定数据的聚类数量
loop:最大迭代次数,算法中非常重要的参数,当最大迭代次数到达但是仍然无法收敛时,则停止计算
accuracy:中心点计算终止条件,如果两次迭代之间变化低于该值,算法终止,默认值0.0,值过大则会出现欠拟合情况,值较小则中心点容易在小范围间变化造成计算结果无法收敛
distanceType:距离度量方式,euclidean(欧式距离),cosine(夹角余弦),cityblock(曼哈顿距离),默认为欧式距离
initCenterMethod:质心初始化方法,random(随机采样),topk(输入表前k行),uniform(均匀分布),external(指定初始质心表),默认值为随机采样
initCenterTableName:初始质心表名,当质心初始化方法采用指定初始质心表方式时采用
seed:初始随机种子数,正整数,默认值为当前时间,seed设置为固定值则每次聚类结果是稳定的
enableSparse:输入表数据是否为稀疏格式, 默认值为非稀疏格式
itemDelimiter:当输入表数据为稀疏格式时,kv间的分割符,默认值为空格
kvDelimiter:当输入表数据为稀疏格式时,key和value的分割符,默认值冒号
modelName:输出模型的模型名
idxTableName:输出聚类结果表,和输入表对应,并指明聚类后每条记录所属的类号
idxTablePartition:输出聚类结果表的分区表名
clusterCountTableName :输出聚类统计表,统计各个聚类包含的点的数目
centerTableName:输出聚类中心表
coreNum:节点个数,与参数memSizePerCore配对使用,正整数,默认自动计算
memSizePerCore :单个节点内存大小,单位M,正整数,默认自动计算
lifecycle:指定输出表的生命周期,默认没有生命周期

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
相关文章
|
17天前
|
算法 JavaScript 前端开发
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
85 1
|
21天前
|
存储 SQL 消息中间件
B端算法实践问题之设计一套实时平台能力如何解决
B端算法实践问题之设计一套实时平台能力如何解决
25 1
|
30天前
|
编解码 算法 Linux
Linux平台下RTSP|RTMP播放器如何跟python交互投递RGB数据供视觉算法分析
在对接Linux平台的RTSP播放模块时,需将播放数据同时提供给Python进行视觉算法分析。技术实现上,可在播放时通过回调函数获取视频帧数据,并以RGB32格式输出。利用`SetVideoFrameCallBackV2`接口设定缩放后的视频帧回调,以满足算法所需的分辨率。回调函数中,每收到一帧数据即保存为bitmap文件。Python端只需读取指定文件夹中的bitmap文件,即可进行视频数据的分析处理。此方案简单有效,但应注意控制输出的bitmap文件数量以避免内存占用过高。
|
1月前
|
算法 JavaScript 前端开发
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
对称加密算法解析:DES、AES及其在`pycryptodome` 和 `crypto-js` 模块中的应用
84 1
|
24天前
|
算法 搜索推荐
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
支付宝商业化广告算法问题之基于pretrain—>finetune范式的知识迁移中,finetune阶段全参数训练与部分参数训练的效果如何比较
|
29天前
|
算法
基于EM期望最大化算法的GMM模型参数估计matlab仿真
此程序在MATLAB 2022a中实现了基于EM算法的GMM参数估计,用于分析由多个高斯分布组成的混合数据。程序通过迭代优化各高斯组件的权重、均值与协方差,直至收敛,并输出迭代过程的收敛曲线及最终参数估计结果。GMM假设数据由K个高斯分布混合而成,EM算法通过E步计算样本归属概率,M步更新参数,循环迭代直至收敛。
|
2月前
|
算法 数据安全/隐私保护
基于GA遗传优化算法的Okumura-Hata信道参数估计算法matlab仿真
在MATLAB 2022a中应用遗传算法进行无线通信优化,无水印仿真展示了算法性能。遗传算法源于Holland的理论,用于全局优化,常见于参数估计,如Okumura-Hata模型的传播损耗参数。该模型适用于150 MHz至1500 MHz的频段。算法流程包括选择、交叉、变异等步骤。MATLAB代码执行迭代,计算目标值,更新种群,并计算均方根误差(RMSE)以评估拟合质量。最终结果比较了优化前后的RMSE并显示了SNR估计值。
44 7
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
|
2月前
|
机器学习/深度学习 数据采集 算法
Python实现GBDT(梯度提升树)分类模型(GradientBoostingClassifier算法)并应用网格搜索算法寻找最优参数项目实战
Python实现GBDT(梯度提升树)分类模型(GradientBoostingClassifier算法)并应用网格搜索算法寻找最优参数项目实战
|
2月前
|
机器学习/深度学习 数据采集 监控
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient
**神经网络与AI学习概览** - 探讨神经网络设计,包括MLP、RNN、CNN,激活函数如ReLU,以及隐藏层设计,强调网络结构与任务匹配。 - 参数初始化与优化涉及Xavier/He初始化,权重和偏置初始化,优化算法如SGD、Adam,针对不同场景选择。 - 学习率调整与正则化,如动态学习率、L1/L2正则化、早停法和Dropout,以改善训练和泛化。
24 0
算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、Loss Function、Bad Gradient