Unsupervised learning methods 无监督学习就是直接对输入数据进行建模例如clustering--->给个迭代方程让其自己运行
Clustering method 聚类就是将大量无标签的记录,根据它们的特点把它们分成簇,最后结果应当是相同簇之间相似性要尽可能大,不同簇之间相似性要尽可能小。
1:Similarity matching
- 1:How to calculate the distance between the two different objects?
-
Euclidean distance:(欧几里得距离/欧氏距离)
公式(二维):dis(A,B) = ((Xb-Xa)2+(Yb-Ya)2)^(1/2)
(多维):截屏2022-01-04 22.25.44.png
就其意义而言,欧氏距离越小,两个用户相似度就越大,欧氏距离越大,两个用户相似度就越小。
在日常使用中,一般习惯于将相似度与1类比,相似度在数值上反映为0<=Similarity(X,y)<=1,越接近1,相似度越高;
那么我们在使用欧几里得距离时,可以通过 1/(1+Distance(X,Y))来贯彻上一理念。
2:数据有不同类型,如何进行数据的规范化进而计算距离:
样本属性可能有的类型有:数值型,命名型,布尔型……在计算样本之间的距离时,需要将不同类型属性分开计算,最后统一相加,得到两个样本之间的距离。下面将介绍不同类型的属性的数据计算方法。
2.1:数值型
对于全部都是连续的数值型的样本来说,首先,对于值相差较大的属性来说,应该进行归一化,变换数据,使其落入较小的共同区间。2.11:min-max标准化(Min-max normalization)(normalization归一化)
也叫离差标准化,是对原始数据的线性变换,使结果落到[0,1]区间,转换函数如下:
其中Vi 表示在第i条记录在A这个属性上的取值,MINA表示A这个属性上的最小值,new_maxA表示我们希望映射到的区间的右边界,其他同理。
这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。
-
2.22:Z-score 规范化(standardization标准化)
也叫标准差标准化,经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:
image.png
其中μ为所有样本数据的均值,σ为所有样本数据的标准差。
- 2.23:小数定标规范化
通过移动小数点的位置来进行规范化。小数点移动的位数取决于该属性数据取值的最大绝对值。
例如:属性A的取值范围是-800到70,那么就可以将数据的小数点整体向左移三位即[-0.8,0.07]
3:计算距离:
-
3.1:Manhattan distance
在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点之前的直线距离。这个实际的驾驶距离就是"曼哈顿距离"。曼哈顿距离也称“城市街区距离”。
image.png
图中蓝色和黄色的线代表曼哈顿距离,绿色的线代表欧几里得距离即欧式距离
计算公式:
-
3.2:Jaccard distance
Jaccard相似指数用来度量两个集合之间的相似性,它被定义为两个集合交集的元素个数除以并集
Jaccard相似系数
Jaccard距离用来度量两个集合之间的差异性,它是Jaccard的相似系数的补集,被定义为1减去Jaccard相似系数。
-
3.3:Hellinger Distance
Hellinger Distance 又称 Bhattacharyya distance,因为作者的姓氏叫 Anil Kumar Bhattacharya。在概率和统计学中,Hellinger Distance 被用来衡量两个概率分布之间的相似性,属于 f-divergence 的一种。而 f-divergence 又是什么呢?一个 f-divergence 是一个函数 Df(P||Q) 用来衡量两个概率分布P and Q 之间的不同。
我们假设基于[n],有两个概率分布 P = {pi}i∈[n], Q = {qi}i∈[n] 。一个很自然的方法来定义两者之间的距离就是考虑两个概率向量 P and Q 之间的 L1-distance:
image.png
总的变换距离(the total variation distance),记为 Δ(P, Q),是上述等式的一半。
显然:
对于概率分布 P = {pi}i∈[n], Q = {qi}i∈[n],两者之间的Hellinger distance 定义为:
根据定义,Hellinger distance 是一种满足三角不等式(triangle inequality)的度量。根号下2是为了确保对于所有的概率分布,都有 h(P, Q) <= 1。
3.4 Domain-Specific
-
3.5 For Boolean
对于全是布尔型的样本来说,计算方式如下:
image.png
上表表示对与不同的样本i,j,统计它们布尔型同时为1的属性个数,同时为0的属性个数,分别为1和0的属性个数,它们的距离计算方式如下所示:
这个公式的含义其实就是两个样本之间,取值不同的属性的数量与所有属性的数量的比值。
4:Clustering
Use'Similarity' measure to group data items.
主要思想:首先人为决定将要将数据集分为k个簇,然后根据簇内部相似性要尽可能大,簇之间相似性要尽可能小的思想,将样本分到不同的簇当中去。
- 4.1:Hierarchical Clustering(分层聚类)
中心思想:
层次聚类,是一种很直观的算法。顾名思义就是要一层一层地进行聚类,可以从下而上地把小的cluster合并聚集,也可以从上而下地将大的cluster进行分割。似乎一般用得比较多的是从下而上地聚集,因此这里我就只介绍这一种。
所谓从下而上地合并cluster,具体而言,就是每次找到距离最短的两个cluster,然后进行合并成一个大的cluster,直到全部合并为一个cluster。整个过程就是建立一个树结构,类似于下图。
那 么,如何判断两个cluster之间的距离呢?一开始每个数据点独自作为一个类,它们的距离就是这两个点之间的距离。而对于包含不止一个数据点的 cluster,就可以选择多种方法了。最常用的,就是average-linkage,即计算两个cluster各自数据点的两两距离的平均值。类似的 还有single-linkage/complete-linkage,选择两个cluster中距离最短/最长的一对数据点的距离作为类的距离。
公式
Hierarchical Clustering特点:
1)Start with each node as its own Cluster
- Merge Cluster based on Similarity
- Iterate until there is only 1 Cluster
4.2: Clustering around Centroids(围绕中心点聚类)
- e.g K-means Algorithm
中心思想:
-
选定 K 个中心Uk的初值。这个过程通常是针对具体的问题有一些启发式的选取方法,或者大多数情况下采用随机选取的办法。因为前面说过 k-means 并不能保证全局最优,而是否能收敛到全局最优解其实和初值的选取有很大的关系,所以有时候我们会多次选取初值跑 k-means ,并取其中最好的一次结果。
2)将每个数据点归类到离它最近的那个中心点所代表的 cluster 中。
3)用公式
image.png
计算出每个 cluster 的新的中心点。
4)重复第二步,一直到迭代了最大的步数或者前后的J的值相差小于一个阈值为止。
-
4.3:K-medoids Method
算法过程:
1)随机选择样本集中的k个样本作为中心点。
2)计算剩下的样本到这k个中心点之间的距离,把样本全部分配到不同的cluster中。
3)对于每一个中心点,每次用一个非中心点代替当前中心点,并重新分配cluster,计算代价函数。如果代替之后的代价比之前代价小,那么就用这个非中心点代替当前中心点。
4)重复2-3,直到中心点不再变化。
K-medoid method 相对k-means 来说比较不受离群点的干扰。