版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级数据建模分析Python数据处理、分析、可视化与数据化运营07第1页,共147页。本章学习目标了解常用的数据挖掘和机器学习算法的概念和应用场景掌握运用常见机器学习算法解决实际项目问题的能力掌握不同算法评估的主要方法熟悉常见的用于机器学习的数据预处理工作和技巧了解如何将机器学习与日常应用结合并推动结果落地掌握如何通过可视化展示机器学习结果的方法第2页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征聚类的概念算法引言聚类是数据挖掘和计算的基本任务,它将大量数据集中具有“相似”特征的数据点或样本划分为一个类别。聚类分析的基本思想是“物以类聚、人以群分”,因此大量的数据集中必然存在相似
2、的数据样本,基于这个假设就可以将数据区分出来,并发现不同类的特征。第3页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征聚类的应用场景算法引言聚类常用于数据探索或挖掘前期,在没有做先验经验的背景下做的探索性分析也适用于样本量较大情况下的数据预处理工作。第4页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征聚类的常用算法算法引言基于划分、层次、密度、网格、统计学、模型等类型的算法典型算法包括K均值(经典的聚类算法)、DBSCAN、两步聚类、BIRCH、谱聚类等第5页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征业务需求案例背景业务部门拿了一些关于用户的数据找
3、到数据部门,苦于没有分析入手点,希望数据部门通过分析给业务部门一些启示或者提供后续分析或业务思考的建议。第6页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征需求解读案例背景(1)探索性数据分析的任务,且业务方没有任何先验经验给到数据部门。(2)这次的分析结果,用于做业务的知识启发或后续分析的深入应用。(3)业务希望得到的是他们自己无法认知到,且自身无法实现的数据知识。第7页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征从CRM数据获取,数据共1000条记录、5列字段,没有缺失值,具体如下:数据源概述(1)USER_ID:用户ID列,整数型。该列为用户数据分析师唯一I
4、D标志。(2)AVG_ORDERS:平均用户订单数量,浮点型。(3)AVG_MONEY:平均订单价值,浮点型。(4)IS_ACTIVE:是否活跃,以0-1来表示结果,数值型。(5)SEX:性别,以0-1来标识性别男和女,数值型。第8页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征数据源关键信息点数据源概述(1)分割ID列,ID列不能直接参与特征计算。(2) IS_ACTIVE和SEX代表是一个分类型变量,但由于使用0和1来标记数据,因此可直接参与计算。如果使用0-1-2甚至更多分类数值索引,则需要单独做处理。(3)AVG_ORDERS和AVG_MONEY具有明显的量纲差异,如果直
5、接做相似度计算,那么结果会直接受到量纲的影响,因此需要做量纲归一化或标准化处理。第9页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征导入库案例过程import pandas as pd # panda库from sklearn.preprocessing import MinMaxScaler # 标准化库from sklearn.cluster import KMeans # 导入sklearn聚类模块from sklearn.metrics import silhouette_score # 效果评估模块第10页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征读取
6、数据案例过程cluster_data = pd.read_excel(demo.xlsx,sheet_name=0,index_col=USER_ID)print(cluster_data.head(3)第11页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征数据预处理案例过程scaler = MinMaxScaler() scaled_features = scaler.fit_transform(cluster_data) # 标准化 print(scaled_features:2,:) 第12页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征用户聚类案例过程mod
7、el_kmeans = KMeans(n_clusters=3, random_state=0) # 建立聚类模型对象model_kmeans.fit(scaled_features) # 训练聚类模型设置聚类数量为3random_state为0第13页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征模型评估案例过程n_samples, n_features = cluster_data.shape # print(samples: %d t features: %d % (n_samples, n_features) # silhouette = silhouette_score
8、(scaled_features, model_kmeans.labels_, metric=euclidean) # 使用轮廓系数(Silhouette)检验聚类模型的质量结果print(silhouette score:,silhouette) # 第14页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征组合原始数据与标签案例过程kmeans_labels = pd.DataFrame(model_kmeans.labels_,index=cluster_data.index,columns=labels) # kmeans_data = pd.concat(cluster_d
9、ata,kmeans_labels),axis=1) # 将原始数据框和聚类结果数据框按列合并print(kmeans_data.head(3) # 第15页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征基于聚类群组汇总特征案例过程radar_gb = kmeans_data.groupby(labels,as_index=False).mean()print(radar_gb)第16页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征基于聚类群组汇总特征案例过程radar_gb.plot(kind=bar, x=labels,y=AVG_ORDERS,AVG_MONE
10、Y,IS_ACTIVE,SEX, figsize=(10, 4),logy=True, title=不同聚类分组结果对比)第17页,共147页。7.1使用KMeans聚类算法挖掘用户潜在特征用户的各类别情况用户特征分析(1)Labels值为0(命名为A组)的群组特征是平均订单量和平均订单价值较低,活跃度一般的群体,主要是男性用户。(2)Labels值为1(命名为B组)的群组特征是平均订单量和平均订单价值较高,活跃度低(甚至是不活跃),主要是女性用户。(3)Labels值为2(命名为C组)的群组特征是平均订单量和平均订单价值比B组略低,活跃度很高,主要是女性用户。第18页,共147页。7.2 使
11、用CART预测用户是否会产生转化分类的概念算法引言分类算法通过对已知类别训练集的计算和分析,从中发现类别规则并预测新数据的类别。分类算法是解决分类问题的方法,是数据挖掘、机器学习和模式识别中一个重要的研究领域。第19页,共147页。7.2 使用CART预测用户是否会产生转化分类的应用场景算法引言分类的主要用途和场景是“预测”,基于已有的样本预测新样本的所属类别。例如信用评级、风险等级、欺诈预测等;同时,它也是模式识别的重要组成部分,广泛应用到机器翻译,人脸识别、医学诊断、手写字符识别、指纹识别的图像识别、语音识别、视频识别的领域。分类算法也可以用于知识抽取,通过模型找到潜在的规律,帮助业务得到
12、可执行的规则。第20页,共147页。7.2 使用CART预测用户是否会产生转化分类的常用算法算法引言素贝叶斯、逻辑回归、决策树、随机森林、支持向量机、GBDT、XGboost等第21页,共147页。7.2 使用CART预测用户是否会产生转化业务需求案例背景业务方希望数据部门能对转化用户做分析,然后找到转化用户的典型特征,即哪些特征对于转化用户最重要,然后针对这些特征做特定的业务动作。同时,对一些新的用户做预测,得到其转化的可能性和是否会转化。第22页,共147页。7.2 使用CART预测用户是否会产生转化需求解读案例背景(1)其中包含特征提取的分析工作,目标交付物是特征重要性。(2)需要预测得
13、到用户的转化概率和转化标签两个信息。因此,经过梳理后,我们决定使用决策树的分类算法来实现。第23页,共147页。7.2 使用CART预测用户是否会产生转化从促销活动系统和CRM系统获取,数据共725条记录、12个字段列,并含有缺失值,具体如下:数据源概述(1)USER_ID:用户ID。(2)LIMIT_INFOR:用户购买范围限制类型,分类型数值索引。(3)CAMPAIGN_TYPE:用户对应的促销活动的类型,分类型数值索引。(4)CAMPAIGN_LEVEL:用户对应的促销活动的等级,分类型数值索引。(5)PRODUCT_LEVEL:活动对应的产品等级,分类型数值索引。第24页,共147页。
14、7.2 使用CART预测用户是否会产生转化从促销活动系统和CRM系统获取,数据共725条记录、12个字段列,并含有缺失值,具体如下:数据源概述(6)RESOURCE_AMOUNT:商品资源对应的备货数量,以千为单位,数值型。(7)EMAIL_RATE:用户历史上的email打开率,浮点型。(8)PRICE:商品对应的价格,数值型。(9)DISCOUNT_RATE:商品对应的折扣率,浮点型。第25页,共147页。7.2 使用CART预测用户是否会产生转化从促销活动系统和CRM系统获取,数据共725条记录、12个字段列,并含有缺失值,具体如下:数据源概述(10)HOUR_RESOUCES:商品资源
15、售卖的时间,以小时计,数值型。(11)CAMPAIGN_FEE:商品对应的促销活动费用。(12)ORDERS:是否会产生订单转化,转化为1,否则为0。第26页,共147页。7.2 使用CART预测用户是否会产生转化数据源关键信息点数据源概述其中ORDERS 为目标字段;LIMIT_INFOR,CAMPAIGN_TYPE,CAMPAIGN_LEVEL,PRODUCT_LEVEL,RESOURCE_AMOUNT为分类型变量,虽然是数值型索引,但并不是连续性属性,后续处理时需要注意其余字段为数值型字段。第27页,共147页。7.2 使用CART预测用户是否会产生转化导入库案例过程import pan
16、das as pdfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score第28页,共147页。7.2 使用CART预测用户是否会产生转化读取数据案例过程tree_data = pd.read_excel(demo.xlsx,sheet_name=1,index_col=USER_ID)x
17、,y = tree_data.iloc:,:-1,tree_data.iloc:,-1print(tree_data.head(1)第29页,共147页。7.2 使用CART预测用户是否会产生转化数据预处理案例过程null_val = x.isnull().any(axis=0) # print(null_valnull_val=True) # x = x.fillna(x.mean() # x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.3, random_state=0) # 将x和y按照训练集70%
18、、测试集30%的比例拆分数据为训练集和测试第30页,共147页。7.2 使用CART预测用户是否会产生转化训练模型案例过程model_tree = DecisionTreeClassifier(max_depth=4,class_weight=balanced) # model_tree.fit(x_train, y_train) # pre_y = model_tree.predict(x_test) # max_depth指定树最大深度为4,通过class_weight=balanced设置根据不同的类别的样本量分布自动平衡权重,该方法常用于样本不均衡分布的场景第31页,共147页。7.2
19、 使用CART预测用户是否会产生转化模型评估案例过程metrics = accuracy_score,precision_score,recall_score,f1_score # scores = i(y_test, pre_y) for i in metrics # 使用列表推导式,依次计算每个回归评估指标结果columns = i._name_ for i in metrics # 基于函数的_name_属性得到函数名scores_pd = pd.DataFrame(scores,index=columns).T # print(scores_pd) # 第32页,共147页。7.2 使
20、用CART预测用户是否会产生转化模型评估案例过程(1) accuracy_score:准确率(Accuracy),分类模型的预测结果中将正例预测为正例、将负例预测为负例的比例,取值范围0,1,值越大说明分类结果越准确。(2) precision_score:精确度(Precision),分类模型的预测结果中将正例预测为正例的比例,取值范围0,1,值越大说明分类结果越准确。第33页,共147页。7.2 使用CART预测用户是否会产生转化模型评估案例过程(3) recall_score:召回率(Recall),分类模型的预测结果被正确预测为正例占总的正例的比例,取值范围0,1,值越大说明分类结果越
21、准确。(4) f1_score:F1得分(F-score),准确度和召回率的调和均值,取值范围0,1,值越大说明分类结果越准确。第34页,共147页。7.2 使用CART预测用户是否会产生转化展示特征重要性案例过程feature_pd = pd.Series(model_tree.feature_importances_,index=x.columns)feature_pd.sort_values().plot(kind=barh,figsize=(10, 4), title=特征重要性评估)第35页,共147页。7.2 使用CART预测用户是否会产生转化重新训练模型并预测案例过程new_da
22、ta = pd.read_csv(tree.txt,index_col=USER_ID) # model_tree.fit(x,y) # print(model_tree.predict(new_data) # proba_data = pd.DataFrame(model_tree.predict_proba(new_data),columns=model_tree.classes_) # print(proba_data) # 在模型效果确认相对较好的前提下,使用完整的数据集做训练,能够获得更完整的数据信息,因此这里重新训练模型再对新数据做预测。第36页,共147页。7.2 使用CART预
23、测用户是否会产生转化重新训练模型并预测案例过程第37页,共147页。7.2 使用CART预测用户是否会产生转化预测的predict和predict_proba方法分析用户的转化可能性predict用来预测用户的最终结果类别属于哪一类,如属于第一类还是第二类predict_proba方法预测得到的结果是用户属于每一类的概率,有几个预测类别就有几列预测概率。第38页,共147页。7.2 使用CART预测用户是否会产生转化预测的predict和predict_proba方法分析用户的转化可能性一般情况下,用户属于哪个类别基于50%的基准阈值做划分,以本案例为例,当属于0这个类别的概率大于50%时则分
24、类为0,否则分类为1。两种方法结合起来,predict得到的分类结合说明了用户的分类,而predict_proba则说明了用户有多大程度上属于这一类,90%的概率和60%虽然在predict会得到相同的预测结果,但是90%的概率却在程度上要远高于另一个,即显示出“非常确认”的可信度。第39页,共147页。7.2 使用CART预测用户是否会产生转化结论分析用户的转化可能性每个用户在转化可能性上,都是“比较确信”用户不会转化,因为其为0的概率是60%70%左右,虽然比50%基准值高,但也没有到80%甚至以上的“非常确认”的程度。第40页,共147页。7.3 使用主成分分析+岭回归预测广告UV回归的
25、概念算法引言回归是研究自变量x对因变量y影响的一种数据分析方法。最简单的回归模型是一元线性回归(只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示),可以表示为Y=0+1x+,其中Y为因变量,x为自变量,1为影响系数,0为截距,为随机误差。第41页,共147页。7.3 使用主成分分析+岭回归预测广告UV回归的应用场景算法引言回归分析是广泛应用的统计分析方法,可用于分析自变量和因变量的影响关系(通过自变量求因变量),也可以分析自变量对因变量的影响方向(正向影响还是负向影响)。回归分析的主要应用场景是进行预测和控制,如计划制订、KPI制定、目标制定等方面;也可以基于预测的数据与实际数据
26、进行比对和分析,确定事件发展程度并给未来行动提供方向性指导。第42页,共147页。7.3 使用主成分分析+岭回归预测广告UV回归的常用算法算法引言线性回归、二项式回归、对数回归、指数回归、核SVM、岭回归、Lasso等。第43页,共147页。7.3 使用主成分分析+岭回归预测广告UV业务需求案例背景在做大型活动促销前一天的上午,业务方得到了一些数据,想要基本现有的数据做些预测UV数。但限制条件是,1个小时之内必须给出结果,在线等,挺急的!第44页,共147页。7.3 使用主成分分析+岭回归预测广告UV需求解读案例背景(1)这是一次回归任务,目标是预测数值。(2)由于时间紧任务重,因此无法通过非
27、常深入的观察、探索性分析、深入的算法选择和参数调优等方式得到最优结果,因此必须在有限时间内得到尽量好的结果。(3)该次工作不注重中间过程,只要求输出最后结果。第45页,共147页。7.3 使用主成分分析+岭回归预测广告UV从网站分析和广告系统获取,数据共93条记录、5个字段列,无缺失值,具体如下:数据源概述(1)MONEY:广告费用,数值型。(2)TYPE:广告类型,字符串类。(3)SIZE:广告尺寸,字符串型。(4)PROMOTION:促销卖点,字符串型。(5)UV:独特访客数量,数值型。第46页,共147页。7.3 使用主成分分析+岭回归预测广告UV数据源关键信息点数据源概述TYPE、SI
28、ZE和PROMOTION需要做OneHotEncode转换,以实现可以做距离计算的目的。MONEY由于量纲(数据分布范围和量级)更其他的字段不同,需要做标准化处理。第47页,共147页。7.3 使用主成分分析+岭回归预测广告UV导入库案例过程import pandas as pdimport numpy as npfrom sklearn.linear_model import Ridgefrom sklearn.decomposition import PCAfrom sklearn.preprocessing import OrdinalEncoder,OneHotEncoder,MinM
29、axScalerfrom sklearn.pipeline import Pipelinefrom sklearn.model_selection import cross_val_scorefrom sklearn.metrics import make_scorer,mean_absolute_error,mean_squared_error,median_absolute_error # 多种回归评估指标第48页,共147页。7.3 使用主成分分析+岭回归预测广告UV读取数据案例过程ad_data = pd.read_excel(demo.xlsx,sheet_name=2)print(
30、ad_data.head()第49页,共147页。7.3 使用主成分分析+岭回归预测广告UV数据预处理案例过程cols = TYPE,SIZE,PROMOTION # cate_model = Pipeline(ode, OrdinalEncoder(), (ohe, neHotEncoder(categories=auto,sparse=False) # 使用Pipeline方法将字符串转数值索引和哑编码转换结合起来cate_data = cate_model.fit_transform(ad_datacols) # num_model = MinMaxScaler() # num_data
31、 = num_model.fit_transform(ad_dataMONEY) # 第50页,共147页。7.3 使用主成分分析+岭回归预测广告UV生成最终模型为x和y案例过程x = np.hstack(cate_data,num_data) # y = ad_dataUV # 使用numpy的hstack方法,将类别型特征和数值型特征数据框合并起来第51页,共147页。7.3 使用主成分分析+岭回归预测广告UV训练模型案例过程pipe_model = Pipeline(pca, PCA(n_components=0.85), (ridge, Ridge() # 基于PCA主成分分析和岭回归
32、组件组合评估器pipe_model.fit(x,y) # 主成分分析通过n_components=0.85设置只选择方差解释比例超过85%的主成分第52页,共147页。7.3 使用主成分分析+岭回归预测广告UV模型评估案例过程metrics = mean_absolute_error,mean_squared_error,median_absolute_error # columns = i._name_ for i in metrics # scores = cross_val_score(pipe_model, x, y, cv=3,scoring=make_scorer(i),n_job
33、s=-1) for i in metrics # 通过cross_val_score来做交叉检验reg_pd = pd.DataFrame(scores,index=columns).T.round(1) # print(reg_pd) # 指定cv数量为3,每个指标做3次交叉检验;scoring=make_scorer(i)将每个遍历出来的评估指标函数转换为评估对象;n_jobs=-1设置启用所有的CPU资源做交叉检验计算,这样可以提高计算速度第53页,共147页。7.3 使用主成分分析+岭回归预测广告UV模型评估案例过程第54页,共147页。7.3 使用主成分分析+岭回归预测广告UV模型评
34、估案例过程(1)mean_absolute_error:平均绝对值误差(MAE),指所有单个估计值与算术平均值的偏差的绝对值的平均,平均绝对误差可以避免误差相互抵消的问题,因而可以准确反映实际预测误差的大小。(2)mean_squared_error:均方差(MSE),估计值与真值之差平方的期望值,值越小越好,该指标计算方便,因此使用较为广泛。(3)median_absolute_error:中值绝对误差,与MAE类似,用中位数代替均值。第55页,共147页。7.3 使用主成分分析+岭回归预测广告UV展示不同交叉检验结果案例过程reg_pd.plot(kind=bar,figsize=(10,
35、 4), logy=True,title=不同聚类分组结果对比)第56页,共147页。7.3 使用主成分分析+岭回归预测广告UV预测新数据案例过程data_new = pd.read_csv(ad.txt) # cate_data_new = cate_model.transform(data_newcols) # num_data_new = num_model.transform(data_newMONEY) # x_new = np.hstack(cate_data_new,num_data_new) # print(pipe_model.predict(x_new).round(0)
36、# 第57页,共147页。7.3 使用主成分分析+岭回归预测广告UV通过predict方法获得结果获得广告UV量通过上述predict得到的结果,可以直接给到业务部门,然后业务部门基于UV值制定广告目标、与营销平台做商务谈判与合作等。需要注意的是,由于回归预测得到的结果是浮点型,因此需要保留整数才能使用。第58页,共147页。7.4 使用Apriori关联分析提高商品销量关联的概念算法引言关联分析通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则,它是从大量数据中发现多种数据之间关系的一种方法它也可以基于时间序列对多种数据间的关系进行挖掘。关联分析的典型案例是“啤酒
37、和尿布”的捆绑销售,即买了尿布的用户还会一起买啤酒。第59页,共147页。7.4 使用Apriori关联分析提高商品销量关联的应用场景算法引言关联规则相对其他数据挖掘模型更加简单,易于业务理解和应用购物篮分析等,通过分析用户同时购买了哪些商品来分析用户购物习惯第60页,共147页。7.4 使用Apriori关联分析提高商品销量关联的常用算法算法引言Apriori、FP-Growth、PrefixSpan、SPADE、AprioriAll、AprioriSome第61页,共147页。7.4 使用Apriori关联分析提高商品销量业务需求案例背景业务方希望数据部门能对用户的购买数据做分析,从而得到
38、用户的商品频繁模式,例如哪些商品之间经常一起购买。这样业务部门就能根据用户的频繁模式,做相应的打包销售或产品组合销售第62页,共147页。7.4 使用Apriori关联分析提高商品销量需求解读案例背景(1)业务方需求可通过关联算法得到结果。(2)关联分析的结果需要能给出一些针对性的指标和分析建议,这样业务方可以有效选择规则并应用。(3)默认的业务希望得到有效规则,但是实际上,除了给他们有效规则外,我们还可以提供频繁的“互斥规则”给到业务方,来驱动他们避免互动信息给运营带来的潜在风险。第63页,共147页。7.4 使用Apriori关联分析提高商品销量从销售系统中获取,数据共10000条记录、3
39、个字段列,无缺失值,具体如下:数据源概述(1)ORDER_ID:订单ID(2)ORDER_DT:订单日期(3)ITEM_ID:订单中的商品ID第64页,共147页。7.4 使用Apriori关联分析提高商品销量数据源关键信息点数据源概述由于每个订单内可能包含有多个商品,因此一个订单ID会有对应多个商品名称的情况,并且多个商品会被拆分为多行第65页,共147页。7.4 使用Apriori关联分析提高商品销量导入库案例过程from dataclasses import dataclassimport pandas as pdimport aprioridataclasses 是Python3.7新
40、增用法,本案例导入用来定义类中用到的属性Apriori则是本地的代码库,这是一个Python文件,里面已经封装了实现apriori的逻辑的代码第66页,共147页。7.4 使用Apriori关联分析提高商品销量定义关联应用类对象案例过程dataclassclass ASSO: # 类名 sup: float = 0.01 # 最小支持度 conf: float = 0.05 # 最小置信度 staticmethod def bulid_sets(data): # 构建数据集 order_data = dataORDER_ID, ITEM_ID # order_list = order_data
41、.groupby(ORDER_ID)ITEM_ID.unique().values.tolist() # 统计每个订单中ITEM_ID的数量,对其做计数统计 return list(i) for i in order_list if len(list(i) 1 # def generate_rule(self, order_list): # L, suppData = apriori.apriori(order_list,minSupport=self.sup) # return apriori.generateRules(order_list, L, suppData,minConf=sel
42、f.conf) # 第67页,共147页。7.4 使用Apriori关联分析提高商品销量读取数据案例过程raw_data = pd.read_excel(demo.xlsx,sheet_name=3)print(raw_data.head(3)第68页,共147页。7.4 使用Apriori关联分析提高商品销量调用类实例并构建数据集案例过程ass_model = ASSO(0.01,0.05) # order_list = ass_model.bulid_sets(raw_data) # 调用ass_model的bulid_sets方法,将上面读取的数据传入,将数据转换为列表形式,其中每一个子
43、列表都是每个订单内的商品ID列表。转换后的数据格式为912614671, 919214556, 919214554, 913204601, 912538662, 912531673, 919214555, 910914651, 912614671, 912528662, 910420652, 919214556, 919214555, 912531673, 910527661第69页,共147页。7.4 使用Apriori关联分析提高商品销量调用类实例并输出关联结果案例过程rules = ass_model.generate_rule(order_list) # columns = ITEM_
44、ID1, ITEM_ID2, INSTANCE, SUPPORT, CONFIDENCE,LIFT # model_result = pd.DataFrame(rules, columns=columns) # 规则原始样例(frozenset(912528662), frozenset(910615651), 30, 0.0169, 0.119, 0.626), (frozenset(910615651), frozenset(912528662), 30, 0.0169, 0.089, 0.626),第70页,共147页。7.4 使用Apriori关联分析提高商品销量调用类实例并输出关联结
45、果案例过程打印输出前3条dataframe数据 ITEM_ID1 ITEM_ID2 INSTANCE SUPPORT CONFIDENCE LIFT0 (912528662) (910615651) 30 0.0169 0.1190 0.62601 (910615651) (912528662) 30 0.0169 0.0890 0.62602 (919214555) (910615651) 28 0.0158 0.1481 0.7790第71页,共147页。7.4 使用Apriori关联分析提高商品销量模型评估案例过程(1)前项:前项指规则中的第一个项目集。(2)后项:前项指规则中的第二个项
46、目集,前项和后项共同组成规则。(3)实例数:特定规则在所有记录中出现的频次。(4)支持度:特定规则在所有记录中出现的频率,计算方式为:实例数/总记录数。支持度越高说明规则出现的概率越频繁,即越经常出现。第72页,共147页。7.4 使用Apriori关联分析提高商品销量模型评估案例过程(5)置信度:包含前项的事务中同时包含后项的事务的比例(即前项发生后,后项发生的概率)。置信度越高说明这个规则越可靠。(6)提升度:“包含前项的事务中同时包含后项的事务的比例”与“包含 B 的事务的比例”的比例。提升度大于1说明规则是正向有效的,小于1说明规则是负向作用的,等于1说明规则没有任何作用。一般情况下,
47、选择大于1值的规则。第73页,共147页。7.4 使用Apriori关联分析提高商品销量过滤lift1的规则案例过程valid_result = model_resultmodel_resultLIFT1print(valid_result.head()第74页,共147页。7.4 使用Apriori关联分析提高商品销量过滤lift1的规则案例过程valid_result = model_resultmodel_resultLIFT1print(valid_result.head()第75页,共147页。7.4 使用Apriori关联分析提高商品销量展示关联分析结果案例过程from pyech
48、arts.charts import Graphfrom pyecharts import options as opts# 找到所有的节点,即前项和后项商品集合并添加node_data = valid_resultITEM_ID1.append(valid_resultITEM_ID2)value_count = node_data.value_counts()nodes = opts.GraphNode(name=str(node), symbol_size=int(np.log(value)*10) for node,value in zip(value_count.index,valu
49、e_count.values)links = opts.GraphLink(source=str(i), target=str(j) for i,j in valid_resultITEM_ID1,ITEM_ID2.values# 画出关系图graph = Graph()graph.add(, nodes, links, repulsion=2000)graph.set_global_opts(title_opts=opts.TitleOpts(title=商品交叉销售关系)graph.render_notebook()第76页,共147页。7.4 使用Apriori关联分析提高商品销量展示关
50、联分析结果案例过程第77页,共147页。7.4 使用Apriori关联分析提高商品销量如何通过关联分析结果提高销量?通过关联分析结果提高销量(1)捆绑销售:将用户频繁一起购买的商品组成销售包,每次售卖时组合销售。(2)页面促销设计:将用户频繁一起购买的商品、品类、品牌等,放在较近的位置,方便用户在查看特定商品内容之后,方便地找到其他要买的商品,减少内部转化路径的长度。第78页,共147页。7.4 使用Apriori关联分析提高商品销量如何通过关联分析结果提高销量?通过关联分析结果提高销量(3)货架设计:线上商品陈列设计(例如不同类型的商品列表页)、线下的货柜或货架设计,将用户频繁一起购买的商品
51、放到一起和临近的位置。(4)活动促销设计:在通过不同的方式精准触达用户时,例如使用EDM给用户推送商品活动,将用户经常购买的商品一起推送。(5)推荐系统:当用户将特定商品加入购物车之后,推荐他还可能买的其他商品,尤其在加入购物车按钮事件触发时、我的购物车页面、提交订单成功提示页常用。第79页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面序列关联的概念算法引言序列关联相对于普通关联分析的主要区别在于其中包含严格的前后序列关系。例如,用户在不同的订单下分别买了A和B两个商品,与用户在一个订单一起购买了A和B商品所适用的关联算法不同:前者属于序列关联模式,后者属于普通关
52、联模式。第80页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面序列关联的应用场景算法引言用户页面浏览的先后行为分析用户购买的商品的先后分析尤其在精准营销、个性化推荐等方面应用广泛第81页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面序列关联的常用算法算法引言Prefixspan、GSP、FreeSpan第82页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面业务需求案例背景业务方从Google Big Query拿到用户浏览页面的详细数据,希望数据部门能对从中挖掘出用户浏览的行为模式,然后基于该模式可以分析
53、不同用户以及群组的行为路径和特征,最终在页面设计、活动促销、站内运营、体验优化等方面做数据驱动的优化。第83页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面需求解读案例背景(1)业务方需求可通过序列关联算法得到结果。(2)关联分析的结果需要能给出一些针对性的指标和分析建议,这样业务方可以有效选择规则并应用。第84页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面从Google BigQuery系统获取,共有9638条记录,共3列,无缺失值,具体如下:数据源概述(1)FULL_VISITOR_ID:识别唯一匿名访客所用的ID(2)PAGE
54、_URL:浏览的页面URL(3)VIEW_TIME:浏览时间第85页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面数据源关键信息点数据源概述由于基于时间序列的关联,核心是要在原有关联基础上增加时间的关系,因此要求时间列必须能正确识别和解析,然后才能基于时间做排序。第86页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面导入库案例过程from dataclasses import dataclassimport pandas as pdfrom prefixspan import PrefixSpan as pfs使用pip instal
55、l prefixspan 可安装prefixspan第87页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面定义序列关联应用类对象案例过程dataclassclass SEQV: mini_support: int = 2 # 最小支持度 max_len: int = 2 # 序列最大项目数量 staticmethod def bulid_sets(data: pd.DataFrame): # 将事务型数据转换为序列数据集 order_list = data.groupby(FULL_VISITOR_ID)PAGE_URL.unique().values.tolis
56、t() order_records = list(i) for i in order_list order_filter = i for i in order_records if len(i) 1 return order_filter第88页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面定义序列关联应用类对象案例过程# 继续上一页代码 def fit(self, frequent_seq_data): ps = pfs(frequent_seq_data) # 建立对象 # TODO 设置最长和最短序列长度-只要二项集,这是挖掘规则数量的关键 ps.maxle
57、n = ps.minlen = self.max_len rec_sequences = ps.frequent(self.mini_support) # 获取最小支持度为2的频繁项集 return rec_sequences第89页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面定义序列关联应用类对象案例过程# 继续上一页代码 def format_output(self, rec_sequences): target_sequence_items = i0, i10, i11 for i in rec_sequences # 格式化二项集 sequences =
58、 pd.DataFrame(target_sequence_items, columns=SUPPORT, ITEM_ID1,ITEM_ID2) # 建立数据框 # 按支持度倒叙排序 sequences_sort = sequences.sort_values(SUPPORT, ascending=False) return sequences_sortITEM_ID1, ITEM_ID2, SUPPORT第90页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面读取数据案例过程page_data = pd.read_excel(demo.xlsx,sheet_nam
59、e=4) # print(page_data.dtypes) # print(page_data.head(3) # 第91页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面按时间排序案例过程page_sort = page_data.sort_values(FULL_VISITOR_ID,VIEW_TIME)print(page_sort.tail(3)第92页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面应用序列关联分析案例过程seq_model = SEQV(mini_support=2,max_len=2) # frequent
60、_seq_data = seq_model.bulid_sets(page_sort) # rec_sequences = seq_model.fit(frequent_seq_data) # sequences_sort = seq_model.format_output(rec_sequences) # print(sequences_sort.head(3) # 第93页,共147页。7.5 使用Prefixspan序列关联找到用户下一个访问页面如何引导用户访问特定页面通过序列模式引导用户页面访问行为假如用户在访问了bagmncode.html之后,应该引导用户访问其他哪些页面,才能在保
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年夏季食品安全整治专项行动实施方案
- 2026年齐齐哈尔高等师范专科学校单招职业倾向性考试题库及参考答案详解1套
- 2026年淮北市第一中学公开引进学科竞赛教练员(合肥站)6名考试重点题库及答案解析
- 2026年武汉警官职业学院单招职业适应性考试题库及参考答案详解
- 证券IT项目主管的常见面试问题及答案解析
- 2026年广西制造工程职业技术学院单招职业倾向性考试题库及完整答案详解1套
- 2026年昆明卫生职业学院单招综合素质考试题库含答案详解
- 2026山西崇安能源发展有限公司招聘45人考试重点题库及答案解析
- 2026年昆明卫生职业学院单招职业适应性考试题库附答案详解
- 2026年鄂尔多斯生态环境职业学院单招职业倾向性考试题库附答案详解
- 被压迫者的教育学
- 2025年科研伦理与学术规范期末考试试题及参考答案
- 上市公司财务舞弊问题研究-以国美通讯为例
- 2025年国家开放电大行管本科《公共政策概论》期末考试试题及答案
- 四川省教育考试院2025年公开招聘编外聘用人员笔试考试参考试题及答案解析
- 超市商品陈列学习培训
- 2025年中级煤矿综采安装拆除作业人员《理论知识》考试真题(含解析)
- 2026年鄂尔多斯生态环境职业学院单招职业适应性测试题库必考题
- 2025年电机与拖动基础期末考试题库及答案
- 防喷演练及硫化氢防护流程
- 隧道通风机操作规程及维护指南
评论
0/150
提交评论