目录

一、问题描述

二、数据摸底

三、数据清洗和特征筛选

3.1 数据抽取和清洗

3.2 特征筛选:决策树

3.3 特征分布转换

3.4 特征共线性检查

四、模型搭建

4.1 数据集

4.2 模型训练

4.3 模型验证

五、模型上线效果跟踪


一、问题描述

在电商平台中,有海量的商品,如何为用户挖掘出感兴趣的商品,真正实现千人千面具有重要的意义。商品得分排名,在电商平台个性化推荐排序具有重要的应用。

用户对商品偏好得分受哪些因素的影响,以及这些因素最终如何共同决定商品得分?本文总结了一个实际电商平台中用户对商品偏好得分的构建过程。

二、数据摸底

为用户偏好品类下的商品进行个性化推荐,初步的分析思路是通过对前三个月份的用户行为数据和商品属性数据的分析,寻找他们与未来7天用户下单商品之间的关系(选择7天数据作为标签,为了积累足够多的正样本;选择下单的商品,因为购买行为更能说明用户对商品的喜好)。

在进行数据摸底后发现,老用户未来7天的订单量150000(大约占71%),偏好分类的商品大约占到29%。对数据摸底后,结合业务逻辑,列出潜在的分析特征,如下:

      在上面原始字段的基础上,结合业务逻辑,增添一些重要的衍生变量如下:

商品折扣率(discount),商品现在的卖价除以商品原价。因为折扣大的商品更容易刺激用户的购买欲。

商品转化率(procr),购买该商品的用户数除以查看该商品的用户数。

三、数据清洗和特征筛选

3.1 数据抽取和清洗

   抽取和清洗数据的目的主要包括:熟悉数据的分布特征和数据的基本统计指标(count、min、max、mean、stddev、skewness、kurtosis)、发现数据中的缺失值、发现数据中的异常值、发现数据中明显与业务逻辑相矛盾的错误。这样最终可以得到比较干净的数据,从而提高随后分析的准确性和后期模型搭建的效果。

在数据清洗过程中,发现了以下的数据错误:

价格字段有少数样本的观察值是999999,这是商品因为某种原因不在网站上显示时,该商品的价格会被设置为上限,可以直接删除记录

Procr字段有将近40%+样本的观察值是Na,数据排查后发现,是因为商品的订单量为0,在除法中,分母为零没有意义。将样本中该变量的观察值从Na修改为0

Onlinetime字段有少数样本的观察值小于0,显然不符合业务逻辑。我们只需要在分析时间段内在线的商品,对于在该时间段之后上线的商品不在我们分析范围内,可直接删除

3.2 特征筛选:决策树

      特征筛选具有重要意义,因为过多的输入变量很可能会带来过拟合的问题,这会导致模型的稳定性下降;同时,筛选有效的输入变量也是提高运算速度和运算效率的需要。利用决策树模型,计算特征重要性分数值如下,最终筛选有效的特征:similar_score、orderuv_7d、procr、 basketuv_7d、discount、online_time。

特征

重要性

累积得分

similar_score

0.5093

0.5093

orderuv_7d

0.2885

0.7978

procr

0.0374

0.8352

basketuv_7d

0.0251

0.8603

discount

0.0241

0.8844

online_time

0.0236

0.908

clickuv_7d

0.0198

0.9278

Origin_price

0.0193

0.9471

favorateuv_7d

0.0193

0.9664

Extend_price

0.0172

0.9836

Sell_price

0.0105

0.9941

3.3 特征分布转换

   根据前面变量的基本统计指标偏度Skewness和峰度Kurtosis,改善特征分布,强化自变量和因变量的线性关系,从而提升自变量的预测能力,提升模型的拟合效果。Similar_score偏度skewness为9.2341,峰度kurtosis为132.095,basketuv_7d偏度skewness为5.0373,峰度kurtosis为30.9339,orderuv_7d偏度skewness为5.1001,峰度kurtosis为32.9219,这样的分布非常不均衡,不利于后期模型的拟合,因此需要对这些特征进行开方转换。

feature

skewness

kurtosis

newfeature

skewness

kurtosis

similar_score

9.2341

132.095

Sqrt_similar_score

2.8657

11.5567

basketuv_7d

5.0373

30.9339

Sqrt_basketuv_7d

2.4288

6.983

orderuv_7d

5.1001

32.9219

Sqrt_orderuv_7d

2.4162

6.8912

3.4 特征共线性检查

   计算两两特征变量的pearson相关系数,检查特征之间是否存在较强的线性相关性。当特征之间高度相关时,数据小小的变化,比如误差的发生都会引起模型参数严重震荡,明显降低模型的预测能力。同时共线性导致模型结果难以解释,因为难以分辨每个特征对结果的影响。Sqrt_basketuv_7d与Sqrt_orderuv_7d线性相关系数为0.9452,说明这两个特征之间有明显的线性相关性,在后续的建模中只考虑Sqrt_orderuv_7d一个特征。

Sqrt_similar_score

discount

Sqrt_basketuv_7d

Sqrt_orderuv_7d

procr

online_time

Sqrt_similar_score

1

-0.0191

0.184

0.2079

0.1341

0.0467

discount

-0.0191

1

-0.033

-0.0526

-0.0688

-0.1779

Sqrt_basketuv_7d

0.184

-0.033

1

0.9452

0.3203

0.0029

Sqrt_orderuv_7d

0.2079

-0.0526

0.9452

1

0.4167

0.0368

procr

0.1341

-0.0688

0.3203

0.4167

1

0.2495

online_time

0.0467

-0.1779

0.0029

0.0368

0.2495

1

经过特征筛选后,进入模型训练的特征共有五个:Sqrt_similar_score、discount、Sqrt_orderuv_7d、procr、online_time。

四、模型搭建

4.1 数据集

选择2018/01/14-2018/04/13用户点击、收藏、加购、订单行为数据中,构建特征(Sqrt_similar_score、discount、Sqrt_orderuv_7d、procr、online_time)作为自变量,2018/04/14-2018/04/20用户订单数据作为因变量,自变量和因变量通过customers_id,products_id进行连接,过滤未下单的注册用户和新注册的用户,得到样本数据(下单的商品为正样本,未下单的商品为负样本)。对样本数据随机抽样,保证正负比例为1:1,按照80:20的比例划分训练集和测试集。

4.2 模型训练

在本案例中,我们选择了两种机器学习算法—逻辑斯蒂回归(LR)、随机森林(RF)。在对算法进行参数调优后,最终选择逻辑斯蒂回归模型,主要考虑两个原因:一方面,LR模型的精度与RF的精度没有相差无几,另一方面,LR模型效率更快,更适用线上实时计算。

模型过拟合与欠拟合判断

trainError

0.147520764

testError

0.149485083

模型精度

ROC

PR

0.926509

0.930102

特征

Sqrt_similar_score

Sqrt_orderuv_7d

discount

procr

online_time

系数

3.3301

0.2795

-0.2317

0.0983

0.0003

注:特征系数的绝对值代表特征对因变量的预测能力。

4.3 模型验证

测试集虽然可以评估模型是否过拟合,但是也参与了模型的选择。为了保证模型上线后,对新数据有较好的泛化能力,还需要用新时间段的数据集对模型进行验证。利用训练好的模型,预测用户2018/04/15-2018/04/21下单的商品,计算命中率为19.58%,符合预期。

五、模型上线效果跟踪

模型上线后,通过featureAB对比,转化率有明显提升,在此基础上又进行了优化,一方面,用户之前感兴趣的分类已下架,推荐时对失效分类进行过滤;另一方面,分类下的商品候选集保留400个,若所有商品都被用户已浏览,选择相似分类补充(扩展推荐结果的多样性)。经过两个周的连续观察,转化率CR和用户人均收入ARPU分别提升8.51%、17.67%。

[数据挖掘案例]逻辑回归LR模型实现电商商品个性化推荐相关推荐

  1. 逻辑回归LR模型简介

    1. 定义 LR是线性二分类模型,也是广义的线性回归模型,可以计算某个样本特征下事件发生的概率. 假设数据服从伯努力分布,通过极大化似然函数的方法,运用梯度下降求解参数,来达到将数据二分类的目的. 1 ...

  2. python机器学习案例系列教程——逻辑分类/逻辑回归LR/一般线性回归(softmax回归)

    全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 线性函数.线性回归 参考:http://blog.csdn.net/luanpeng825485697/article/details ...

  3. 推荐系统(4)-逻辑回归LR、POLY2、FM、FFM

    逻辑回归LR.POLY2.FM.FFM 1.逻辑回归LR 2.辛普森悖论 3.POLY2 4.FM-2010 5.FFM 6.GBDT+LR-2014 7.LS-PLM-2017 <深度学习/推 ...

  4. 逻辑回归LR vs 支持向量机SVM

    目录 LR vs SVM LR和SVM的相同点 LR和SVM的不同点 逻辑回归LR LR损失函数 LR公式推导 支持向量机SVM 间隔和支持向量 对偶问题 核函数 软间隔和正则化 LR vs SVM ...

  5. 机器学习算法——逻辑回归(LR)

    LR是很多分类算法的基础组件,它的好处是输出值自然地落在0到1之间,并且有概率意义.模型清晰,背后的概率学经得住推敲.它拟合出来的参数就代表了每一个特征(feature)对结果的影响. Logisti ...

  6. 【机器学习算法笔记系列】逻辑回归(LR)算法详解和实战

    逻辑回归(LR)算法概述 逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法. 逻辑 ...

  7. pyspark学习之——逻辑回归、模型选择与调参

    记录pyspark的MLlib库学习篇,学习资料来自spark官方文档,主要记录pyspark相关内容,要么直接翻译过来,要么加上自己的理解.spark2.4.8官方文档如下:https://spar ...

  8. python 线性回归模型_如何在Python中建立和训练线性和逻辑回归ML模型

    python 线性回归模型 Linear regression and logistic regression are two of the most popular machine learning ...

  9. Python集成机器学习:用AdaBoost、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

    最近我们被客户要求撰写关于集成机器的研究报告,包括一些图形和统计输出. Boosting 是一类集成机器学习算法,涉及结合许多弱学习器的预测. 视频:从决策树到随机森林:R语言信用卡违约分析信贷数据实 ...

  10. 【项目实战】Python实现基于LDA主题模型进行电商产品评论数据情感分析

    说明:这是一个机器学习.数据挖掘实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 视频: Python实现基于LDA模型进行电商产品评论数据情感分析 ...

最新文章

  1. 30年前的热门研究,今获经典论文奖,贝叶斯网络之父旧论文「考古」
  2. UMeditor使用
  3. mysql数据库水平分割_数据库的水平分割和垂直分割
  4. 验证dropdownlist必选
  5. Shell(bash) 介绍
  6. 论文浅尝 - ICLR2020 | Abductive Commonsense Reasoning
  7. 解决go build报错cannot find main module; see ‘go help modules‘
  8. socket_基础2_传输大数据
  9. DLL注入(CreateRemoteThread方式)
  10. 用 GitHub 来部署静态网页 ꒰・◡・๑꒱
  11. JDK11即将来临,新特性了解一下
  12. 工业机器人四大家族(ABB、库卡、安川)全套资料,欢迎下载!
  13. 计算机组成和体系结构电子版,计算机组成及体系结构-安建峰.pdf
  14. 擎天科技携手阿里云 助力政企客户一键管理碳排放
  15. windows下jenkins批处理执行git pull失败的原因
  16. 怎么把计算机的网络设置弄成家庭,如何设置家庭Wi-Fi网络
  17. Mybatis多表新增
  18. 关于python的列表以下选项中描述错误的是_关于Python的元组类型,以下选项中描述错误的是 (4.0分)_学小易找答案...
  19. ​smooth-signature​.js: 前端canvas实现H5带笔锋手写签名,支持PC端和移动端使用,无框架限制,Vue、React等均可使用
  20. CMD看累了?推荐一个不错的终端模拟器

热门文章

  1. 汉王考勤系统服务器IP,汉王人脸识别考勤客户端使用说明
  2. ATmega328芯片-“变身”-温度计-,附示例教程
  3. ATmega328p使用硬件SPI与模拟SPI驱动74HC595,protues仿真
  4. host速度 mtk usb_MTK功能机MT2503平台USB充电电流设置
  5. Android sdk 环境变量配置无效
  6. Python实现Kmeans文本聚类
  7. python源代码(create,huafen,doc)
  8. 移远BC95系列区别
  9. java 偏向锁_Java中的偏向锁
  10. 王道计算机网络 电子版,2021王道.考研复习指导.数据结构.操作系统.计算机组成原理.计算机网络.计算机考研PDF电子版无水印图...