Mahout – 聚类
数据模型
DenseVector
它的实现就是一个浮点数数组,对向量里所有域都进行存储,适合用于存储密集向量。
RandomAccessSparseVector
基于浮点数的 HashMap 实现的,key 是整形 (int) 类型,value 是浮点数(double) 类
型,它只存储向量中不为空的值,并提供随机访问。
SequentialAccessVector
实现为整形 (int) 类型和浮点数 (double) 类型的并行数组,它也只存储向量中不 为空的
值,但只提供顺序访问。
数据点间的距离计算方法
1. 欧几里得距离(Euclidean distance)- EuclideanDistanceMeasure
高维空间内向量说表示的点到点之间的距离,能够体现个体数值特征的绝对
差异。由于特征向量的各分量的量纲不一致,通常需要先对各分量进行标准化,
使其与单位无关,比如对身高和体重两个单位不同的指标使用该算法可能使结果
失效。
适用场景:用于需要从维度的数值大小中体现差异的分析,如用户行为指标
分析用户价值的相似度或差异。
缺点:没有考虑分量之间的相关性,体现单一特征的多个分量会干扰结果。
2. 马氏距离(Mahalanobis distance)- MahalanobisDistanceMeasure
适用场景:1. 度量两个服从同一分布并且其协方差矩阵为 C 的随机变量 X 与
Y 的差异程度。
2. 度量 X 与某一类的均值向量的差异程度,判别样本的归属。
缺点:不同的特征不能差别对待,可能夸大弱特征。
3. 闵可夫斯基距离(Minkowsk distance)- MinkowskiDistanceMeasure
欧氏距离指数的推广。目前没有很好的应用实例。
4. 曼哈顿距离(Manhattan distance)- ManhattanDistanceMeasure
将多个维度上的距离进行求和后的结果。
5. 切比雪夫距离(Chebyshev distance)- ChebyshevDistanceMeasure
6. Tanimoto 系数 – TanimotoDistanceMeasure
适用场景:通常应用于 X 为布尔向量,即各分量只取 0 或 1 的时候。此时,
表示的是 X,Y 的公共特征的占 X,Y 所占有的特征的比例。