一、聚类分析
1.1 聚类分析
聚类: 把相似数据并成一组(group)的方法。‘物以类聚,人以群分’ 不需要类别标注的算法,直接从数据中学习模式 所以,聚类是一种 数据探索 的分析方法,他帮助我们在大量数据中探索和发现数据结构
1.2 相似度与距离度量
定义距离来度量表示相似度: 欧式距离,曼哈顿距离,闵氏距离 距离与变量量纲的关系 变量标准化方法: 0-1 标准化 区间缩放法 (a,b)=(0,1) 类别变量onehot
1.3 K均值算法基本原理
常见的两类聚类算法: 层次聚类算法(Hierarchical) 基于划分的方法(Partitional) 基于密度 和 基于模型 基于划分的方法(Partitional):K-means(K均值) 1 随机选取K个数据点作为‘种子’ 2 根据数据点与‘种子’的距离大小进行类分配 3 更新类中心点的位置,以新的类中心点作为‘种子’ 4 按照新的‘种子’对数据归属的类进行重新分配 5 更新类中心点(-->3-->4),不断迭代,直到类中心点变得很小
1.4 聚类模型评估
K-means(K均值)算法总结: 优点:算法原理简单,处理快 当聚类密集时,类与类之间区别明显,效果好 缺点:K是事先给定的,K值选定难确定 对孤立点敏感 结果不稳定,初始值选定对结果有一定的影响
1.5 K均值算法代码示例
sklearn.cluster.KMeans( n_clusters = 8, #聚类个数,K值,默认8 init = 'k-means++', n_init = 10, max_iter = 300, tol = 0.0001, precompute_distances = 'auto', verbose = 0, random_state = None, copy_x = True, n_jobs = 1, algorithm = 'auto' ) 一些重要的参数: n_clusters = 8, #聚类个数,K值,默认8 init = 'k-means++', #初始化类中心点选择方法,可选: { 'k-means++', #是一种优化选择方法,比较容易收敛 'random', #随机选择 an ndarray #可以通过输入ndarray数组手动指定中心点 } max_iter: #最大迭代数 precompute_distances: #预计算距离,计算速度更快但占用更多内存。auto True copy_x # True,原始数据不变,False直接在原始数据上做更改
1.6 K-means(K均值)算法调参
最合适的K值 肘部法则(Elbow method):找到随着K值变大,损失函数的拐点。 损失函数:各个类畸变程度(distortions)之和
1.7 聚类模型的评估指标
轮廓系数 (Silhouette Coefficient):
聚类目的是让“组内数据尽量相似”,而“组间数据差异明显”,轮廓系数就是衡量方法
针对每一条数据i a(i)数据i与组内其它数据的平均距离 b(i)数据i与邻组的数据的平均距离
轮廓系数:
数据i的轮廓系数s(i) s(i) --> 1 样本i聚类合理 s(i) --> -1 样本i应该分到其它类 s(i) --> 0 样本i在两个轮廓的边界
sklearn.metrics.silhouette_score sklearn.metrics.silhouette_score( X, labels = 'euclidean', sample_size = None, random_state = None ) 一些重要的参数: X: 聚类的输入特征数据 labels:类标签数组 metrics: sample_size:是否抽样计算
1.8 聚类分析总结
二、关联规则
2.1 关联规则
啤酒与尿布的故事 关联规律挖掘:从交易数据中发现:买了X 还会买Y 的规则 关联规律挖掘‘购物篮分析’Market Basket Analysis(MBA) 关联规律->应用于推荐系统
2.2 频繁项集(Frequent Itemset)
项集:Itemset 一个项集 K个项集 支持数量(Support count) 项集中同时出现次数 支持度Support 支持数量/总交易数量 频繁项集(Frequent Itemset) 支持度Support大于最小支持度(minsup)的项集合
2.3 关联规则Association Rule
X->y, X和Y是项集 example: {milk,dipper}->{beer}
2.4 关联规则评估指标
支持度Support 可信度Confidence
2.5 关联规则挖掘方法:
分两步走: 频繁项集(Frequent Itemset)的生成:生成所有supoort>= minsup的项集合 关联规则的生成:对每一个频繁项集(XY)进行二元划分,生成confidence最高的一系列规则(X->Y)
2.6 关联规则 Apriori 算法基本原理
复杂度: 给定d个items: 总项集数 = 2^d Apriori 算法思想:(购买A、B、C频繁则分别购买ABC肯定频繁) 频繁项集的子集也是频繁项集 反之,非频繁项集的超集必然不是频繁项集 优点:使用先验性质,大大提高了频繁项集产生的效率 算法简单易理解,容易实施 缺点:候选频繁K项集数量巨大 需要对整个数据库进行扫描,非常耗时 数据集存放内存中,大数据处理有困难
2.6.1 关联规则lift指标
lift>1 X-y正相关 lift<1 X-y负相关 lift=1 X-y无相关 Support较大的规则lift值会倾向于比较小 往往lift值特别大的规则,support会非常小
2.6.2 关联规则应用方向:
交叉销售:向买A的用户推荐B 捆绑销售:把A和B打包销售
2.6.3 基于support,confidence和lift 筛选规则
综合使用上述三种规则
2.7 结果理解
2.8 代码演示
sklearn 没有关联规则算法,寻求GitHub https://github.com/asaini/Apriori Python Implementation of Apriori Algorithm
2.9 总结