(login_day.csv),用户访问统计表(visit_info.csv),用户下单表(result.csv)中的user_id
均有大量重复数据,并对其进行处理。因为重复 user_id 的各种特征数值并不相同,所以可能
是在对用户进行标号时产生了差错或产生 user_id 的数据错乱异常。
(2)缺失字段处理
。我们采用随机森林回归填补缺失值的方法对原始数据中存在缺失字段的
数据进行处理。使用随机森林回归填补缺失值任何回归都是从特征矩阵中学习,然后求解连
续型标签 y 的过程,之所以能够实现这个过程,是因为回归算法认为,特征矩阵和标签之前
存在着某种联系。实际上,标签和特征是可以相互转换的,比如说,在一个“用地区,环境,
附近学校数量”预测“房价”的问题中,我们既可以用“地区”,“环境”,“附近学校数
量”的数据来预测“房价”,也可以反过来,用“环境”,“附近学校数量”和“房价”来
预测“地区”。而回归填补缺失值,正是利用了这种思想。下面是核心算法:
以 处 理 用 户 信 息 数 据 为 例 , 通 过 对 用 户 信 息 进 行 数 据 分 析 , 发 现 在 用 户 信 息 表
(user_info.csv)的表格中,有许多用户城市一栏的数据缺失,数据缺失的的原因可能是由于
采样异常或者用户信息未完善所导致,所以对其填充 0(表示未知),并在第二问对用户所
在城市分布情况进行可视化展示时不予考虑。
(3)噪声数据处理
。即对数据中非法数据及异常数据进行去除。本次数据集的研究是为了根
据用户信息预测用户是否下单购买,对所给数据进行分析,对不属于本次预测范围的数据进
行检索。通过数据检索,除重复 user_id 之外,未发现异常数据。
2. 将处理好的四个表格取交集,并整合成新的数据源。
部分表格示例如图所示,详情见附录
四、数据可视化(任务二)
为了对数据有更为直观的认识,对数据进行必要的探索分析,方便进行下一阶段的挖掘
研究。结合用户的基本信息,对用户的各城市分布情况、登录情况进行统计分析。
1. 用户所在城市分布情况
从表格中提取信息并进行分词处理,根据其城市词频制作词云图:
由图可以看出,用户大多来自于重庆,成都,运城等城市,为了更直观展现数据,根据其
城市划分和城市分布的比例绘制地图,颜色越深代表该省用户越多。
由此图可以看出,用户密集区域有重庆四川一带,华北地区,珠三角地区。
2.用户登录情况
①结合用户的基本信息,对用户登录天数进行统计,得到如图 4-3 的饼图:
从图中可以看出大部分用户登录天数在 1-7 天之间,在 2-6 天的用户占比在 60%左右,登
录七天以上的用户不足 20%。
②提取用户登录间隔制作面积图:
色块所占面积越大,说明这种时间间隔出现的越频繁,所以大部分用户的登录间隔在 0-1
之间,可见用户的登录情况比较良好。
③提取用户登录天数于最后登录距期末间隔数据,制作图表:
可以看出用户最后登录时间分布集中在数个区域,并逐渐呈现下降趋势,最后升高。
④提取用户加群与添加销售好友的数据,对比计数,结果如下:
由表可以看出,进群的用户都添加了销售好友,没进群的用户都没有添加。
⑤提取用户关注公众号 1 和关注公众号 2 的数据,制作柱状图:
由柱状图可以看出添加公众号 1 的人数明显多于关注公众号 2,可以理解为用户对于汉语
课程的重视程度要远高于数学。
⑥提取用户领取优惠劵数量的数据制作饼图:
从图中可以发现:高达 90%的用户没有领取优惠券,部分领取用户有极少数领取了大量优
惠券
⑦提取用户学习课程数与完成课程数,制作图表:
黄色曲线代表完成课程的用户数量,蓝色柱状图标识用学习课程的用户数量,轴表示课程
数,蓝色黄色图像重合程度越高,说明用户对于课程的完成程度越好,由图表可以直观反
应出,当用户学习的课程数较多时,用户对于课程完成程度较好,学习课程数少,课程完
成程度也低。
⑧提取用户学习课程与重复学习课程的数据,制作图表:
黄色表示学习课程,蓝色表示复习课程,当蓝色柱越高,表明再该学习课程数下,复习的
比例越高,由图,用户学习课程数越高,用户复习课程的比例也就越大,当用户学习课程
少时,用户很少复习课程。
五、特征构造
1. 特征选择
[1]
特征构造指的是从原始数据构造新特征的处理过程,一般需要根据业务分析,生成能
更好体现业务特性的新特征,这些新特征要与目标关系紧密,能提升模型表现或更好地解释
模型。特征构造需要花费大量的时间思考业务逻辑与探索业务数据,因此,往往需要手工创
建。由于业务的多样性,以及人们认知业务逻辑的差异性,因此特征构造也相应地具备灵活
性与艺术性的特点。
我们为用户的各种数据构造新的特征,目的是为了预测用户是否会下单购买,而数据集
当中的特征并不都是“平等”的,许多与问题无关的特征需要被移除掉,有些特征则对模型
表现影响很大,应当被保留,因此需要对特征进行一定的选择。特征选择方法可以分为过滤
法、包装法和集成法。在这里我们选择集成法。
有一些模型算法天然就具备判断一个特征对于模型的效果影响程度,例如决策树类的模
型,在模型训练过程中就需要融合特征选择的功能,因此,如果能通过这类模型计算出一个
综合的特征重要性排序,则可以用于特征的选择。这样的方法被称为集成法。例如使用随机
森林进行建模,模型会通过计算,返回一个代表特征重要性的数组,示例如下:
表
5-1
特征相关性
在结果中,选择重要性高的的特征进入模型就可以了。当然,如果特征比较多,可以采
用一些方便手段,例如使用
SelectFromModel
。
SelectFromModel
需要传入一个可以产生特征
重要性的模型,以及特征筛选的阈值,同样也能够产生特征选择的掩码。使用随机森林这类
树模型,计算效率较高,可以在建模初期对变量进行初步筛选,之后往往还需要手动进一步
的细筛特征,因此可以适当多保留一些特征,集成法的主要作用就是为了在初期减少人工工
作量。
2. 特征构建
特征选择后,可以从用户信息、登录信息、行为信息几个方面来完成特征的构建。
(1)用户信息特征:
包括年龄,所在城市等
(2)登录信息特征
包括登录天数、登陆时长、再次访问间隔、最后登录距离期末天数等
(3)行为信息特征
包括点击模块访问数、宝宝访问数、点击分享访问数、首页广告弹窗点击访
问数等
其中 APP 激活、关注公众号 1,2、添加销售好友、进群、课程重复学习等可以直接作为
特征向量,而领券数量、开课数、登录天数、登录间隔等不能直接作为特征向量,所以
要对其进行独热编码。
本例中计算是简化处理。从处理方法上看,特征构造仍然是对数据的变换,其目的在于
将业务专家的经验和智慧融入到分析中。而在数据预处理当中也需要做一些基本的数据变换,
但预处理当中的数据变换更多是为了满足模型对训练数据类型、格式的基本要求。
六、模型的建立与求解 (任务三)
流程图:
在特征工程流程结束后,就可以基于预测算法构建用户购买行为预测模型,并根据模型
输出的预测结果对模型进行评估。这里我们采用 lightGBM+LR
[2]
的组合算法,这种组合模型的
预测效果要比单模型要好。
首先用树模型 Lightgbm 来预测样本结果,然后将树模型的结果转为标准的变量形式放入 LR
中
6.1 原理:
6.1.1lightGBM [4] :
提升树是利用加模型与前向分布算法实现学习的优化过程,它有一些高
效实现,如 XGBoost, pGBRT,GBDT(Gradient Boosting Decision Tree)等。其中 GBDT 采用
负梯度作为划分的指标(信息增益),XGBoost 则利用到二阶导数。他们共同的不足是,计
算信息增益需要扫描所有样本,从而找到最优划分点。在面对大量数据或者特征维度很高时,
它们的效率和扩展性很难使人满意。解决这个问题的直接方法就是减少特征量和数据量而且
不影响精确度,有部分工作根据数据权重采样来加速 booisting 的过程,但由于 GBDT 没有样
本权重不能应用。结合使用 GOSS 和 EFB 的 GBDT 算法就是 LightGBM。微软开源的LightGBM
(基于 GBDT 的)则很好的解决这些问题,它主要
包含两个算法:
(1)单边梯度采样,Gradient-based One-Side Sampling(GOSS)
流程:输入:训练数据,迭代步数 d,大梯度数据的采样率 a,小梯度数据的采样率 b,损失
函数和若学习器的类型(一般为决策树);
输出:训练好的强学习器;
(2)互斥特征绑定,Exclusive Feature Bundling(EFB) EBF 的算法步骤如下:
①将特征按照非零值的个数进行排序
②计算不同特征之间的冲突比率
③遍历每个特征并尝试合并特征,使冲突比率最小化
④高位的数据通常是稀疏的,这种稀疏性启发我们设计一种无损地方法来减少特征的维度。
特别的,稀疏特征空间中,许多特征是互斥的,例如他们从不同时为非零值。我们可以绑定
互斥的特征为单一特征,通过仔细设计特征臊面算法,我们从特征捆绑中构建了与单个特征
相同的特征直方图。这种方式的间直方图时间复杂度从 O(#data * #feature)降到 O(#data *
#bundle),由于#bundle << # feature,我们能够极大地加速 GBDT 的训练过程而且损失精度。
LightGBM 处理分类特征大致流程:
为了解决 one-hot 编码处理类别特征的不足。LightGBM 采用了 Many vs many 的切分方
式,实现了类别特征的最优切分。用 LightGBM 可以直接输入类别特征,并产生上图右边的效
果。在 1 个 k 维的类别特征中寻找最优切分,朴素的枚举算法的复杂度是 O(2k),而 LightGBM
采用了如 On Grouping For Maximum Homogeneity 的方法实现了 O(klogk)的算法。
算法流程下图所示:在枚举分割点之前,先把直方图按每个类别的均值进行排序;然后按照
均值的结果依次枚举最优分割点。从下图可以看到,Sum(y)/Count(y)为类别的均值。当然,
这个方法很容易过拟合,所以在 LGBM 中加入了很多对这个方法的约束和正则化。
离散特征建立直方图的过程:统计该特征下每一种离散值出现的次数,并从高到低排序,
并过滤掉出现次数较少的特征值, 然后为每一个特征值,建立一个 bin 容器, 对于在 bin 容
器内出现次数较少的特征值直接过滤掉,不建立 bin 容器。
6.1.2LR [2] :
LR 模型可以被认为就是一个被 Sigmoid 函数(logistic 方程)所归一化后的
线性回归模型。逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用
了一个逻辑函数。
直观表述:
(2)式就是我们介绍的线性回归的假设函数,那(2)式就是我们的
Sigmoid
函数。由于线
性回归在整个实数域内敏感度一致,而分类范围,需要在
[0,1]
。逻辑回归就是一种减小预测
范围,将预测值限定为
[0,1]
间的一种回归模型,其回归方程与回归曲线如下图所示。逻辑曲
6.1.3 lightGBM+LR [2] :
简单来说就是首先用树模型(GBDT、Xgboost、Lightgbm)来预测样
本结果,然后将树模型的结果转为标准的变量形式放入 LR 中,最终进行预测。
·具有 stacking 思想的二分类器模型,
lightGBM
用来对训练集提取特征作为新的训练输入
数据,LR 作为新训练输入数据的分类器。
·
lightGBM
算法的特点正好可以用来发掘有区分度的特征、特征组合,减少特征工程中人力
成本。而 LR 则可以快速实现算法
6.1.4SMOTE(Synthetic Minority Oversampling Technique):
合成少数类过采样技术.它是基于随机过采样算法的一种改进方案,由于随机过采样采
取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学
习到的信息过于特别(Specific)而不够泛化(General),SMOTE 算法的基本思想是对少数类样
本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体如下图所示,算法流程
如下。
(1)对于少数类中每一个样本 x,以欧氏距离为标准计算它到少数类样本集中所有样本
的距离,得到其 k 近邻。
(2)根据样本不平衡比例设置一个采样比例以确定采样倍率 N,对于每一个少数类样本
x,从其 k 近邻中随机选择若干个样本,假设选择的近邻为 o。
(3)对于每一个随机选出的近邻 o,分别与原样本按照公式 o(new)=o+rand(0,1)*(x-o)
构建新的样本。
6.2.1 数据的准备及特征选择
1.导入机器学习相关库
2. 数据查看以及处理连续型类别特征