数学建模学习 day02 聚类算法

聚类任务

聚类是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。目的是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内相似性越大,组间差距越大,说明聚类效果越好。

  • 结论

    • 同类数据间相似度高
    • 不同类的数据间相似度低
  • 类别 :无监督学习
  • 目标: 将样本划分为若干个不想交的子集 物以类聚人以群分

举一个最简单的现实案例例子——google新闻,google公司每天会在互联网上爬取成千上万条新闻信息,这些爬取下来的新闻信息就相当于我们的数据集,但是新闻量是无比庞大的,我们不知道每一条新闻分属于什么类别,而聚类算法就把成千上万条新闻分成一些大类。大大提高了效率。实际上还有许多现实案例都应用到了聚类思想。

我认为影响聚类效果好坏的因素主要有两点:

  • 聚类的算法
  • 衡量距离的公式

下面介绍聚类性能度量的两大指标
注:可以直接跳到最后看K-means算法的介绍,在数学建模的时候其实我们不用了解的太透彻,只要知道相应的算法起到什么作用就可以了

1.性能度量

聚类性能度量大致有两类:

  • 外部指标:将聚类结果与某个’‘参考模型’'进行比较
  • 内部指标:直接考察聚类结果而不利用任何参考模型

1.外部指标



这么看有点头疼吧,直接用一个简单的例子来解释它
已有数据集 D: x1,x2,x3,x4,x5

2.内部指标


同样看书应该是看不懂的,举个例子

  • avg (C ) 为簇内样本平均均值
  • diam (C ) 为簇内样本最大距离
  • dmin(Ci,Cj)d_{min}(C_i,C_j)dmin​(Ci​,Cj​) 为簇Ci,CjC_i,C_jCi​,Cj​之间样本的最小距离
  • dcen(Ci,Cj){d_{cen}(C_i,C_j)}dcen​(Ci​,Cj​) 为两个簇Ci,CjC_i,C_jCi​,Cj​之间样本中心点之间距离

如下 D是已有的数据集,我们假设已经分为了三个簇


下图是书上公式的解释,通俗易懂一点

2.距离度量

距离度量需要满足四个基本的性质,见下图
这些概念都非常好理解,我们主要关注一下直递性,图中举了一个不满足直递性(现实中似乎没有遇到过) 人,人马,马之间的关系就不满足

我们把距离分为有序,无序,混合

常见的几种距离公式 – 有序

下图是对于有序数据的几种距离计算公式,闵可夫斯基距离是最常用的,其中p的不同取值对应了下面的不同距离公式

曼哈顿距离

欧氏距离

切比雪夫距离

常见的几种距离公式 – 无序


同样举一个案例
对无序的数据 r和b 颜色

常见的几种距离公式 – 混合

混合数据的举例计算很简单,就是把之前的两种相加就可以了

下面一些距离公式是在建模课上学到的

定距数据

Mahalanobis距离(马式距离)


夹角余弦距离

定序数据


定类数据


计数数据


混合型数据


上面就是一些距离的计算公式和度量方法
下面是K-means聚类算法的介绍,也是我们最常用的聚类方法

K-means 聚类算法

这种聚类方法是最普遍的,也是大家最为熟悉的,它的实现流程如下:

  1. 确定聚类的数量,并随机初始化它们各自的中心点,如图表3-1 中的(b)聚类数量为2,我在这里使用红和蓝两种颜色表示。图中的红,蓝两个叉代表了随机初始化的中心点,绿色的数据点代表并未进行分类
  2. 计算当前所有数据点与每个组中心之间的距离,将每个数据点划分为离它最近的那类中,如图表3-1 中的©原本未分类的绿点都根据距离的远近归于红蓝两类
  3. 根据上述一次迭代后的结果,计算每一类所有数据点的平均值,更新新的中心点。如图表3-1中的(d) 更新了组中心的位置
  4. 重复上述步骤,直到中心点更新变化不大或迭代次数达到你所规定的次数。 如图表3-1中的(d),(e),(f) 我们可以看到中心点的变化已经不大,因此可以确定图中的红蓝两类最终的聚类结果

    它的优点是简单、快速,对处理大数据集,该算法保持可伸缩性和高效率,在结果簇是密集的情况下,它的效果较好。
    当然,这种算法也存在着缺点,首先我们需要人为的确定聚类的簇的数量,并且因为中心点是随机生成的,因此每次运行所产生的结果都可能有偏差,这会导致结果不具有一致性。除此之外,它对噪声和孤立点的数据相对敏感。不适用于某些英应用

西瓜书案例

总的来说,就是一个迭代的过程




Pam聚类可以自己去看看

数学建模学习之聚类算法相关推荐

  1. 数学建模学习笔记——聚类模型

    一开始选择的聚类中心不一样,最后的聚类效果不同 求均值 spss默认的是k均值++的算法  K-means和K--means++无法确定k   K越大-->J越小 密度聚类

  2. 数学建模学习笔记——拟合算法

        拟合优度好,拟合曲线不一定好,也可能拟合曲线次数过高,模型过于复杂 文件--print to figure--另存为 导出设置--分辨率

  3. 【githubboy】数学建模学习资源,包含数学建模相关的算法、LaTeX 论文模板、算法思维导图

    在 GitHub 开源了数学建模学习资源,主要包含数学建模相关的竞赛优秀论文.算法.LaTeX 论文模板.算法思维导图.书籍.Matlab 教程等内容. GitHub:github.com/zhanw ...

  4. 数学建模学习笔记之评价问题聚类分析法

    数学建模学习笔记之评价问题聚类分析法 物以类聚.人以群分. 聚类分析是一个很大的概念,显然根据分类的依据不同会出现很多很多聚类的方法.例如K-Means .Sequential Leader.Mode ...

  5. 学数学建模算法对计算机的好处,数学建模中常见十种算法 (期末论文).doc

    数学建模中常见十种算法 (期末论文) 数 学 系 毕 业 论 文 论文 (设计)题目: 数学建模中常见的十种算法 姓 名 黄小芬______ 学 号 100501313 专 业 数学与应用数学 班 级 ...

  6. 数学建模学习交流论文写作课件

    数学建模学习交流论文写作课件 参考资料:数学建模清风:论文写作方法课程 https://www.bilibili.com/video/BV1Na411w7c2

  7. 数学建模学习思维导图

    数学建模学习 建模方法框架总结

  8. 数学建模学习记录——数学规划模型

    数学建模学习记录--数学规划模型 一.线性规划问题 MatLab中线性规划的标准型 MatLab中求解线性规划的命令 二.整数线性规划问题 三.非线性规划问题 MatLab中非线性规划的标准型 Mat ...

  9. 数学建模学习——回归分析

    1.多元线性回归 回归分为:解释型回归.预测型回归 解释型回归:只需知道相对重要程度 预测型回归:关注预测出来有多准 需要考虑异方差 BP检验相应的Stata命令:estat hettest,rhs, ...

  10. 【数学建模学习笔记【集训十天】之第六天】

    数模学习目录 Matplotlib 学习 Matplotlib简介 Matplotlib 散点图 运行效果如下: Matplotlib Pyplot 运行效果如下: 关于plot() 运行效果如下: ...

最新文章

  1. IBInspectable / IBDesignable
  2. HDU 1848 Fibonacci again and again
  3. ST17H26对接RC522读IC卡
  4. Can not load “libqxcb.so”
  5. 开学啦!你还焦躁吗?
  6. 数据库访问的性能问题与瓶颈问题【z】
  7. 推荐系统遇上深度学习(一)--FM模型理论和实践
  8. ntp协议原理linux网络编程,NTP协议
  9. java计算图形面积实验_java源码——计算立体图形的表面积和体积
  10. uchome持久XSS(2.0版本测试通过)
  11. UVA 473-Raucous Rockers(DP)
  12. 从零开始学习UCOSII操作系统15--总结篇
  13. 重复渐变过渡 百分比
  14. css3图片淡出淡入怎么做,css3图像淡入淡出(css3 image fadein)
  15. emoji表情 mysql转移,mysql中emoji表情存储
  16. Android动画全篇系列(二)——补间动画
  17. shell脚本中执行ssh
  18. vue中trigger用法
  19. 游戏底特律:变人Loading动画效果实现
  20. 在cmd命令中写oracle语句

热门文章

  1. 2016年360校招笔试题
  2. MySQL小数数据类型
  3. CMakeLists.txt文本编辑工具
  4. 【论文阅读】Pyramidal Convolution:Rethinking Convolutional Neural Networks for Visual Recognition
  5. html在搜索栏中加入放大镜,CSS3 搜索条动画(放大镜图标展开为长方形输入框)...
  6. 【CodeForces 767C】Garland (树形DP)
  7. excel文件打不开怎么办_移动硬盘打不开提示格式化怎么办?
  8. html 滚动条自动最底,让DIV的滚动条自动滚动到最底部 - 4种方法
  9. Fabric CA的基础知识
  10. C语言实现【小游戏——飞机大战】