数 据 挖 掘 课——聚 集(一)
一,什么是聚类?
聚类:-将一个对象的集合分割成几个类,每个类内的对象之间是相似的,但与其他类的对象是不相似的。
评判聚类好坏的标准:1,能够适用于大数据量。2,能应付不同的数据类型。3,能够发现不同类型的聚类。4,使对专业知识的要求降到最低。5,能应付脏数据。6,对于数据不同的顺序不敏感。7,能应付很多类型的数据。8,模型可解释,可使用。
二,聚类所基于的数据类型。
聚类算法通常基于“数据矩阵”和“Dissimilarity 矩阵”。
怎么样计算不同对象之间的距离?
1,数值连续的变量(体重,身高等):度量单位的选取对于聚类的结果的很重要的。例如将身高的单位从米变为尺,将体重的单位从公斤变为磅将对聚类的结果产生很大的影响。为了避免出现这种情况,我们必须将数据标准化:将数据中的单位“去掉”。
A, 计算绝对背离度。B,计算标准量度。
下面我们考虑怎样来计算两个对象之间的差异。1,欧几里得距离。2,曼哈顿距离。这两种算法有共同之处:d(i,j)>=0,d(i,i)=0, d(i,j)=d(j,i),d(i,j)=<d(i,h)+d(h,j)。3,Minkowski距离。这是上述两种算法的通式。并且对于不同的变量,我们可以给它赋于不同的weight.
2,二元数据变量:如果还是用上面的方法来计算的话,肯定会出现错误。这儿分
两种情况,对称的与非对称的。
3,Nominal变量:(例如红,黄,绿,蓝….)
4,ordinal变量(例如科长,处长,局长….)
5,ratio-scaled变量:
6,以上几种混合的变量(多数情况是这样的):
三,分割的的方法。
1, K均值算法:给定类的个数K,将n个对象分到K个类中去,使得类内对象之间的相似性最大,而类之间的相似性最小。
缺点:产生类的大小相差不会很大,对于脏数据很敏感。
改进的算法:k—medoids 方法。
k—medoids 方法看起来和K-means比较相似,但是K-medoids和K-means是有区别的,不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值,在 K-medoids算法中,我们将从当前cluster 中选取这样一个点——它到其他所有(当前cluster中的)点的距离之和最小——作为中心点。这样的一个medoid就标识了这个类。
步骤:
1,任意选取K个对象作为medoids(O1,O2,…Oi…Ok)。
以下是循环的:
2,将余下的对象分到各个类中去(根据与medoid最相近的原则);
3,对于每个类(Oi)中,顺序选取一个Or,计算用Or代替Oi后的消耗—E(Or)。选择E最小的那个Or来代替Oi。这样K个medoids就改变了,下面就再转到2。
4,这样循环直到K个medoids固定下来。
这种算法对于脏数据和异常数据不敏感,但计算量显然要比K均值要大,一般只适合小数据量。