本次我们为大家讲解聚类分析,k-means属于无监督学习算法,无监督算法的内涵是观察无标签数据集自动发现隐藏结构和层次,在无标签数据中寻找隐藏规律。

聚类模型在数据分析当中的应用:既可以作为一个单独过程,用于寻找数据内在规律,也可以作为分类等其他分析任务的前置探索

算法原理

K-means聚类的目标,是将n个观测数据点按照一定标准划分到k个聚类中,数据点根据相似度划分。每一个聚类有一个质心,质心是对聚类中所有点的位置求平均值得到的点。每个观测点属于距离它最近的质心所代表的聚类。

模型最终会选择n个观测点到所属聚类质心距离平方和(损失函数)最小的聚类方式作为模型输出。K-means聚类分析中,特征变量需要是数值变量以便于计算距离。

我们使用距离来测量两个样本的相似性,距离的实质是他将两个具有多维特征数据的样本的比较映射成一个数字,可以通过这个数字的大小来衡量距离。

几个常见距离计算方法

  • 欧几里得距离-直线距离,不适合高维度数据,对某一维度大数值差异更加敏感;

  • 曼哈顿距离-也叫出租车距离,用来标明两个点在标准坐标系上的绝对轴距总和,只计算水平或垂直距离,对某一维度大数值差异不敏感;

  • Hamming距离-可用来测量含有分类值的向量之间的距离;

  • 余弦距离-通过计算两个向量的夹角余弦值来评估相似度,适用于结果与数据中特征的取值大小无关,而与不同特征之间比值有关的案例;

k-means的实质是每次都把质心移动到群内所有点的‘means’上,不是建立在距离这个基础上,而是建立在最小化方差和的基础上,方差恰好是欧几里得距离平方,如果采用其他距离但依然去最小化方差和,会导致整个算法无法收敛,所以k-means使用欧几里得方法。

第一步:数据归一化、离群点处理后,随机选择k个聚类质心,k的选择下一节详细讲;

第二步:所有数据点关联划分到离自己最近的质心,并以此为基础划分聚类;

第三步:将质点移动到当前划分聚类包含所有数据点的中心(means);

重复第二步、第三步n次,直到所有点到其所属聚类质心的距离平方和最小;

多次随机:

选择聚几类,则开始随机选择几个聚类质心。

基于不同随机初始质心(第一步的质心)的尝试:

尝试1:第一步→第二步→第三步 … (重复二、三步~10次)→聚类方式1

尝试2:第一步→第二步→第三步 … (重复二、三步~10次)→聚类方式2

在所有尝试结果中,选择所有点到其所属聚类质心的距离平方和(方差和)最小的聚类方式;

k值选择方法

K值的选择是k-means算法很重要的一步,K值选择方法有肘部法则、拍脑袋法、gap statistic法、轮廓系数等,本篇主要介绍肘部法则gap statistic两种常用方法。

1、肘部法则

我们可以尝试不同的K值,并将不同K值所对应的损失函数画成折线,横轴为K的取值,纵轴为距离平方和定义的损失函数,距离平方和随着K的变大而减小。当K=5时,存在一个拐点,像人的肘部一样,当k<5时,曲线极速下降,当K>5时,曲线趋于平稳,拐点即为K的最佳取值。

2、间隔统计量(gap statistic)

手肘法则是强依赖经验的方法,而gap statistic方法则不强依赖经验,只需要找到最大gap statistic 所对应的K即可,我们继续使用上面的损失函数,当分为K组时,对应的损失函数为Dk,则gap statistic定义为:

这里的E(logDk)是logDk的期望,通过蒙特卡洛模拟产生,我们在样本所在的区域内按照均匀分布随机产生和原始样本数一样多的随机样本,并对这些随机样本做k-means,得到对应的损失函数Dk,重复多次即可得出E(logDk)的近似值,从而最终可以计算gap statistic。而gap statistic取得最大值所对应的K就是最佳的分组数。

如下图所示,K=3时,Gap(K)的取值最大,所以3为K的最佳取值。

k-means数据分析实战案例

案例背景:O2O平台为了更好地为线下店面服务,增加一个增值服务,即利用自己拥有的地理位置数据为线下店面选址,数据如下:

每一条数据是一个兴趣点(POI - Point of Interest)的特征,具体指的是以这个位置为中心的500米半径圆里,各类商家/设施的数量,数据中我们隐藏掉了每个POI的具体名称、坐标、类型。选址的商家将试图从这些位置中选择一个作为下一个店面的位置。

商家想知道这40个潜在店面位置之间是否有显著的差异。我们可以将所有POI按照相似程度,划分成几个类别?

步骤:

  • 数据准备:数据获取、数据清洗、数据变换等步骤,重点是针对分析目的,进行特征选择以及特征标准化;

  • 数据建模:使用k-means算法进行数据建模;

  • 后续分析:聚类模型的特征描述分析,基于业务问题,进一步分析;

1、读取数据

2、特征选取

3、标准化

4、k值选择

5、模型建立

6、聚类分析,对每一聚类进行进一步分析和描述

根据描述分析,生成poi聚类结果画像,利用聚类,对人群/商品/行为标签进行精细划分,作为进一步商业决策的基础;

数学建模常用算法案例k—means聚类分析相关推荐

  1. 【Python数学建模常用算法代码(二)之BP神经网络】

    Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...

  2. 二维动态规划降维误差一般为多少_数学建模常用算法模型

    数学模型的分类 按模型的数学方法分: 几何模型.图论模型.微分方程模型.概率模型.最优控制模型.规划论模型.马氏链模型等 按模型的特征分: 静态模型和动态模型,确定性模型和随机模型,离散模型和连续性模 ...

  3. 数学建模常用算法汇总及python,MATLAB实现(五) —— 拟合

    拟合 比较重要的就是2.1和2.3 2.2可以浅看一下, 自己敲着试一试 就拟合部分来说, MATLAB比python强大很多, 自带cftool工具包, 并且有很多快速的函数, 个人建议使用MATL ...

  4. 【数学建模常用算法】之灰色预测模型GM

    作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] 文章目录 一.灰色预测模型GM(1,1) 1.数据检验与数据预处理 1.1 构 ...

  5. 数学建模常用算法—灰色预测

    今天数模君给大家讲解一下数学建模比赛中常用的一种预测方法:灰色预测法. 目录 模型的含义 灰色预测的原理 实例 模型的含义 灰色预测模型 ( Gray Forecast Model )是通过少量的.不 ...

  6. 数学建模常用算法—马尔可夫预测

    今天数模君带大家学习一下数学建模中的预测算法之马尔科夫预测. 目录 模型的含义 实例分析 模型的含义 马尔可夫(Markov)预测法,就是一种关于事件发生的概率预测方法.它是根据事件的目前状况来预测其 ...

  7. 数学建模常用算法汇总及python,MATLAB实现(六) —— pandas和matlab实现插值

    插值 2的拉格朗日插值用的其实比较少, 可以看一下了解一下插值的原理 主要看看3里的结论和4的实现代码 文章目录 插值 1. 定义 2.拉格朗日插值 2.1 概念 3. Rouge现象 3.1 是什么 ...

  8. 机器学习数据挖掘十大经典算法 数学建模常用算法

    国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006 (香港召开)年12月评选出了数据挖掘领域的十大经典算法.不仅 ...

  9. 【数学建模】11 数学建模常用算法和计算机辅助软件

    目录 1 常用数值计算方法 2 现代智能计算方法 2.1 分类 2.2 遗传算法 2.3 神经网络 3 科技计算软件 4 习题 1 常用数值计算方法 (1)解线性方程组的直接方法 • 高斯消去法(Ga ...

  10. 数学建模常用算法——Lingo求解数学规划问题

    什么是数学规划? 数学规划是运筹学的 ⼀个分支,其用来研究:在给定的条件下(约束条件),如何按照某 ⼀衡量指标 (目标函数)来寻求计划. 管理工作中的最优方案 . 简而言之,就是求目标函数在 ⼀定约束 ...

最新文章

  1. 设计模式的理解: 适配器模式 Adapter
  2. 正则表达式的特殊符号和字符详细解析
  3. 织梦同步静态文件到服务器,某猫织梦插件-织梦dedecms静态文件生成速度的区块插件...
  4. 给你多少钱,你才会愿意为国家生孩子?
  5. python不定参数的函数实现_python传入不定参数是什么
  6. PAT 乙级 1036. 跟奥巴马一起编程(15) Java版
  7. Word 制作三线表
  8. 【AD封装】插件电感,变压器(带3D)
  9. python面板数据分析代码_【译】用python做计量之面板数据模型
  10. 企业为什么要做微信公众号?
  11. vue 动态渲染表格序号列
  12. 雅虎邮箱,在foxmail 设置
  13. syntax sugar 2
  14. Android读取M1卡数据
  15. 【荐书】李彦宏《智能革命》:技术是时代的信仰
  16. steamvr2.0 vr模式下,多相机共存
  17. 使用Navicat导入.sql文件(适合新手)
  18. 利用elementUI里面的message做一个倒计时!简单实用
  19. web前端学习路线-20个真实web开发项目集合
  20. mysql y m d h i_php时间问题?mysql数据库的时间格式(Y-M-D H:I:S) 在PHP页面想这样显示(Y-M-D) (apos;.#36;rows[apos;ndate...

热门文章

  1. 给定任意字符串,返回所有叠字的数组
  2. 考研逻辑整理 - 概念和概念的种类
  3. java学习之路-练习题:编写一个计算速度的程序,距离时间常量。
  4. 带你学习《深入理解计算机系统》虚拟存储器(1)——虚存概念及页、页表和地址翻译基础
  5. QuartusII9.0--项目文件的新建
  6. 土地购买(bzoj 1597)
  7. 魔趣9上手体验(更新药丸版)(坚果pro2)
  8. java406错误_Springmvc报406错误(Not Acceptable)的有效解决方法
  9. android的充电线,充电线和数据线的区别
  10. 计算机sci期刊 周期短,周期短的SCI期刊有哪些