以最易懂的人话讲分类和聚类算法(建议分享)

今天在使用聚类方法进行客户价值分析时遇到了个问题,将我卡住了半个小时,实际上现在想来是一个很简单的问题,但是大家都知道,一个人脑子短路时就是会一个小学数学题也做不出来。

但是虽然简单,在知乎或者是csdn上我也没有找到合适的答案,后面正在我想放弃自己挣扎放下面子问同事时,突然就灯泡就亮了。

于是我决定要和大家分享一下。

我做的是一个将客户按照价值分成几个群体的简单任务,需要将客户分成几个群体后画出下面这样的雷达图,然后进行分析

我们先来分析一下这样的图怎样做,雷达图的制作在前面的文章中我已经讲过怎样实现。还不知道的请自行阅读

我们接着讲,要做这样的雷达图,我们首先就要先用聚类方法将数据样本聚类成合适的几个类,那聚成几个类呢?答案是不知道。实际上,对于聚类这个事情,要聚几个类比较合适我们是不知道的,我们在进行聚类之前都是不能够确定的,但是根据经验,聚类一般在3到10个类是比较合适的,不要觉得是我只是短浅了。你可以去找相关书籍来看,里面也会讲,只能根据经验来大致确定。因为对于对于聚类这个词来讲,本身就带了很多的不确定性。

比如一个班级有100人,你能预估他们最终能分成几个小的团体吗?当然了,你可能说能,反正这个团体数一定在1到100之间,哈哈,我信。

实际上前面都是废话,今天我想跟大家聊聊什么是分类和聚类

聚类(clustering)和分类(classification)

“物以类聚,人以群分”,世界上的一切物质一定属于某个类别。这也是面向对象编程的设计思想。(对于什么是面向对象编程。不知道的朋友,翔宇推荐知乎一下或者查看我后面有没有相关文章,写这篇文章的现在是没有的哈,如果大家想看就在评论区留言,我后面会更新。)

知识储备:

分类(classification)

我们接着讲聚类,大家如果学习过一点机器学习的知识,应该就知道分类这个词。或者没有学过也没有关系。这个概念很简单。分类,顾名思义就是将东西分类。比如,我们班有100个人,然后他们每个人知道自己的身高,(假设身高大于1.78cm的属于高个子,1.60cm到1.78cm的属于中等个子,低于1.60cm的属于小个子),既然他们都知道自己的身高,就知道自己属于哪个类别。然后我们问全班同学都分别是属于哪个类别,现在,我们将数据统计一下就知道了到底每个类别有多少人。在机器学习中这就叫做分类。

可能就有同学问了,这样不是是个人就会吗?学什么机器学习,这不是扯犊子吗?没错,这样的事情确实是个人就会做,但是机器它不是人啊。所以它不会,那么我们为什么要让机器学习这样的算法呢?首先我们要先明白这样做的意义在哪里。

分类的意义
试想一个问题,上面很见到的分类大家都会,但是现在如果我们要分的不是高中低(这样的类别在机器学习中叫做标签)这几个类别了,而是想让大家根据身高和体重和体脂率划分同学体质好的有多少,体质一般的有多少,体质差的有多少。现在这些信息都在一张表上,大家觉得要把这项事情做出来得多大的工作量呢?而现在来了一个新同学,我们想知道它的体质怎么样,让我们人去查找表然后对比,这样的事又简单不简单呢?

或许上面的工作我们咬咬牙都是能做出来的,但是,如果这样的数据有100万、1000万甚至1亿条呢?大家这时候终于要放弃了吧!

因此,人做不了的事,我们交给计算机去做,但是机器只会1+0,没关系,我们将人类的想法换成计算机能够理解的算法,大家都知道计算机比人类最大的优势就在于一个字—

咳咳,回来啊,想什么呢

这样工作有“人”帮我们做了,上班不就有时间摸鱼了?,这不就是计算机兴起的原因吗?现在我们来了1000个新同学,我们将数据给计算机,计算机直接告诉我们每一个新同学属于什么类型。这就是分类算法预测的原理。实际上统计中的回归(regression)预测也是类似的原理。

接下来,讲正题,聚类又是什么原理呢?

还是那100个同学,现在我们想知道这100个人在身高上会分成几个类别呢?我们不知道该怎么分,但是,我们想将它们分成三个类别,最好像前面分类那样的标准,不过现在有觉得那样分太带主观意志了,我们想按照人数分布来分,比如,我们发现1.51cm到1.60cm的同学有30个,1.65-176的同学有40个,1.78到1.85的同学有20个,而其他的就几个人的身高在其他的范围随意分布。这时候,我们知道,这样以上这种分类比之前那种好,为什么呢?,因为大多数人身高就分布在这几个区间。

那么剩下的高于1.85、低于151以及高于160又小于165的还有1.76-1.78,这些人怎么分呢?答案就是,离那个类别更接近就分在哪个类别。也就是说,例如1.62cm,这个身高更接近1.51-1.60这个类别的同学的身高,那我们就将它划分在这个类别。同样,其他的同学也是一样的原理划分。(当然这个例子举得太极端不说,还不符合统计学原理,这里只是为了使得大家能更好的理解聚类的原理)

上面这个就是聚类的原理例子。那么我们接着假设,我们将这100个同学分成三个类别也是我们主观控制的,如果我们说分为四个类、五个类、六个类别呢?是不是分析的结果又会不同呢?并且我们不知道到底分成几个类别会更合适,于是就有了上面讲到的聚类成几个类别通常一开始是不能够确定的,但是根据经验,一般分成设定3-10个类别里面会有比较合适的类别个数。于是我们在做聚类分析时一般就一步一个脚印,将设定不同个数类别(机器学习里面一般叫簇cluster)的聚类模型进行评估,最后选取最好的模型来进行聚类。对于模型的评估,我们下一篇文章讲聚类的典型算法—K-Means(K-均值)算法再详细为大家解析。

​ 总结

分类算法是有监督学习算法,而聚类是无监督学习算法,区别就是有监督学习算法在模型训练时数据是有标签的(已经分好类别)训练好的模型一般用于预测新的数据集,无监督学习则是说,我们之所以训练数据,就是将数据聚成几个类别。从而进行相关的应用。

下一篇文章–聚类以及典型算法K-Means的原理及实现
持续更新中,请大家关注Eternal的公众号“数据分析者”以防错过文章。

好了,这期内容我们就分享到这里,我们下期再见!

以最易懂的人话讲分类和聚类算法(建议分享和收藏)相关推荐

  1. 分类与聚类算法基础了解

    分类与聚类,监督学习与无监督学习 在讲具体的分类和聚类算法之前,有必要讲一下什么是分类,什么是聚类,以及都包含哪些具体算法或问题. Classification (分类),对于一个 classifie ...

  2. c语言编程入门教程+网易,人话讲编程·C语言入门:第一讲,Hello World

    //前言 "凡是能够说的,都可以说清楚;凡是不能说的,就应该保持沉默." 维特根斯坦的这一教诲,令人深思--教育乃至生活,人生中的许多问题,都坏在这一点上--本来能够说清楚的,结果 ...

  3. 机器学习中常见的分类 回归 聚类算法小结

    Date: 2019-08-15 今天开始总结和复习机器学习知识点: 一句话概括: 1. 聚类:无监督学习,学习结果将产生几个集合,集合中的元素彼此相似: 2. 分类:有监督学习,学习结果将产生几个函 ...

  4. 分类和聚类的区别以及各自的常见算法

    1.分类和聚类的区别: Classification (分类),对于一个classifier,通常需要你告诉它"这个东西被分为某某类"这样一些例子,理想情况下,一个 classif ...

  5. 网络七层结构(讲人话)

    整个网络当中,最基本或者是最核心的就是数据的传输,整个网络的搭建,都是为数据传输服务的,我们类比一下快递物流的例子,就可以初步理解这七层都是干嘛的了: 1. 应用层 应用层的作用是为应用程序提供服务并 ...

  6. 数据库关系范式——第一范式、第二范式、第三范式、BC范式【通俗易懂,博主会讲人话】

    范式:是符合某一种级别的关系模式的集合. 说白了,就是对关系模式的一种规范化. 范式分为:第一范式.第二范式.第三范式.BC范式.第四范式.第五范式.后面两种在这里不讨论. 1.第一范式(1NF):关 ...

  7. 干货 | 深度学习的可解释性研究(一):让模型「说人话」

    在这篇文章中: 可解释性是什么? 我们为什么需要可解释性? 有哪些可解释性方法? 在建模之前的可解释性方法 建立本身具备可解释性的模型 在建模之后使用可解释性性方法作出解释 关于 BIGSCity 参 ...

  8. 决策树 随机森林 xgboost_从决策树到随机森林理论篇从人话到鬼话:看不懂来找我麻烦...

    从决策树产生的一些列的问题,过度到随机森林: 全文大概要阅读10分钟: 随机森林算法范畴 监督学习分类算法,基模型是由决策树组成 决策树 决策树模型与学习 特征选择 决策树生成 决策树剪枝 CART算 ...

  9. 用人话讲明白线性回归LinearRegression

    文章目录 1.什么是回归 2.一元线性回归 3.损失函数 4.最小二乘估计 5.小结 1.什么是回归 当我们学习一门新课程.接触一个新专业时,总会对该领域的专有名词感到困惑,甚至看完解释仍难以理解其含 ...

最新文章

  1. 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。...
  2. strstr函数_【每日编程176期】实现strStr() II
  3. zigbee 协议栈原语及zstack实现
  4. java语言语法--- Java标识符(标识符命名规则)、Java关键字、Java变量(变量的声明、赋值、使用)和常量(字符常量、字面常量)(包括Java字节码文件反汇编命令javap)
  5. html 自定义打印模板,HTML+CSS入门 自定义模板详解
  6. 我对 OneData 数据中台体系架构的一些思考
  7. Python项目实践:自动轨迹绘制(根据脚本绘制图形)
  8. idea使用svn拉取项目代码_使用 IDEA 搭建 Hadoop3.1.1 项目
  9. C++实现的大整数分解Pollard's rho算法程序
  10. ruby写的BT种子解析器
  11. firework算法_FireWorks 自从烟花算法的开创性论文由谭营教授等人于2010年发表之后 联合开发网 - pudn.com...
  12. 【python基础】python爬虫对网页壁纸图片批量抓取下载
  13. 学习笔记10:程序设计基础(C)实验(函数)
  14. 一种深久的不安 摘自: 《天使路过》 / 乔叶
  15. python使用神器_python 神器
  16. 第71次上IM课(IMO72:About Friends)
  17. Arthas 3.1.2版本发布: 增加logger/heapdump/vmoption命令,支持tunnel server
  18. 像这2个案例的项目进度延误,如何破?
  19. 软件流程图及功能节点图
  20. 2018_WWW_DKN- Deep Knowledge-Aware Network for News Recommendation阅读笔记

热门文章

  1. Python:运用pydub模块转换音频格式、对音频进行剪辑
  2. 将excel按照某一列拆分成多个单独文件
  3. 再刷《请回答1988》,我在想......
  4. C语言简单编程 输入字符串删除输入内容的数字并输出
  5. 解决CSDN绑定的手机号注销之后怎么更改手机号
  6. yangguang-终于找到了可以在手机上玩的极品飞车游戏(J
  7. 元宇宙产业委李安民:云网融合是算力基础设施的核心特征
  8. python实现qq机器人qqbot
  9. 计算机知识和操作技能,《计算机基础知识与操作技能》毕文才 编_孔网
  10. java正则包含特殊字符_Java-正则表达式模式,包括所有特殊字符