《人工智能和机器学习--PPT13-聚类》由会员分享,可在线阅读,更多相关《人工智能和机器学习--PPT13-聚类(97页珍藏版)》请在金锄头文库上搜索。
1、聚类王秋月中国人民大学信息学院数据点有已知的结果数据点有已知的结果有监督有监督数据点没有已知的结果数据点没有已知的结果无监督无监督机器学习类型数据点有已知的结果数据点有已知的结果有监督有监督数据点没有已知的结果数据点没有已知的结果无监督无监督机器学习类型识别数据中未知的结构识别数据中未知的结构聚类聚类无监督学习的类型识别数据中未知的结构识别数据中未知的结构聚类聚类无监督学习的类型使用数据中的结构特征来简化数据使用数据中的结构特征来简化数据降维降维模型模型结构结构无标记数据(无答案)无标记数据(无答案)Fit将新的数据将新的数据映射到结构映射到结构新的无标记数据新的无标记数据Predict+无监
2、督学习概述模型模型模型模型模型模型未知主题的文章未知主题的文章Fit+预测相似预测相似的文章的文章未知主题的文章未知主题的文章Predict+聚类:发现不同的数据组模型模型模型模型模型模型高分辨率图像高分辨率图像Fit+压缩的图像压缩的图像高分辨率图像高分辨率图像Predict+降维:简化结构一个一个web应用的所有用户:应用的所有用户: 一个特征 (age)Age无监督学习Age无监督学习一个一个web应用的所有用户:应用的所有用户: 一个特征 (age) 两个聚簇 (cluster)无监督学习一个一个web应用的所有用户:应用的所有用户: 一个特征 (age) 三个聚簇 (cluster)
3、Age无监督学习一个一个web应用的所有用户:应用的所有用户: 一个特征 (age) 五个聚簇 (cluster)AgeK-MEANS聚类算法聚类算法K = 2:发现两个聚簇发现两个聚簇AgeIncomeK-Means 算法K = 2, 随机地选择随机地选择两个聚簇的中心点两个聚簇的中心点AgeIncomeK-Means 算法K = 2, 每个点被聚每个点被聚到离它最近的中心到离它最近的中心点代表的聚簇中点代表的聚簇中AgeIncomeK-Means 算法K = 2, 重新计算每个重新计算每个聚簇的中心点聚簇的中心点AgeIncomeK-Means 算法K = 2, 每个点属于每个点属于离它最
4、近的中心点离它最近的中心点AgeIncomeK-Means 算法K = 2, 重新计算每个重新计算每个聚簇的中心点聚簇的中心点AgeIncomeK-Means 算法K = 2, 数据点的聚簇数据点的聚簇不再改变时不再改变时 算法算法收敛收敛AgeIncomeK-Means 算法K = 2, 最后每个点最后每个点属于离它最近的那属于离它最近的那个聚簇个聚簇AgeIncomeK-Means 算法K =3AgeIncomeK-Means 算法K = 3, 最终结果依最终结果依赖于初始的聚簇分赖于初始的聚簇分配配AgeIncomeK-Means 算法聚类的评价指标聚类的评价指标AgeIncome哪个模
5、型正确? Inertia(簇内平方和):(簇内平方和): 每个数据点(𝑥𝑖)距其聚簇中心(𝐶𝑘)的距离平方和 值越小表示聚簇越紧密 轮廓系数(轮廓系数(Silhouette Coefficient):): 对每个数据点计算一个轮廓系数: a = 此数据点到同簇同簇中所有其他点的平均距离,凝聚度 b = 此数据点到最近簇最近簇中所有点的平均距离,分离度 将所有数据点的轮廓系数取平均值就得到一个总的评分 取值在-1, 1之间,值越大,聚类效果越好聚类评价指标初始化多次,然后选初始化多次,然后选择得分最高的模型择得分最高的模型AgeIn
6、come哪个模型正确?Inertia = 12.645AgeIncome哪个模型正确?Inertia = 12.943AgeIncome哪个模型正确?Inertia = 13.112AgeIncome哪个模型正确?初始聚簇中心的选择方法初始聚簇中心的选择方法AgeIncome更聪明的K-Means初始化方法随机地选取一点随机地选取一点作为起始点作为起始点AgeIncome更聪明的K-Means初始化方法 计算每个点与已计算每个点与已有聚簇中心点之有聚簇中心点之间的最短距离,间的最短距离,D(x) 按照按照D(x)2/ D(x)2的概率选取下一的概率选取下一个点个点AgeIncome更聪明的K-
7、Means初始化方法AgeIncome更聪明的K-Means初始化方法 计算每个点与已计算每个点与已有聚簇中心点之有聚簇中心点之间的最短距离,间的最短距离,D(x) 按照按照D(x)2/ D(x)2的概率选取下一的概率选取下一个点个点AgeIncome更聪明的K-Means初始化方法 计算每个点与已计算每个点与已有聚簇中心点之有聚簇中心点之间的最短距离,间的最短距离,D(x) 按照按照D(x)2/ D(x)2的概率选取下一的概率选取下一个点个点分配聚簇分配聚簇AgeIncome更聪明的K-Means初始化方法K-Means+K值的选择方法值的选择方法 有时应用中有一个有时应用中有一个K: 将相
8、似的任务聚集在四个将相似的任务聚集在四个CPU核上核上 (K=4) 一件服装设计成一件服装设计成10种不同大小以适合不同的人种不同大小以适合不同的人 (K=10) 一个导览界面可以浏览一个导览界面可以浏览20种不同科学领域的论文种不同科学领域的论文(K=20)选择正确的聚簇数 Inertia衡量点到聚簇中衡量点到聚簇中心的距离心的距离 值会随着值会随着K的增大而不的增大而不断降低,只要聚簇密度断降低,只要聚簇密度在不断增大在不断增大 小于真实小于真实K值时,下降值时,下降幅度很大;超过真实幅度很大;超过真实K值时,下降趋于平缓值时,下降趋于平缓Inertia246K810选择正确的聚簇数手肘法
9、手肘法 选择轮廓系数最大的选择轮廓系数最大的K值值选择正确的聚簇数导入包含聚类方法的类:导入包含聚类方法的类:from sklearn.cluster import KMeans创建该类的一个对象:创建该类的一个对象:kmeans = KMeans(n_clusters=3,init=k-means+)拟合数据,并在新数据上预测聚簇:拟合数据,并在新数据上预测聚簇:kmeans = kmeans.fit(X1)y_predict = kmeans.predict(X2)K-Means的语法http:/scikit-learn.org/stable/modules/generated/sklea
10、rn.cluster.KMeans.html导入包含聚类方法的类:导入包含聚类方法的类:from sklearn.cluster import KMeans创建该类的一个对象:创建该类的一个对象:kmeans = KMeans(n_clusters=3,init=k-means+)拟合数据,并在新数据上预测聚簇:拟合数据,并在新数据上预测聚簇:kmeans = kmeans.fit(X1)y_predict = kmeans.predict(X2)K-Means的语法最终的聚簇数最终的聚簇数导入包含聚类方法的类:导入包含聚类方法的类:from sklearn.cluster import KM
11、eans创建该类的一个对象:创建该类的一个对象:kmeans = KMeans(n_clusters=3,init=k-means+)拟合数据,并在新数据上预测聚簇:拟合数据,并在新数据上预测聚簇:kmeans = kmeans.fit(X1)y_predict = kmeans.predict(X2)K-Means的语法kmeans+初始化方法初始化方法导入包含聚类方法的类:导入包含聚类方法的类:from sklearn.cluster import KMeans创建该类的一个对象:创建该类的一个对象:kmeans = KMeans(n_clusters=3,init=k-means+)拟合
12、数据,并在新数据上预测聚簇:拟合数据,并在新数据上预测聚簇:kmeans = kmeans.fit(X1)y_predict = kmeans.predict(X2)也可以用也可以用MiniBatchKMeans使用批处理方式使用批处理方式K-Means的语法距离指标距离指标 距离指标的选择对聚类的距离指标的选择对聚类的成功至关重要成功至关重要 每个指标有各自的优点每个指标有各自的优点和适用情况和适用情况 但有时距离指标的选择但有时距离指标的选择也是基于经验性的评价也是基于经验性的评价距离指标的选择AgeIncome欧几里得距离AgeIncomedIncomeAge𝑒=
13、9860;𝑔𝑓2 +𝐼𝑜𝑑𝑝𝑛𝑓2欧几里得距离(L2距离)AgeIncomeIncomeAge𝑒=𝐴𝑔𝑓 + 𝐼𝑜𝑑𝑝𝑛𝑓曼哈顿距离(L1或街区距离)AgeIncome𝜃余弦距离AgeIncome𝜃余弦距离 欧几里得距离适用于基于坐标的度量欧几里得距离适用于基于坐标的度量 余弦距
14、离更适合那些出现位置不重要的数据,例如文本数据余弦距离更适合那些出现位置不重要的数据,例如文本数据 欧几里得距离对维度灾难更敏感欧几里得距离对维度灾难更敏感欧几里得vs.余弦距离应用于集合(例如单词的出现)应用于集合(例如单词的出现) 句子句子 A: “I like chocolate ice cream.” set A = I, like,chocolate, ice, cream 句子句子 B: “Do I want chocolate cream or vanilla cream?” set B = Do, I, want, chocolate, cream, or,vanillaJac
15、card距离应用于集合(例如单词的出现)应用于集合(例如单词的出现) 句子句子A: “I like chocolate ice cream.” set A= I, like, chocolate, ice, cream 句子句子 B: “Do I want chocolate cream or vanilla cream?” set B = Do, I, want, chocolate, cream, or,vanillaJaccard距离导入一般的两两距离计算函数:导入一般的两两距离计算函数:from sklearn.metrics import pairwise_distances计算距离
16、:计算距离:dist = pairwise_distances(X,Y,metric=euclidean)选择的距离指标选择的距离指标距离指标的语法导入一般的两两距离计算函数:导入一般的两两距离计算函数:from sklearn.metrics import pairwise_distances计算距离:计算距离:dist = pairwise_distances(X,Y,metric=euclidean)距离指标的语法其他的距离指标选择有:其他的距离指标选择有:cosine, manhattan, jaccard, 等等等等导入一般的两两距离计算函数:导入一般的两两距离计算函数:from s
17、klearn.metrics import pairwise_distances计算距离:计算距离:dist = pairwise_distances(X,Y,metric=euclidean)距离指标的语法其他的距离指标选择有:其他的距离指标选择有:cosine, manhattan, jaccard, 等等等等距离指标函数也可以被专门导入,如:距离指标函数也可以被专门导入,如:from sklearn.metrics import euclidean_distances聚合式层次聚类聚合式层次聚类AgeIncome聚合式层次聚类寻找最近的一对点,寻找最近的一对点,聚成一个聚簇聚成一个聚簇A
18、geIncome聚合式层次聚类寻找下一对最近寻找下一对最近的点,并合并的点,并合并AgeIncome聚合式层次聚类寻找下一对最近寻找下一对最近的点,并合并的点,并合并AgeIncome聚合式层次聚类继续合并距离最近继续合并距离最近的点的点AgeIncome聚合式层次聚类Age如果距离最近如果距离最近的是两个聚簇,的是两个聚簇,则合并它们则合并它们Income聚合式层次聚类继续合并距离最近继续合并距离最近的点和聚簇的点和聚簇AgeIncome聚合式层次聚类继续合并距离最近继续合并距离最近的点和聚簇的点和聚簇AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =6AgeIncome聚合式层次聚类
19、当前聚簇数当前聚簇数 =5AgeIncome聚合式层次聚类AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =4AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =3AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =2AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =1达到正确的聚类数达到正确的聚类数条件条件 1最小平均聚簇距离达到预设的值最小平均聚簇距离达到预设的值条件条件 2聚合式层次聚类的停止条件当前聚簇数当前聚簇数 =5AgeIncome聚合式层次聚类聚簇聚簇距离距离聚合式层次聚类当前聚簇数当前聚簇数 =5AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =4聚
20、合式层次聚类当前聚簇数当前聚簇数 =4聚簇聚簇距离距离AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =3聚合式层次聚类当前聚簇数当前聚簇数 =3聚簇聚簇距离距离AgeIncome聚合式层次聚类当前聚簇数当前聚簇数 =2聚合式层次聚类当前聚簇数当前聚簇数 =2聚簇聚簇距离距离簇间距离类型簇间距离类型簇间距离的类型 单链接(单链接(Single Linkage):簇间最小的两点距离 完全链接(完全链接(Complete Linkage):簇间最大的两点距离 平均链接(平均链接(Average Linkage):簇间所有两点距离的平均值 Ward链接(链接(Ward Linkage):每次选
21、择导致最佳inertia的合并Age单链接:簇间最小单链接:簇间最小的两点距离的两点距离Income簇间距离的类型Age单链接:簇间最小单链接:簇间最小的两点距离的两点距离Income簇间距离的类型Age完全链接:簇间最大完全链接:簇间最大的两点距离的两点距离Income簇间距离的类型Age完全链接:簇间最大完全链接:簇间最大的两点距离的两点距离Income簇间距离的类型Age平均链接:簇间所有平均链接:簇间所有两点距离的平均值两点距离的平均值Income簇间距离的类型Age簇间距离的类型平均链接:簇间所有平均链接:簇间所有两点距离的平均值两点距离的平均值IncomeWard链接:每次选链接:
22、每次选择导致最佳择导致最佳inertia的合并的合并AgeIncome簇间距离的类型AgeIncome簇间距离的类型Ward链接:每次选链接:每次选择导致最佳择导致最佳inertia的合并的合并导入包含聚类方法的类:导入包含聚类方法的类:from sklearn.cluster import AgglomerativeClustering创建该类的一个对象:创建该类的一个对象:agg = AgglomerativeClustering(n_clusters=3,affinity=euclidean, linkage=ward)拟合数据,并预测新数据的聚簇:拟合数据,并预测新数据的聚簇:agg
23、= agg.fit(X1)y_predict = agg.predict(X2)聚合式层次聚类的语法http:/scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html导入包含聚类方法的类:导入包含聚类方法的类:from sklearn.cluster import AgglomerativeClustering创建该类的一个对象:创建该类的一个对象:agg = AgglomerativeClustering(n_clusters=3,affinity=euclidean, li
24、nkage=ward)拟合数据,并预测新数据的聚簇:拟合数据,并预测新数据的聚簇:agg = agg.fit(X1)y_predict = agg.predict(X2)聚合式层次聚类的语法最终的聚簇数最终的聚簇数导入包含聚类方法的类:导入包含聚类方法的类:from sklearn.cluster import AgglomerativeClustering创建该类的一个对象:创建该类的一个对象:agg = AgglomerativeClustering(n_clusters=3,affinity=euclidean, linkage=ward)拟合数据,并预测新数据的聚簇:拟合数据,并预测新数据的聚簇:agg = agg.fit(X1)y_predict = agg.predict(X2)聚合式层次聚类的语法聚簇间距离聚簇间距离的计算和聚的计算和聚合方法合方法Reference: http:/scikit-learn.org/stable/auto_examples/cluster/plot_cluster_comparison.html其他聚类算法演示第13章-聚类(K-means).ipynb