推荐系统中的数据分析(智能推荐系统之数据预处理)
推荐系统中的数据分析(智能推荐系统之数据预处理)缺失值处理的方法有很多种,比如删除记录,中位数填充等,具体方法如下表所示: 缺失值处理的原则:使用最可能的值代替缺失值,使缺失值与其他数值之间的关系保持最大。 现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术。二、数据预处理的原则 如果你拿到一个新数据集并打算模拟其中蕴藏的规律,你很容易直接开干,在上面跑算法,然而这样做是错误的。第一步应该是理解数据本身,先从单变量统计分布的假设开始,如果效果不佳,再逐渐增加分析的复杂度。诸如中位数和箱线图这样的重要统计方法会让你轻松得到关于这些数据的一个大概的分布,这有助于你理解那些在真正分析前要修复的潜在问题。
智能推荐建立在广泛的的用户产品行为数据基础之上,在做推荐之前往往需要对数据进行预处理及分析,只有这样,才能真正理解并搞懂你收集到的数据,并给出更加智能的推荐结果。
一、什么是数据预处理
- 数据
我们把数据定义为一组对象及其属性的集合,其中属性定义为性质或者是对象的特征。对象的其他名称包括记录、物品、得分、样本、观察值或者实例。属性也可以称为变量、字段、属性或者特征。
- 数据预处理
数据预处理(data preprocessing)是指在主要的处理以前对数据进行的一些处理。
现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量产生了数据预处理技术。
二、数据预处理的原则
如果你拿到一个新数据集并打算模拟其中蕴藏的规律,你很容易直接开干,在上面跑算法,然而这样做是错误的。第一步应该是理解数据本身,先从单变量统计分布的假设开始,如果效果不佳,再逐渐增加分析的复杂度。诸如中位数和箱线图这样的重要统计方法会让你轻松得到关于这些数据的一个大概的分布,这有助于你理解那些在真正分析前要修复的潜在问题。
缺失值处理的原则:使用最可能的值代替缺失值,使缺失值与其他数值之间的关系保持最大。
缺失值处理的方法有很多种,比如删除记录,中位数填充等,具体方法如下表所示:
2、异常值处理
异常值是数据集中偏离大部分数据的数据。从数据值上表现为:数据集中与平均值的偏差超过两倍标准差的数据,其中与平均值的偏差超过三倍标准差的数据,称为高度异常的异常值。
删除异常值有整条删除和成对删除,异常值的具体处理方法见下图:
3、数据集成
数据集成是将来自多个数据源的数据合并在一起,形成一致的数据存储,如将不同数据库中的数据集成到一个数据仓库中存储。数据集成主要涉及冗余处理和冲突数据检测和处理。
- 冗余处理
数据冗余是指数据属性过多,且其中部分属性对于业务分析及最终分析没有太多价值。
冗余处理的主要方法是相关分析。
对于数值属性,通过计算属性A和B之间的相关系数来估计这两个属性的相关性即:
- 冲突数据检测与处理
数据集成时将一个数据库的属性与另一个匹配时,要考虑数据的结构,用来保证原系统中的属性函数依赖和参照约束与目标系统中的匹配。例如,重量属性可能在一个系统中以公制单位存放,而在另一个系统中以英制单位存放。
4、数据标准化
数据标准化的主要方法如下图:
- z-score标准化法
z-score标准化方法是一种基于原始数据的均值(mean)和标准差(standard deviation)将原始数据标准化成均值为0方差为1的一种标准化方法,其公式为:
新数据=(原始数据-原始数据均值)/原始数据标准差
适用场景:该方法适用于属性A的最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。
- Dicimal scaling小数定标标准化法
Decimal scaling小数定标标准化方法是一种通过移动数据的小数点位置来进行标准化的方法,其中小数点移动多少位取决于属性A的取值中的最大绝对值。将属性A的原始值x使用decimal scaling标准化到x'的计算方法是:
x'=x/(10*j) [其中,j是满足条件的最小整数]
案例:假定A的值由-986到917,A的最大绝对值为986,为使用小数定标标准化,我们用1000(即,j=3)除以每个值,这样,-986被规范化为-0.986。
- 向量归一化
向量归一化法是一种基于数据最大值对数据进行转化标准化方法,其转化公式为:
指标值均满足在 0~1 之间,并且正、逆向方向没变。
- 线性比例变化法
线性比例变换法是利用数据的线性比例关系对数据进行标准化处理的方法,其转化公式为:
经过线性变换后,指标值均在0~1之间,正、逆向指标均化为正向指标,最优值为1,最劣值为0。
5、数据离散化
数据离散化的方法如下:
- 距离分组
距离分组是数据分箱最基本的方法,包括等距分组和非等距分组。
等距分组:各个组别的上限和下限的差,是相等的。
非等距分组:各个组别的上限和下限的差,不等。
需要注意的是:分组后的数据,如果在后续建模中作为输入变量,用于对输出变量的分类预测,则不恰当的组距分组可能会使某些样本量失衡,影响模型的效果。
- 分位数分组
分位数分组也叫等频分组,是把观察点均匀分为n等份,每份内包含的观察点数相同。
例如:某个主套餐共有5万人订购,等频分段需要先把用户按订购时间按顺序排列,排列好后可以按5000人一组,把全部订购用户均匀分为十段。
- 单变量分组
单变量分组也称为秩分组。方法为将所有变量按降序或者升序排序,排序名次即为分组结果,即是将变量值相同的归为同一组内。
该方法适用于变量的取值范围较小。
- 基于信息熵的离散化
理论依据:如果分组后的输入变量对输出变量取值的解释能力低于分组之前,那么这样的分组是没有意义的。
度量指标:信息熵、信息增益。
信息熵:平均信息量的测量指标。从数据分析角度看,极端情况下如果某输入变量只有一个取值,数据之间没有差异,则这个输入变量并没有给输出变量的分类预测带来任何有意义的信息,也就是说信息熵为0。
信息增益:指定输入变量组限值,可以帮助输出变量的分类预测,信息增益值越高,则输出变量的分类越准确,误差越小。
以上介绍了几点在数据预处理方面要注意及常用的几个方法。当然这些并不能穷尽数据预处理的所有方面,还是那句话:如果你不能彻底搞懂你的数据,你就不能给出更智能,更让用户眼前一亮的推荐。