今日的蒋老师课堂又开课啦!最近有一些小伙伴提问什么是聚类分析鸭?今天,蒋老师就带你深入认识何为聚类分析~
聚类分析是一种无监督的学习方式,通过样本数据间的内在联系进行分类。不仅如此,在各行各业的实际应用上它还有强大的功能。
在商业上,聚类分析是细分市场的有效工具,被用来发现不同的客户群,并通过刻画不同消费客户群的特征,用于研究消费者行为,寻找新的潜在市场。
在保险行业上,可以通过平均消费来鉴定汽车保险单持有者的分组,同时可以根据住宅类型、价值、地理位置来鉴定城市的房产分组。
在电商业,通过分组聚类出相似浏览行为的客户,并分析客户的共同特征,从而帮助电商企业了解自己的客户,向客户提供更合适的服务。
在互联网应用上,被用来在网上进行文档归类。
在生物上,被用来对动植物和基因进行分类,以获取对种群固有结构的认识。
接下来,要进入深度学习原理环节啦,带上小本本儿,做好笔记~
1.聚类分析原理
首先,介绍一下样本与样本间距离
1.1 样本与样本间距离
样本与样本间距离,可以有各种不同的定义,下面公式中的 d i j ( i = 1 , 2 , … , n , j = 1 , 2 , … , n ) d_{ij}(i=1,2,\dots,n,j=1,2,\dots,n) dij(i=1,2,…,n,j=1,2,…,n)表示第 i i i个样本和第 j j j个样本之间的距离。 x i k ( i = 1 , 2 , … , n , k = 1 , 2 , … , m ) x_{ik}(i=1,2,\dots,n,k=1,2,\dots,m) xik(i=1,2,…,n,k=1,2,…,m)表示第 i i i个样本和第 k k k个变量的观测值,常用的距离定义有:
- 绝对值距离
d i j = ∑ k = 1 m ∣ x i k − x j k ∣ d_{ij}=\sum_{k=1}^m |x_{ik}-x_{jk}| dij=k=1∑m∣xik−xjk∣ - 欧式距离
d i j = ∑ k = 1 m ( x i k − x j k ) 2 d_{ij}=\sqrt{\sum_{k=1}^{m}(x_{ik}-x{jk})^2} dij=k=1∑m(xik−xjk)2 - 闵可夫斯基(Minkovski)距离
d i j = ( ∑ k = 1 m ∣ x i k − x j k ∣ q ) 1 / q d_{ij}=(\sum_{k=1}^m|x_{ik}-x_{jk}|^q)^{1/q} dij=(k=1∑m∣xik−xjk∣q)1/q
当 q = 1 q=1 q=1时,就是绝对值距离,当 q = 2 q=2 q=2时,就是欧氏距离。 - 马氏(mahalanobis)距离
d i j = ( x i − x j ) T S − 1 ( x i − x j ) d_{ij}=\sqrt{(x_i-x_j)^TS^{-1}(x_i-x_j)} dij=(xi−xj)TS−1(xi−xj) 其中
x i = [ x i 1 ⋮ x i m ] {x_i} =\left[ \begin{matrix} x_{i1} \\ \vdots \\ x_{im}\end{matrix} \right] xi=⎣⎢⎡xi1⋮xim⎦⎥⎤
是第 i i i个样本的观测值, S S S是全部观测数据的协方差矩阵。
1.2 类与类间距离
类与类距离,比较各种聚类方法,主要分为系统聚类和K-means聚类:
- Hierarchical(系统聚类):
* Single-linkage:要比较的距离为元素对之间的最小距离
* Complete-linkage:要比较的距离为元素对之间的最大距离
* Group average:要比较的距离为类之间的平均距离,平方的平均值
* Median-linkage:两两样本点距离的中值
* Ward‘s method(离差平方和法) - K-means
1.3 系统聚类
- 把所有样品都当作一个类,类与类距离就是样品与样品之间距离。
- 找出距离最近的两个类,组成一个新的类,总类数减一。
- 重复2,直到最后合成一类。
1.4 K-means聚类
- 在样本中随机选取K个点,作为每一类的中心点。
- 计算剩下 n-K 个样本点到每个聚类中心的距离(距离有很多种,假设这里采用欧式距离)。对于每一个样本点,将它归到和他距离最近的聚类中心所属的类。
- 重新计算每个聚类中心的位置:步骤 2 中得到的结果是 n 个点都有自己所属的类,将每一个类内的所有点取平均值(这里假设是二维空间,即对 x 和 y 坐标分别取平均),计算出新的聚类中心。
- 重复步骤 2 和 3 的操作,直到所有的聚类中心不再改变。
2.聚类分析案例——世界杯16强分类
某年足球世界杯赛,最后有16支球队进入前16名,这些球队在进入决赛前的分组赛中的进球数和失球数统计如下:
我们首先导入数据文件footballgame.xlsx
点击Task-Analyze-Cluster-Analyze
点击Task-Analyze-Cluster-Analyze,发现聚类方法和距离各有很多选择。
我们先分为5类,分类方法选择Hierarchical average linkage类平均法,距离选择欧氏距离,点击ok
若想分成自己想要的种类数,则要选择不同的number of clusters。
好啦!今日的蒋老师课堂到这里就结束了,欢迎大家踊跃探讨提问鸭~