目录
- 挖掘目标
- 分析方法与过程
2.1. 总体流程
2.2. 具体步骤
2.2.1. 维修数据集的特点分析 2.2.2. 维修数据集的预处理
2.2.3. 关联分析
2.3. 结果分析
2.3.1 预处理的结果分析
2.3.2 手机数据集基于 Clementine 结果分析
2.3.3 基于推荐算法的手机数据集分析
2.3.4 推荐算法的评价 - 结论
- 参考文献
- 附件
1. 挖掘目标
本次建模目标是利用维修记录的海量真实数据,采用数据挖掘技术,分析手机各类故障与手机型号、手机各类故障与市场的相互关系,构建反映各类型号手机的常见故障评价指标体系、不同市场和地区手机质量的评价体系,为手机公司的设备储藏提供意见,同时也可为消费者提供购买意见。
2. 分析方法与过程
2.1. 总体流程
本文主要包括如下步骤:
步骤一:维修数据集的特点分析
分析原始维修数据集的特点,发现客户要求服务类型中安装记录与维修记录条数持平;数据缺失严重部分主要集中在购买商场、购机价格、机型属性、工程单号、工程总数、多次维修内机编号、故障原因代码、故障原因描述、维修措施这几个属性;数据噪声严重的部分集中在购机价格、产品型号。
步骤二:数据的预处理及筛选
首先对数据进行去噪处理,并且根据原始数据的“服务商代码”属性进行“服务商所在地”属性的提取。接着对数据集中的各项数据进行统计分析,为了方便进行更深入的研究,选取手机数据集进行进一步的数据挖掘研究。同样需要对手机数据集进行进一步的数据预处理,将“反映问题描述”属性的属性值进行归一化处理,根据购机日期属性及预约日期属性提取手机使用时长。并且利用 clementine12.0 软件分析得知“反映问题描述”属性与手机使用时长、市场级别、服务商所在地区、产品型号相关性较强。
步骤三:利用基于协同过滤的个性推荐算法进行关联分析
基于预处理后的高质量的手机数据集,采用基于协同过滤的个性推荐算法对手机数据集中的属性进行关联分析,并对该设备生产企业的备件储备需求进行预测分析、潜在故障预警分析、易损件及原因分析等方面进行探索分析。
2.2. 具体步骤
2.2.1. 维修数据集的特点分析
设备生产企业伴随着销量的增加,维修也在不断增加,随着时间的推移,越来越多的维修记录被存储到数据库中。当这些数据量积累到一定程度时,必然反映出一定的规则。但是在记录维修数据时,由于人工操作的失误以及客户的遗忘,使得了维修数据集存在缺失、噪声,而这些数据又影响着最终的结果。为了得出比较精确的决策,需先对数据集进行分析处理。从数据库中导出某设备生产企业的 685413 条维修记录数据,从该维修数据集分析可以得出以下特点:
(1) 每条维修记录提供了 29 个属性,属性的基本说明如表 1 所示:
(2) 对数据集中的要求服务类型进行统计,客户要求服务类型为维修的数据记录有314132 条,而安装的数据记录有 302824 条,与维修记录条数持平。因此可以得出该维修数据集不仅仅是商品需要维修的维修记录,而是商品售后服务的记录。
(3) 对数据集中的预约时间进行分析,可以发现预约时间全部在 2013-9 内,因此我们所获得的数据集是该设备生产企业 9 月份中客户预约维修的维修记录,即设备生产企业一个月内的维修工作。
(4) 数据集中各项属性存在部分或大量的数据缺失,缺失严重部分主要集中在购买商场、购机价格、机型属性、工程单号、工程总数、多次维修内机编号、故障原因代码、故障原因描述、维修措施这几个属性。
(5) 数据集中存在噪声数据,噪声严重的部分集中在购机价格、产品型号。由于客户忘记了当初的购机价格、填写价格错误等原因,该数据集中有 484164 条数据记录显示购机价格为 0。同样,可以认为由于工作人员登记方式不同,使得产品型号中存在大量噪声数据—型号的末端存在异常,例如“BCD-398WT-J,”。
2.2.2. 维修数据集的预处理
(1)缺失数据的处理
由于数据集中的数据量大,同时数据中的缺失部分规律不明显,无法找到合理的补充数据规律,那么在数据缺失严重的属性中随意或有限度的补充数据不仅会影响数据的筛选甚至会影响最终的结论。因此在该步骤中不对缺失数据进行处理,而是在后面的处理中针对不同问题对缺失数据进行处理。
(2)噪声数据的处理
利用 excel 表格对数据集中产品型号的错误数据进行修正,去除末端存在异常的型号的末端:选择产品型号——数据——分列——分隔符号——逗号。由于型号与价格的关联不明显,而且有 484164 条价格记录是由于客户忘记当初的购机价格而填写为 0,从剩余的价格记录中难于寻找合理的规律修正错误的价格,因此不对错误价格进行修正。
(3)服务商所在地区的提取
数据集中并没有直接提供服务商的所在地,即提供产品售后服务机构的所在地,但是可以从服务商代码中提取出服务商所在地。利用 excel 表格提取服务商所在地,由于区号在服务商代码的第二个‘-’和第三个’-’之间,因此对于服务商所在地的提取公式为:
MID(服务商代码,FIND("-",服务商代码,3)+1,3)
例 如 : excel 表格中 R58 的 服 务 商 代 码 “ H-SJ-010-0014 ”, 提 取 公 式MID(R58,FIND("-",R58,3)+1,3)可得到 010。010 代表服务商所在地的区号,通过网上查找可得 010 是北京的区号,即可得出该服务商所在地为北京。
(4)数据的筛选
从数据的分析中可知道数据集中含有的 7 种服务要求类型以及 10 种产品大类,从数据集中筛选出安装数据记录,其余的可归为维修记录。利用excel表格做分析如下:
由于不同产品其隐含的规则不同,不能全部一起讨论,需先逐一分析各个产品,而分析方法都相同,不需要对全部进行讨论,只需提取其中的一种产品进行详细的分析,其他产品的分析过程类似。通过观察图 1,得知手机只有维修记录,并且记录数不少,便于分析挖掘其中隐含的规则且不失一般性,因此下面将选择手机进行深入挖掘研究。
(5)手机数据集的预处理
在数据挖掘整体过程中,海量的原始数据中存在着大量杂乱的、重复的、不完整的数据,严重影响到数据挖掘算法的执行效率,甚至可能导致挖掘结果的偏差。为此,在数据挖掘算法执行之前,必须对手机数据集进行预处理,以改进数据的质量,提高数据挖掘过程的效率、精度和性能。
1) 反映问题描述属性的归一化处理
由于数据集中反映问题的描述没有一定的标准,因此对于相同的手机故障,客户反映问题的描述也是各样,例如针对手机白屏问题,就有“开机白屏”和“白屏”这两种不一样的表示方式。不一样的标准不仅影响其他属性与反映问题描述属性进行关联规则分析,更严重影响了研究手机某型号设备出现的常见故障现象,因此需要对反映问题描述属性进行归一化处理。
根据手机故障原因标准准则(见附录 1),利用 excel 表格通过筛选包含相同字样的数据记录,并进行替换。例如:
2)客户手机使用时长的量化处理
根据多次维修属性的反映,每条记录均为否或空白,因此可以假设客户的手机均为第一次维修。观察数据发现购机日期有 430 个缺失数据,而最早的购机日期为 2011-10-10,故使用 2011-10-01 填补空缺数据。将预约日期减去购机日期所得即为客户手机使用时长。
3)手机数据集属性的筛选
由于本文的研究目的在于研究手机常见故障与手机型号、手机各类故障与市场的相互关系,而原始数据共有 29 个属性,所以为了提高算法的的效率和精度,本文只需要对购机日期、预约日期、市场级别、服务商代码、产品型号、反映问题描述进行分析即可。由于服务商代码、产品型号、反映问题描述存在缺失数据,而缺失部分规律不明显,无法找到合理的补充数据规律,所以在此采用忽略缺失数据的处理方法。
将归一化处理后的“反映问题描述”属性与手机使用时长(上述购机日期与预约日期的关联后得到的数据)、市场级别、服务商所在地区(从服务商代码中提取出来的)、产品型号 4 个属性进行变量重要性分析。使用 clementine12.0 软件,通过 Modeling 卡中的 Feature Selection 节点对上面的属性进行变量重要性的分析后得知“反映问题描述(以下简称故障)”属性与手机使用时长、市场级别、服务商所在地区(以下简称地区)、产品型号相关性较强。(见图 2)
2.2.3. 关联分析
随着数据库中的数据量急剧增长,人们获取自己感兴趣的信息越来越困难,面对海量的数据,每个用户希望获取的信息可能仅仅是其中很少的一部分,同时用户的需求常常是模糊的、不明确的,可能会对某些信息存在着潜在的喜好。如果服务提供者能够把信息推荐给用户,就可能把用户的潜在需求变为现实进而盈利。在这种背景下,推荐系统应运而生,推荐系统的实现方法众多,其中基于协同过滤推荐算法理论上可以推荐世界上的任何一种东西,适用性强,也是一种最成功的推荐系统算法。
文本上述研究表明手机使用时长、市场级别、地区、产品型号与故障属性都具有关联,但是各属性的对象很多,而且手机维修记录数目也达到了 47000 多条,这导致了设备生产企业难于分析备件的常见故障及潜在故障预测。查找文献了解到 Apriori 算法基于关联规则的推荐算法的基本算法,利用 clementine12.0 软件进行基于 Apriori 算法的关联规则分析,但是发现结果的支持度及置信度较低。
基于协同过滤的个性推荐算法可以很好的解决该类问题。通过推荐算法可以分析反映问题描述属性与其他属性的关联规则,产生推荐项目,从而构建反映各类型号手机的常见故障评价指标体系、不同市场和地区手机质量的评价体系,为手机公司的设备储藏提供意见,同时也可为消费者提供购买意见。因此本文选择基于协同过滤的个性推荐算法建立模型,进行属性间的关联分析挖掘,完成推荐。
(1) 数据数值化
通过上述的数据处理步骤后得到的手机数据集,包括以下五个属性:使用时长(数值型)、市场级别(字符型)、产品型号(字符型)、地区(字符型)、故障(字符型)。为了方便进行基于协同过滤的个性推荐算法的数据挖掘,需要将属性的数据均数值化。可利用 excel 表格手动将上述属性进行数值化处理,如市场级别属性的处理,其他属性均可如此处理,但是产品型号的类别较多,手动处理耗时,可利用 Matlab 编写函数文件对其数值化。(程序代码见附录 2,属性所对应的数值化可见附录 3 及附录 4)
(2) 基于协同过滤的个性推荐算法的描述
1) 伪用户_项目评分矩阵的构建———用户偏好描述
收集有关用户偏好信息,如用户对商品的评分,通过对原始数据进行清理、转换和录入,最终形成一个 m×n 维矩阵。其中行代表用户,列代表项目。如下表 2 所示, R i , u R_{i,u} Ri,u表示第 i 个用户对项目 u 的评分值,评分值为数值型。
2) 相邻用户矩阵的构建-----寻找最近邻居
在评分矩阵中,用户已评分的项目为实际的评分值,未评分项目用 0 表示。如果用户评分被看作是 n 维项目空间上的向量,余弦相似性就是将用户的相似性通过向量间的余弦夹角度量。设用户 i 和用户 j 在 n 维项目空间上的评分分别用 R i ⃗ \vec{R_i} Ri, R j ⃗ \vec{R_j} Rj表示,在用户 i 和用户 j 之间的相似性计算公式如下所示:
s i m ( i , j ) = c o s ( i , j ) = R i ⃗ ⋅ R j ⃗ ∣ ∣ R i ⃗ ∣ ∣ × ∣ ∣ R j ⃗ ∣ ∣ sim(i,j)=cos(i,j)=\frac{\vec{R_i} \cdot \vec{R_j}}{||\vec{R_i}||\times ||\vec{R_j}||} sim(i,j)=cos(i,j)=∣∣Ri∣∣×∣∣Rj∣∣R