Clustering
在TaD中,我们会把相似度高的document聚为一类,可以用来给用户作推荐系统。之后的课程中,会把term聚类
聚类算法是unsupervised的,即没有labelled training data,也没有正确答案。
聚类过程:
1. Derive a document representation – Typically, vectors of weighted terms 文章向量化
2. Measure similarity between documents 计算相似度
3. Apply a clustering method 应用聚类算法
4. Check the validity/quality of the clustering 评估
聚类的关键:
1. Single level vs. multi-level hierarchical partitioning (often, multi-level hierarchical partitioning is desirable)划分方法
2. Separation of clusters聚类划分Exclusive (e.g., one object belongs to only one cluster) vs. overlapping (e.g., one object may belong to more than one cluster)一个object可不可以被分到多个cluster里(是否能重叠)
3. Hard versus fuzzy硬划分或模糊划分,硬聚类是指数据集中每个样本只能划分到一个簇的算法,例如k-means算法。软聚类(模糊聚类)是指算法可以将一个样本划分到一个或者多个簇,依据概率。
1) K-means
Partitioning algorithm: clusters are represented as centroids (“center of mass”)通过每个类的质心
优点:收敛的快
缺点:对随机的初始点敏感;数据量大了之后算法复杂度高
怎么取k:
1.Elbow method
纵坐标distortion 表示: Average sum of squared distances of each point to its centroid
找拐点最大的那个k
2. Silhouette coefficient
a表示组内的平均距离,b表示和组外所有object的平均距离。a应该越小越好,b应该越大越好
2) Mini K-means
数据量太大考虑用Mini Batch K-Means(通常样本数>10000),效果没差太多,但是省去很多时间
迭代步骤:
1:从数据集中随机抽取object分配给最近的质心 (Kmeans则是所有obect都要计算)
2:更新质心
3)Hierarchical clustering
参照 https://blog.csdn.net/andy_shenzl/article/details/83783469