版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论第2章数据分析与可视化技术第3章认识数据第4章数据预处理第5章分类概念与方法第6章关联分析概念与方法第7章聚类分析概念与方法第8章大数据挖掘关键技术第9章案例分析第9章案例分析大数据挖掘导论与案例学习目标/Target通过购物篮分析实例,掌握通过机票航班延误预测实例、购物篮分析实例、航空公司客户价值分析实例的学习,掌握数据挖掘标准过程模型的流程,掌握分析问题的角度和方法,掌握数据预处理方法,掌握分类模型、关联分析模型、聚类模型的训练和评估方法,领会具体问题具体分析的重要性。目录/Contents010203机票航班延误预测零售行业购物篮分析航空公司客户价值分析机票航班延误预测9.19.1.1应用背景与目标航空业持续遭受航班延误带来的经济损失,根据美国运输统计局(BTS)的数据显示,2018年美国航班延误20%以上,这些航班延误对美国造成了相当于每年407亿美元的经济影响。欧美及ICAO/CANSO等地区/国际组织认定航班实际起飞时间晚于计划起飞时间15分钟以上为延误航班。航班延误在很多情况下由不可抗力所致(如恶劣天气),航班的延误还会出现连锁反映,影响航班的后续运行,所以针对航班延误不仅要从源头上减少延误的可能,更需要实施航班延误预测,实现在发生大面积延误前,完成对航班未来延误情况的有效评估。对航班延误情况进行预测和分析,对于旅客、航空公司、机场和机票预定平台都具有十分重要的意义,而且能够提前收到航班延误通知,进而合理计划自己的行程对于旅客而言也很重要。9.1.2数据探索与理解
importpandasaspd
frompandas_profilingimportProfileReport
importglob
importos
defgetdata():
fordirname,_,filenamesinos.walk('.\input'):
forfilenameinfilenames:
print(os.path.join(dirname,filename))图9.1数据集中的文件从/网站下载historical-flight-and-weather-data数据集,包含了2019年5月至2019年12月的历史航班延误数据和美国气象数据,数据集中每个月的数据为一个文件,共有8个文件。定义ExploratoryAnalysis.py文件,加载数据,并对数据进行探索和理解。9.1.2数据探索与理解
df=pd.concat([pd.read_csv(f)forfinglob.glob(".\input\*.csv")])
print(df.head())print(df.shape)图9.2数据集示例在getdata()方法中使用glob读取8个文件,因文件中的数据格式全部相同,每个文件中都有35列,使用concat将文件合并为一个DataFrame,作为原始样本,共有5512903个样本,每个样本有35个特征。9.1.2数据探索与理解
profile=ProfileReport(df)
profile.to_file('.\output\Report.html’)returndf图9.3数据集概述数据集中共有36个特征,比原始数据集中的35特征多出的是索引index,共计5512903条记录,数据集的缺失率较低,只有0.1%,且缺失数据在计划起飞时间和计划到达时间特征中,23个特征为数值类型,10个特征为类别,3个特征被定义为拒绝使用的特征,这3个特征分别是day、year和arrival_delay,其中day与索引index的相关性达到0.99839,而到达延误arrival_delay与出发延误departure_delay的相关性达到0.92068,所以day或index、arrival_delay或departure_delay两组特征可以分别选择其一来训练模型,出发年份year全部为2019年,没有实际价值。9.1.2数据探索与理解(a)HourlyDryBulbTemperature_x图(a)是对温度HourlyDryBulbTemperature_x的分位数和描述性统计,分位数统计中最大值为125、最小值为0,中位数为71,Q1值为35,Q3为值81,从分位数统计中可以看出特征值分布较均匀,也没有异常值,从描述性统计中可以看出,特征HourlyDryBulbTemperature_x的标准差为17.332,变异系数为0.25472,中值为68.041,绝对中位差为13.09,偏度为负偏-0.6126,方差为300.28,特征HourlyDryBulbTemperature_x中有2088个缺失数据,可以采用均值或中位数对其填充。(b)HourlyPrecipitation_x从图(b)中可以看出降水量HourlyPrecipitation_x特征的数值中,90%以上为0,数据的分布区间较小,为0~3.86,对缺失数据的处理使用0填充,HourlyPrecipitation_y特征的分布与图(b)中的描述类似。9.1.2数据探索与理解(c)delay_late_aircarft_arrival从图(c)可以看出,前序航班到达延误delay_late_aircarft_arrival中90%的数据为0,即前序航班没有延误,95%的数据都在0~33之间,较大的值可定义为异常数据。天气延误delay_weather、安全延误delay_security、航空系统延误delay_national_aviation_system特征的分布情况与前序航班到达延误的分布情况类似。能见度HourlyVisibility_x和HourlyVisibility_y特征的中位数为10,接近10%的数据为10,两个特征的值中大于10的数据占比很低,可能为异常值,需要删除或替换。(d)departure_delay从图(d)起飞延误departure_delay特征的信息可以看出,该特征中没有缺失值,且与arrival_delay到达延误的相关性很高,两个特征用于标识航班延误,在后期的分析中可统计不同航空公司不同时间段的延误情况,从而对航班延误有更深入的了解。9.1.2数据探索与理解
print("到达延误占比:{0:.2f}".format((df.arrival_delay>0).sum()/df.shape[0]))
print("到达延误15分钟以上占比:{0:.2f}".format((df.arrival_delay>15).sum()/df.shape[0]))
print("到达延误30分钟以上占比:{0:.2f}".format((df.arrival_delay>30).sum()/df.shape[0]))
print("到达延误60分钟以上占比:{0:.2f}".format((df.arrival_delay>60).sum()/df.shape[0]))
print("起飞延误占比:{0:.2f}".format((df.departure_delay>0).sum()/df.shape[0]))
print("起飞和到达延误占比:{0:.2f}".format(((df.arrival_delay>0)&(df.departure_delay\>0)).sum()/df.shape[0]))运行结果如下:图9.6不同延误时间占比9.1.2数据探索与理解
print(df.cancelled_code.value_counts())
print((df.cancelled_code!="N").sum()/df.shape[0])运行结果如下:图9.6取消航班分类统计按照cancelled_code特征统计取消航班的数量,取消航班的统计情况如下:9.1.3数据预处理
importpandasaspd
importnumpyasnp
fromExploratoryAnalysisimportgetdata
defdatapreprocessing():
df=getdata()
#筛选出模型训练需要的特征
columns=['month','day','scheduled_elapsed_time','delay_carrier','delay_weather’,\,'delay_national_aviation_system','delay_security’\,'delay_late_aircarft_arrival’,\'HourlyDryBulbTemperature_x','HourlyPrecipitation_x’,\'HourlyStationPressure_x','HourlyVisibility_x’,\'HourlyWindSpeed_x','HourlyPrecipitation_y’,\'HourlyDryBulbTemperature_y','HourlyStationPressure_y’,\'HourlyVisibility_y','HourlyWindSpeed_y','departure_delay’,\'cancelled_code’]
df=df[columns]定义DataPreprocessing.py文件,在其中定义数据预处理方法datapreprocessing()。利用前述数据探索和理解中的ExploratoryAnalysis.py文件中的方法getdata(),获取数据集并存储在df中,从df中筛选能够影响航班起飞的特征,如机场执勤的延误情况,出发机场和到达机场的天气情况后,形成样本集。代码如下:9.1.3数据预处理对数据集中特征的空值和异常值进行处理,其中对取消的航班,将延误时间设置为所有延误时间的最大值,将提前起飞的航班按照无延误处理,即延误时间归0,对存在异常值的特征,按照数据探索和理解中的分析得出的方法进行替换。各个特征的特征值取值范围大不相同,如风速从0~20不等,温度在20~31之间,对数据集中的特征进行0-1标准化,标准化后可消除不同特征取值对模型的影响。代码未列出。
#cancelled_code和departure_delay特征中无空值#首先将cancelled_code特征中非N的departure_delay替换为departure_delay的最大值df.loc[df.cancelled_code!='N','departure_delay']=df['departure_delay'].max()#departure_delay中的负数为提前起飞,将其替换为0df.loc[df.departure_delay<0,'departure_delay']=0#HourlyDryBulbTemperature,值在0~125之间,服从正太分布,使用均值填充df['HourlyDryBulbTemperature_x'].fillna(df['HourlyDryBulbTemperature_x'].mean(),inplace=True)df['HourlyDryBulbTemperature_y'].fillna(df['HourlyDryBulbTemperature_y'].mean(),inplace=True)#HourlyStationPressure,值在21-31之间,使用均值填充df['HourlyStationPressure_x'].fillna(df['HourlyStationPressure_x'].mean(),inplace=True)df['HourlyStationPressure_y'].fillna(df['HourlyStationPressure_y'].mean(),inplace=True)#HourlyWindSpeed使用均值填充df['HourlyWindSpeed_x'].fillna(df['HourlyWindSpeed_x'].mean(),inplace=True)df['HourlyWindSpeed_y'].fillna(df['HourlyWindSpeed_y'].mean(),inplace=True)#HourlyPrecipitation90%为0,区间0-3.86,用众数填充缺失值,95%位置的数据为0.02df['HourlyPrecipitation_x'].fillna(df['HourlyVisibility_x'].mode()[0],inplace=True)df['HourlyPrecipitation_y'].fillna(df['HourlyVisibility_y'].mode()[0],inplace=True)9.1.4分类模型构建与评估定义DrawGragh.py文件,在其中定义drawGragh()方法,用于绘制混淆矩阵和ROC_AUC曲线,使用图形显示模型的评估结果。模型的评估分为两部分,分别是ROC_AUC曲线,计算准确率、精度、召回率和F1度量。
fromsklearnimportmetricsimportmatplotlib.pyplotaspltdefdrawGragh(y_test,y_pred,y_pred_proba,modelname):#获得混淆矩阵cm=metrics.confusion_matrix(y_test,y_pred)plt.figure(figsize=(60,8))plt.subplot(1,2,1)plt.matshow(cm,fignum=0)plt.colorbar()foriinrange(len(cm)):forjinrange(len(cm)):plt.annotate(cm[i,j],xy=(i,j),fontsize=10,color='w',horizontalalignment='center',\verticalalignment='center')plt.xlabel('Trueclass',fontsize=10)plt.ylabel('Predictedclass',fontsize=10)plt.subplot(1,2,2)fpr,tpr,thresholds=metrics.roc_curve(y_test,y_pred_proba)auc=metrics.auc(fpr,tpr)plt.plot(fpr,tpr,linewidth=1,label='ROC(AUC={:.2f}%)'.format(auc*100),color='red')plt.plot([0,1],[0,1],color='black',linestyle='--')plt.xlabel('FPR',fontsize=10)plt.ylabel('TPR',fontsize=10)plt.xlim(-0.05,1.05)plt.ylim(-0.05,1.05)plt.title(modelname)plt.legend(loc=4,fontsize=10)plt.show()9.1.4分类模型构建与评估定义逻辑回归模型LRModel.py文件,加载数据预处理方法datapreprocessing()获取训练集,在“'__main__'”函数中将departure_delay大于15的样本的“label”标记为1,其他样本的“label”标记为0,样本标签的统计结果如图9.9所示,从图中可以看出,数据集中延误航班的样本有1074844行。
fromDataPreprocessingimportdatapreprocessingfromsklearnimportmetricsfromsklearn.linear_modelimportLogisticRegressionfromsklearn.model_selectionimporttrain_test_splitfromDrawGraphimportdrawGraghfromsklearn.model_selectionimportGridSearchCVdefLRModel(data,target):x_train,x_test,y_train,y_test=train_test_split(data,target,test_size=0.3,random_state=10)lr=LogisticRegression(penalty='l1',C=1.0)lr.fit(x_train,y_train)y_pred=lr.predict(x_test)y_pred_proba=lr.predict_proba(x_test)[:,1]print('LogisticRegression的准确率:{0:.3f}'.format(metrics.accuracy_score(y_test,y_pred)))print('LogisticRegression的精度:{0:.3f}'.format(metrics.precision_score(y_test,y_pred)))print('LogisticRegression的召回率:{0:.3f}'.format(metrics.recall_score(y_test,y_pred)))print('LogisticRegression的F1度量:{0:.3f}'.format(metrics.f1_score(y_test,y_pred)))drawGragh(y_test,y_pred,y_pred_proba,'LRROCCurve')if__name__=='__main__':datasets=datapreprocessing()datasets['label']=0datasets.loc[datasets.departure_delay>15,'label']=1data=datasets.iloc[:,2:-3]target=datasets['label']print(target.value_counts())print(data.columns)LRModel(data,target)9.1.4分类模型构建与评估图9.12决策树模型ROC曲线
图9.13决策树模型评估值图9.14神经网络模型ROC曲线
图9.15神经网络模型评估值9.1.5模型的作用
通过对航班延误数据集的探索和理解,分析得出出发机场和到达机场的天气因素是影响航班延误的最主要因素,理解数据的同时,对数据集中的异常和噪声数据进行清洗处理。使用逻辑回归、CART决策树和MLP神经网络算法训练航班延误预测模型,相比其他模型,在不调节参数的情况下,逻辑回归模型能够更好地预测航班的延误。
通过进一步优化模型,可以得到更具应用价值的航班延误预测模型,这无疑有助于尽早预测航班的延误情况,加之潜在的未知模型和更加精准的数据理解结合后探索新的预测算法,期待航班延误预测有更大的突破,在真实的场景中为航班的延误发挥更加有效的作用,提升机场、航空公司的决策水平和机票代理服务平台的服务水平。零售行业购物篮分析9.2购物篮分析是零售企业的管理者进行决策分析的有效工具。购物篮分析的主要目的是通过对交易数据进行挖掘,找出隐藏的信息从而发现商品之间的一些有价值的联系,为企业的促销、摆架、物流运输等经营策略提供技术支持。随着大型数据库的建立和不断扩充,很多分析人员已经可以从数据库中挖掘潜在的关联规则,从而发现事物间的相互关系,进而帮助商家进行决策、设计和分析顾客的购买习惯。9.2.1应用背景与目标随着市场规模的扩大和交易数量的增多,越来越多的商家意识到购物篮分析的价值。比如,购物篮分析在超市的应用已经比较成熟,其技术在超市可有以下应用:商品布局设计促销活动规划交叉销售精准营销库存管理9.2.1应用背景与目标基于以上背景,本案例在Groceries数据集上进行关联分析,Groceries数据集来自R语言开发环境中的arules程序包,数据集包含某杂货店一个月的9835条交易数据,用于使用Apriori、FP_Growth等算法进行频繁项集的挖掘和关联分析。。通过分析某杂货店一个月的9835条真实交易记录,完成关联规则挖掘,并对挖掘到的关联规则进行解释和分析,为杂货店的经营提供建议,达到购物篮分析的目的。案例包含数据探索与理解、数据预处理、关联规则挖掘与评估和规则解释四部分。其中,关联规则挖掘与评估部分使用Apriori算法筛选频繁项集并产生关联规则,然后结合相关评估指标对所挖掘的关联规则进行评估。9.2.2数据探索与数据理解原始数据集以事务集的形式保存,共9835条记录,包含事务索引和商品类目两个变量。其中商品类目变量为一个集合,包含该次交易涉及到的不同商品类别,商品类别之间使用逗号隔开。初步统计分析可知:数据集共包含9835条购买记录,涉及169件商品,所有商品共计交易43367次,购买商品最多的交易购买了32件商品,该类交易共发生1次;购买商品最少为1件,该类交易共发生2159次,平均每次交易涉及4.4件商品。此处按杂货店每天营业12小时计算,数据集记录的杂货店当月每小时完成27.3次交易,可见杂货铺规模不是很大。数据准备9.2.2数据探索与数据理解在进行关联规则挖掘时,数据量的大小和每条交易记录中商品量的多少对关联规则挖掘过程影响较大,有必要对商品类目和交易事务包含的商品量进行简单的统计分析。为后续设置合理的支持度计数和置信度提供支持,描述统计部分可进行(但不限于)以下工作:商品种类描述统计了解每个事务中包含的所有商品的类别,以及各商品在事务中的分布情况。单次交易商品数量描述统计了解单次交易中商品数量分布。描述统计9.2.3数据预处理原始数据集较为规整,此处数据预处理过程的工作主要集中在数据集的清洗和转换等。Groceries数据集不包含数值型数据。数据清洗的主要工作为确认每次交易中所包含的商品类别是否有重复、是否有错误的名称以及是否有空事务等,并对存在的问题进行恰当的处理。数据转换工作主要包括关联规则挖掘过程中的数据格式的转换,统计计算过程和数据可视化过程的数据的准备等。得益于Groceries数据集干净规整,本案例这部分工作内容较少。9.2.3数据预处理特别地,本案例的杂货店数据集中商品的类别较多,实际应用中还可以对商品进行概念分层,然后对数据进行数据泛化,即把较低层次的概念用较高层次的概念替换来汇总数据。例如,数据集中的蔬菜类别包含“othervegetables”“rootvegetables”“frozenvegetables”“pickledvegetables”“pickledvegetables”“packagedfruit/vegetables”“specialtyvegetables”,通过数据泛化可以把这7种商品统一归为蔬菜类,以商品大类代替具体商品,可以减少商品类别,提高事务集中商品的支持度计数,为挖掘出更好的规则提供有利条件。此处将这部分内容留给读者自主探索。9.2.4关联规则挖掘与评估此处选用Apriori算法进行关联规则挖掘,包含频繁项集的生成和分析、规则的生成和分析两部分。关联规则挖掘和分析过程中,使用了支持度、置信度和提升度对规则进行评估;使用了气泡图和散点图对规则进行可视化展示;最后对规则进行了解释。9.2.4关联规则挖掘与评估数据集中包含的9835个事务为一个杂货店1个月的所有交易记录。基于Apriori算法,频繁项集的生成过程如下:需要指出的是,最小支持度阈值的确定需要经过评估和反复计算,这对频繁项集的关联规则的生成影响较大,甚至后续规则生成部分还会对最小支持度阈值的设定进行再次讨论和重新调整。频繁项集的生成和分析生成候选1-项集确定最小支持度阈值筛选出频繁1-项集生成候选2-项集筛选出频繁2-项集生成候选N-项集筛选出频繁N-项集结束9.2.4关联规则挖掘与评估关联规则的挖掘过程和结果也会受到支持度阈值和置信度阈值的影响。如果设置一个比较高的支持度阈值,可能会丢掉那些支持度低,但置信度较高的规则;相反,则会出现较多冗余的、无意义的规则。因此,一般实验策略是:先设置较低的支持度和置信度阈值,然后逐步提高,根据获得的规则数量,再通过提升度的值进行有效性验证,过滤出有意义的规则。其中提升度表示购买一个商品的同时,对购买另一个商品的提升程度。提升度值越大,表示商品之间的互相影响程度越强。规则的生成和分析9.2.4关联规则挖掘与评估基于以上论述,此处需要进行多次实验,以确定合适的支持度和置信度阈值。在设定能接受的最小支持度时,结合第一步对杂货店运营状况和单个商品交易次数的分析,此处假设:若某种商品一天被交易至少两次,则可以认为其交易较频繁,发现的关联规则或许是感兴趣的模式。由于数据集的时间跨度为一个月,因此当某商品至少被交易60次时便认为它是频繁被交易的商品。所以设定支持度阈值为0.006(60/9835≈0.006);同时,为过滤顾客随机需求引起的伪关联,假定最小置信度为0.2,然后进行频繁项集的生成和关联规则的挖掘,并逐渐调整参数,直到找到所有的规则。规则的生成和分析9.2.4关联规则挖掘与评估经过多次试验,选择最小支持度为0.008、最小置信度为0.3进行关联规则挖掘和结果分析。在所选支持度阈值和置信度阈值的组合条件下,共得到205条符合条件的关联规则。此处首先利用气泡图对所有205条关联规则进行展示,如右图所示。图中横坐标表示关联规则的支持度,纵坐标表示关联规则的置信度,气泡大小表示关联规则的提升度。规则的生成和分析9.2.4关联规则挖掘与评估进一步对比置信度、支持度和提升度之间的关系,绘制散点图矩阵,如右图所示。可见支持度与置信度之间存在一定的相关关系,提升度与支持度和置信度之间亦有相关性,而且随着支持度和置信度的增长,提升度数值在逐渐减小。规则的生成和分析9.2.4关联规则挖掘与评估
规则的生成和分析9.2.5规则解释
9.2.5规则解释需要强调的是,在关联规则挖掘中,较大的提升度值十分重要。当lift值>1时,说明对应的两类商品被同时购买比只有一类商品被购买更为常见。较大提升度值表明一个规则很可能是有价值的,并反映了商品之间的真实联系。按照规则的实用性、适用性等指标,通常将关联规则划分为3大类。(1)可以直接应用在业务上的规则(ActionableRules)。(2)很清晰,但是作用不大的规则(TrivialRulse)。(3)需要额外的研究来判定是否是有用的规则(InexplicableRules)。本案例所挖掘的关联规则大多属于前两类,更多更有效的关联规则有待读者改进数据集中的商品类别后进行挖掘研究。面向购物篮分析的关联规则挖掘是交互式的。应用实践中需要结合业务运营情况不断对挖掘过程进行检查、优化,才能不断发现新的、有意义的关联规则,进而为商业运营提供帮助。航空公司客户价值分析9.3除航班延误外,航空公司还经常面临着旅游客户流失、竞争力下降和资源未充分利用等经营危机和市场竞争。面对激烈的市场竞争,各个航空公司会推出更优惠的营销方案来吸引更多的客户。为制定有效的营销策略,在公司运营中注重客户关系管理,重视客户价值,引入客户价值分析机制是必要的。航空公司可以通过建立客户价值评估模型,对客户分群并分析不同客户群的客户价值,来制定相应的营销策略。9.3.1应用背景与目标案例以航空公司客户价值分析为例,通过分析航空公司客户数据信息,建立客户分群模型对客户进行细分,然后对不同客户群进行客户价值评估,并以此为依据制定相应的个性化营销方案,以达到巩固客户关系,提升企业竞争力,充分利用企业资源的目的。航空公司客户价值分析的目标如下。(1)基于客户数据进行客户分群。(2)分析不同客户群的客户价值。(3)对不同客户群制定对应的营销策略。案例使用k-means聚类算法进行客户分群。聚类算法属于无监督学习算法,k-means聚类算法是常用的聚类算法之一。k-means算法的输入数据是没有标签或目标值的样本,算法对输入的数据样本进行相应的距离计算,根据计算结果将样本数据进行分组,分组原则是误差平方和达到最小。得到分组结果后对每个组设定相应的类别标签,完成数据分群。9.3.1应用背景与目标本案例的具体步骤如下。(1)进行数据抽取,以航空公司的客户飞行记录数据为数据源进行数据整合,形成历史数据集和增量数据集。(2)对历史数据集和增量数据集进行数据探索分析与预处理,了解数据集的基本信息,构建聚类模型的输入数据。(3)基于输入数据构建k-means模型,完成客户分群,进行模型固化。(4)基于客户群的特征进行客户价值分析并制定相应的营销策略,并确定不同客户群的营销策略。(5)确定增量数据集的更新策略,定期将固化的聚类模型和客户价值分析结论应用于新客户。基于此,本案例讨论的内容包含数据探索与理解、数据预处理、聚类模型构建与评估和模型解释与应用4部分。9.3.2数据探索与理解案例使用某航空公司积累的会员档案信息和航班记录数据,数据包含62988条记录,共44个属性。数据集选取宽度为2年的时间段作为分析观测窗口,以2014-03-31为观测窗口的结束时间,抽取了观测窗口内有乘机记录的会员的档案信息和航班记录数据进行整合,得到历史数据集。需要说明的是,对于新增的会员档案信息和会员航班记录数据,航空公司需要以新的时间点作为观测窗口的结束时间,采用与生成历史数据集相同的方式进行数据抽取和整合,形成增量数据集。简单分析可知,历史数据集不是原始记录数据集的简单抽取,而是经过了数据的整合和汇总计算。历史数据集中每一条记录表示一个会员的会员档案信息和观测窗口内的乘机行为信息。数据准备9.3.2数据探索与理解历史数据集中共62988条会员信息,对所有会员档案信息和所有会员的航班记录进行探索分析,有助于后续的客户分群和客户价值分析。同时,数据集中共包含44个属性,训练模型时使用全部44个属性是没有必要的。因此,有必要对数据集进行探索分析。数据集中44个属性按照属性含义可分为记录会员档案信息的属性和记录观测窗口内会员乘机行为信息的属性两类,数据探索以此为依据进行。即分别进行会员档案信息描述统计和会员航班信息描述统计,了解航空公司会员特征画像和价值分布。数据探索9.3.3数据预处理在进行数据预处理之前,有必要确定模型的输入数据。案例使用k-means算法完成客户分群。案例目标包括客户分群、客户价值分析和个性化营销方案制定,以帮助航空公司充分挖掘客户价值,提升企业资源的利用效率。此处考虑以RFM模型为基础进行特征构建,以所构建的结果特征产生k-means模型的输入数据。RFM模型是客户价值管理中应用最广泛的模型。该模型通过一个客户的最近一次消费间隔(Recency)、消费频率(Frequency)以及消费金额(Monetary)3项指标描述客户的价值状况,进而进行客户细分,识别高价值客户。9.3.3数据预处理结合历史数据集各属性含义和航空公司的运营特点,RFM模型中的最近一次消费间隔指标可以使用数据集中的LAST_TO_END属性(记为R)直接表示,消费频率指标可以使用数据集中的FIGHT_COUNT属性(记为F)直接表示。消费金额指标则需要结合航空服务业务进行分析。由于航空票价受到运输距离、航位等级、节假日等多种因素影响,会员客户同样消费金额的飞行记录对航空公司的价值不同,此处选择会员在观测窗口内的累计飞行里程SEG_KM_SUM属性(记为M)和会员在观测窗口内的折扣系数的平均值avg_discount属性(记为C)代替消费金额指标。这样,上述4个指标分别从RFM模型的三个角度来反应客户价值。此外,会员客户的入会时间长短在一定程度上也体现了会员的客户价值,所以增加入会时长指标(记为L)。至此,k-means聚类模型的输入数据包含最近一次乘机时间间隔R、观测窗口内的乘机次数F、观测窗口内的飞行里程M、观测窗口内的平均折扣系数C和会员的入会时间长度L五个特征。9.3.3数据预处理案例使用的历史数据集为合并计算之后的数据集,数据格式较为规范,数据预处理的主要工作包含属性规约、特征构造和数据变换。原始数据中的属性多达44个,此处基于上文结论,保留与确定的5个指标相关的6个属性,分别为FFP_DATE、LOAD_TIME、FLIGHT_COUNT、avg_discount、SEG_KM_SUM、LAST_TO_END。此处保留会员号属性MEMBER_NO,以对每个会员进行区分。剩余的属性与模型计算关系不大,采取删除方式完成属性归约。需要注意的是,属性归约的目的是减少模型输入,并尽可能使模型输入符合具体业务以增加模型的可解释性,因此删除属性是有意义和作用的。完成数据归约后,数据集包含62988条记录,7个属性,每条数据表示一个会员的会员号和会员相关信息。属性规约9.3.3数据预处理数据变换是将数据转换成适当的格式,以适应数据挖掘算法的需要。原始数据集中没有直接给出全部五个指标的值,需要通过原始数据来计算,以构造需要的属性。五个指标的构造方法如下:(1)最近一次乘机时间间隔R,计算方式为:R=LAST_TO_END其中,LAST_TO_END为数据集中的现有属性,R的单位为天,R值越大表示会员最后一次乘机时间离当前观测窗口越远。(2)观测窗口内的乘机次数F,计算方式为:F=FLIGHT_COUNT其中,FLIGHT_COUNT为数据集中的现有属性,F的单位为次,F值越大表示观测窗口内会员的乘机次数越多。属性构造9.3.3数据预处理(3)观测窗口内的累计飞行里程M,计算方式为:M=SEG_KM_SUM其中,SEG_KM_SUM为数据集中的现有属性,M的单位为公里,M值越大表示会员累计飞行里程越长。(4)观测窗口内的平均折扣率C,计算方式为:C=avg_discount其中,avg_discount为数据集中的现有属性,C表示折扣率,没有实际单位,C值越大表示会员舱位对应的折扣系数越大。(5)客户关系长度L,计算方式为:L=LOAD_DATE-FFP_DATE其中,LOAD_DATE为观测窗口的结束时间,FFT_DATE为会员入会时间,L的单位为天,L值越大表示会员入会时间越长,客户关系长度越长。属性构造9.3.3数据预处理数据集中不同属性的值域差异很大,为了防止具有较大值域的属性与具有较小值域的属性相比,权重过大现象的发生,使用z-score方法(或其他方法,此处可进行更进一步的分析探索)将5个属性进行数据标准化处理。标准化后的每个属性均值为0,标准差为1,且成为无量纲指标。至此,数据集已经符合模型的基本要求,接下来可以进入模型的构建和评估阶段建模和计算。属性变换9.3.4聚类模型构建与评估案例基于Python完成,使用sklearn包中的聚类模块完成模型构建。进行k-means模型构建时,需要首先确定簇的个数k(即最终划分的客户群数量),此处使用2个常用的聚类结果评估指标“样本与最近簇质心的距离总和inertia”以及“轮廓系数silhouette”进行结果评估,并结合客户价值评估时对客户群的基本要求,以确定最优的簇个数。其中,inertia值反映聚类结果的精细程度,inertia值越小表示簇内样本相异性越小,聚类效果越好。但是,样本与最近簇质心的距离总和inertia值只考虑聚类结果中类簇内部的样本间的相异性(即簇内距离),没有考察聚类结果中类簇之间的相异性(即簇间距离),因此,手肘图观察inertia值随类簇数k的变化情况,同时考察类簇数k变化时inertia值的变化幅度和变化趋势。此处取不同的k值进行多次实验,手肘图如下图所示,其中inertia值为每次实验的值对应的inertia值的均值。9.3.4聚类模型构建与评估由图可知,k∈[2,10]时,样本与最近簇质心的距离总和inertia随k值增加而减少,其中k=4和k=6时都出现了较为明显的inertia值下降趋势的拐点(即手肘图的“手肘”对应的k值)。k=4时inertia值的变化更明显,而显然k=6时聚类结果的inertia值小,各类簇内部样本的距离更近。9.3.4聚类模型构建与评估轮廓系数silhouette反映聚类结果中簇间距离的大小,silhouette值越趋近于1,表示簇间样本相异性越大,聚类结果越好。根据不同k值的silhouette制作的折线图也被称为轮廓系数图,反映聚类结果的silhouette值随k值的变化情况。轮廓系数silhouette考察聚类结果中簇间距离,是本与最近簇质心的距离总和inertia的补充,同时考虑两个指标,即可得到最优的聚类类簇数目k。同时,由于最终制定的营销策略对应于不同价值的客户群体,聚类模型计算出的客户群不宜过多。此处同样取不同的k值进行多次实验,轮廓系数图如下图所示,其中silhouette值为每次实验的k值对应的silhouette值的均值。9.3.4聚类模型构建与评估由图可知,k∈[2,10]时轮廓系数silhouette取k=2时最优,而根据图9.1.2的结果,k=2时inertia值最大,因此此处取除k=2之外轮廓系数silhouette最大值对应的k值,即k=6。同时,考虑到k=4和k=6时轮廓系数差异较小,且手肘中k=4也是inertia值的拐点之一,因此此处分别对k=4和k=6进行实验,即通过k-means聚类算法分别将会员划分为4个和6个客户群,考察两个k值的聚类结果并分别进行客户分群。9.3.4聚类模型构建与评估需要说明的是,k-means聚类算法为非监督学习算法,确定聚类的簇数量后,在数据集中随机选取k个样本作为聚类的初始质心并开始迭代计算。不同的初始质心常常会得到不同的聚类结果,因此模型的每次运行结果都会有差异。总体而言,本案例多次实验的差异处于可接受范围内。k分别取4和6,多次重复运行k-means聚类算法。再次说明,由于聚类算法为无监督学习算法,每次聚类后类簇均发生变化,实验过程中,按每次聚类结果质心的距离进行匹配,将实验结果中最接近的簇视为一类,多次实验后取质心的均值,每个簇的质心点的均值及其包含的会员数量均值如下表所示,结果保留四位小数,会员数量展示为整数。然后分别分析将会员划分为4类和6类时各客户群的特征,然后确定最终的分群策略和对应的营销策略。9.3.4聚类模型构建与评估9.3.4聚类模型构建与评估9.3.5模型解释与应用将会员划分为4个群体时,分别考察各群体五个特征值的均值,如右图所示。图中客户群1、客户群2、客户群3和客户群4分别对应4个簇的信息表中的簇编号“1”“2”“3”和“4”。图中每行表示一个客户群,每列表示一个指标的平均值,需要注意的是,图中指标的平均值是真实的指标数据标准化之后的数值的平均值。9.3.5模型解释与应用将会员划分为6个群体时,结果如右图所示。图中客户群1、客户群2、客户群3、客户群4、客户群5和客户群6分别对应6个簇的信息表中的簇“1”、“2”、“3”、“4”、“5”和“6”。图中每行表示一个客户群,每列表示一个指标的平均值,需要注意的是,图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024浦口区智慧交通管理系统建设合同3篇
- 2025年外研版二年级语文下册阶段测试试卷含答案
- 2025年外研版二年级语文下册月考试卷含答案
- 2025年上教版必修2化学下册阶段测试试卷含答案
- 2025年湘教版七年级地理下册阶段测试试卷含答案
- 2025年西师新版必修3物理下册月考试卷含答案
- 2025年冀少新版七年级科学上册阶段测试试卷含答案
- 2024版家居房屋装修合同范本
- 2025年教科新版八年级化学下册阶段测试试卷含答案
- 2025年鲁教版九年级生物上册月考试卷含答案
- 2025年公务员考试时政专项测验100题及答案
- 资金审批权限管理规定
- 《工业园区节水管理技术规范(征求意见稿)》编制说明
- GB/T 44186-2024固定式压缩空气泡沫灭火系统
- 血液净化十大安全目标
- 福建省漳州市2024年高一下数学期末调研模拟试题含解析
- 中国保险行业协会官方-2023年度商业健康保险经营数据分析报告-2024年3月
- 家具桌子设计说明
- DB32T3622-2019水利地理信息图形标示
- 4D厨房管理对比
- 2024年大型集团公司IT信息化顶层规划报告
评论
0/150
提交评论