大多数人对于机器学习的印象都是股票预测、回归分析或是Youtube演算法等事物,这些问题大多都有一个目标变数用来让模型学习,股票预测要去学习找出隔天的股价、YT演算法学习用户对影片的喜爱程度等,可是很多时候资料科学家拿到手上的资料并没有一个明确的目标变数(ex.交友软体透过配对系统要把各性相近的用户分成同一类),此时就会需要另寻他法,今天要讲的方法,就是其中一种解决方法:群集分析(Clustering Analysis)。
Different Types of Machine Learning
在开始谈Clustering Analysis之前,先带大家复习机器学习算法的不同类别:
- 监督式学习(Supervised Learning)
- 非监督式学习(Unsupervised Learning)
- 半监督式学习(Semi-Supervised Learning)
- 增强学习(Reinforcement Learning) … etc.
简单来说,监督式学习就是透过找出特征和目标变数间关联性而学习的方法,非监督式学习则是没有目标变数,需透过找出资料间的关联性得出结果的算法。上述两个方法中,最大的差异就是资料有没有目标变数,而通常目标变数会经过标注处理后才进行训练,但在实际问题上,不见得所有资料都已经过标注,在部分资料有标注、部分没标注的情况下,没有办法完全使用监督式学习的方法进行学习,因此有了半监督式学习用来解决这样的问题。
接下来我们要提到的群集分析,就属于非监督式学习方法,其余种类的方法之后会再写一篇详细讲解,让我们开始吧!
群集分析(Clustering Analysis)
Concept
Source: waterprogramming.files.wordpress.com/2022/03/gra…
群集分析的概念是将未标注的资料(Unlabeled data)透过分群方法(Clustering Method)归类到不同的群集(Cluster)之中,如上图所示,原本的资料集中各个样本并没有被明确标注,经过分群之后样本便被画分成好几群,其中我们可以观察到这些群集间的特性:
- 各群内的样本都很接近
- 各群间的距离都有明显区别
这样的特性正是在分群上最乐见的结果,在现实世界中,相似的个体通常会较为相近,差异较大的则会互相远离,这样的概念在资料上也是如此,因此大多分群方法的演算法都是建立在以下两点基础上进行构筑:
- 最小化群内距离(Minimize within distance)
- 最大化群间距离(Maximize between distance)
Methods
(1) K-Means
K-Means基于容易理解和使用的特性,成为现今众多分群方法中最被广为使用的一员,它的概念是透过计算样本和群心(center)的的距离将样本分类,分类完后重新计算各群的样本平均做为新的群心,不断重复计算直到群心不再变动为止。
下图为K-Means演算法的示例,各步骤说明如下:
source: stanford.edu/~cpiech/cs2…
a) 原始资料
b) 随机设定群心
c) 计算各样本和群心的距离,将样本和较近的群心分在同一群
d) 重新设定群心(各群的样本平均数)
e) 计算各样本和群心的距离,将样本和较近的群心分在同一群
f) 重新设定群心
…重复c)、d)两步骤直到群心不再变动
(2) Hierarchical Clustering
Hierarchical Clusteing中文译作阶层式分群,它的算法是将每个样本看作是一个群,计算各群之间的距离,并将距离近的合并成一群,不断合并直到所有样本都被分成同一群。
Source: www.slideshare.net/radiohead04…
根据上图,算法的步骤如下:
a) 计算所有群的距离,将距离最相近的A、B合并,D、E合并
b) 再计算一次所有群之间的距离,此时C和AB群相近,故合并再一起
依此类推直到最后全部样本都在同一群中。
在整个分群的过程中,会画出一个如同阶层的连结图,其中连结群之间的线的垂直高度(红色部分)就是两群之间的相似性(Similarity),通常是以距离来计算。分完群后,依照我们最后想要的群数对阶层图进行切割就可以完成样本的分群(ex. (d)图的虚线切割后将样本分成3群:ABC、DE、F)
在阶层式分群中,计算群之间的距离有以下三种方法:
Source: www.researchgate.net/publication…
- Simple Linkage: 计算最近的样本间的距离
- Average Linkage: 计算各群中心的距离
- Complete Linkage: 计算各群最远距离