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

article/2025/10/30 21:19:42

目录

 

一、问题描述

二、数据摸底

三、数据清洗和特征筛选

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.095basketuv_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%。

 

 

 

 

 


http://chatgpt.dhexx.cn/article/oDCs43TQ.shtml

相关文章

数据挖掘案例(2):用户画像

内容分为两个部分:     第一部分:用户画像概述     第二部分:用户画像案例 数据和源码 移步到Github : https://github.com/Stormzudi/Data-Mining-Case 邮箱:442395572qq.com 目录 第一部分:1…

数据挖掘案例实战:利用LDA主题模型提取京东评论数据(一)

泰迪智能科技(数据挖掘平台:TipDM数据挖掘平台)最新推出的数据挖掘实战专栏 专栏将数据挖掘理论与项目案例实践相结合,可以让大家获得真实的数据挖掘学习与实践环境,更快、更好的学习数据挖掘知识与积累职业经验 专栏…

数据挖掘案例实战:利用LDA主题模型提取京东评论数据(二)

泰迪智能科技(数据挖掘平台:TipDM数据挖掘平台)最新推出的数据挖掘实战专栏 专栏将数据挖掘理论与项目案例实践相结合,可以让大家获得真实的数据挖掘学习与实践环境,更快、更好的学习数据挖掘知识与积累职业经验 专栏…

数据挖掘学习(四)——常见案例总结

笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为…

数据挖掘实例1:亲和性分析示例(代码、注释、运行结果)

前言 本实例采用python3环境,编辑器采用Jupyter Notebook,安装使用方法请参考,本实例中所用到的附件内容放在文末,如果想要自行运行一下代码,可以尝试一下。 Jupyter Notebook介绍、安装及使用教程 亲和性分析示例 …

Python数据挖掘 数据预处理案例(以航空公司数据为例)

Python数据预处理 一、内容: 1、数据清洗 2、数据集成 3、数据可视化 二、实验数据 根据航空公司系统内的客户基本信息、乘机信息以及积分信息等详细数据,依据末次飞行日期( LAST_FLIGHT_DATE),以2014年3月31日为结束时间,选取…

Axure 9.0.0.3712 授权码

更新日志 2020年8月4日,Axure 更新了最新的版本,本次的版本号为 Axure RP 9.0.0.3712,具体更新内容如下: 自从Axure发布了9.0版本以后,很多小伙伴之前使用的注册码已经失效了,为了不影响想体验的小伙伴&am…

axure8.1 授权码

Licensee: University of Science and Technology of China (CLASSROOM) Key: DTXRAnPn1P65Rt0xB4eTQ4bF5IUF0gu0X9XBEUhM4QxY0DRFJxYEmgh4nyh7RtL 原文链接:http://blog.csdn.net/quanqinyang/article/details/78217464

关于Axure RP 的授权,我猜你还想知道......

Axure RP发展到今天,已经出到9的版本,当然破解授权码层出不穷。 有条件的朋友建议使用正版,可以避免以后可能出现的一些问题。 关于Axure授权码,有几点给大家说明一下。 一个Axure RP 的授权码是否可以多个人使用? 一…

2019年最新最全香港5大银行开户条件及攻略

跑去香港开户的同学,大概都了解,现在香港银行开户已经越来越严格了。银行工作人员要么就以资料要审核委婉拒绝,要么就要求客户存入几百万的存款才肯开户。2019年货币贬值加速,港币美元升值。户开开与各大行银行经理联合给大家总结了香港的5大最常见银行,汇丰、渣打、中银、…

2019年香港银行开户条件有哪些?个人账户申请被拒绝后该怎么处理比较好!!!

网上关于香港银行开户的攻略很多,但是由于政策跟银行系统不断升级的问题,银行已经全面出新政策了,为此,小编这次专门跑了一圈香港,整理了最新的一份开户大全,有评星,有体验。历史上关于香港各大银行开户的攻略都在这里了。各位有需要的小伙伴看这里,关于香港各大银行开…

一定要收藏!!!2019取消管理费最新最全香港开户攻略

自2019年8月1日起,很多香港银行相继取消多个账户管理费,香港开户难度也再度提升,还流传汇丰银行对于内地旅客来香港开户不能获批的消息,但多位在香港的中资和外资银行人士在接受媒体采访时表示暂无收到相关通知。不管怎么样!卡君还是提醒有需要开港卡的尽早开户!!!防范…

说说香港银行开户的一些细节问题

很多人对“香港银行开户”存在很大误区,认为还可以轻松地通过视频异地开户,或简单地带上公司注册文件和身份证到香港银行柜台办理手续,一两周就能拿到银行账户。 实际上2012年汇丰事件后,一石激起千层浪,银行业界人心惶惶,谁都不想成为下一个“幸运儿”,现各银行纷纷加…

测试用例的基本方法

什么是测试用例 测试用例的定义 测试用例是执行测试的依据,把测试系统的操作步骤用文档的形式描述出来 1:测试用例是为达到最佳的测试效果或高效的揭露隐藏的错误,而精心设计的少量测试数据,包括测试输入、执行条件和预期的结果…

几种测试用例方法

针对穷举场景设计测试点 针对限定边界规则设计测试点 对多条件依赖关系进行设计测试点 对于项目业务进行设计用例 1、等价类划分法:针对穷举场景设计测试点 1)说明:在所有测试数据中,具有某种共同特征的数据集进行划分 2&#xff…

设计测试用例的方法

目录 一、根据需求去设计测试用例 二、具体的设计测试用例的方法 1.等价类 2.边界值 3.因果图法 4.正交法 5.场景法 6.错误猜测法 三、如何评价测试用例的好坏 一、根据需求去设计测试用例 验证需求的正确性。 分析需求,细化需求,从需求中提炼…

设计测测试用例的五大方法

目录 一.等价类 1.等价类的概念 2.等价类的分类 (1)有效等价类 (2)无效等价类 3.使用场景 4.例子 二.边界值 1.边界值的概念 2.例子 三.因果图法 1.因果图法的概念 2.因果图中的逻辑图 3.因果图设计测试用例步骤 4.…

bat简单的批处理命令

授人以鱼不如授人以渔 如何查看dos命令帮助 命令名 /? 路径使用 \ 不能使用/ 例如查看del命令帮助 1. echo 显示信息,关闭、启用命令回显 echo hello关闭回显 echo off echo hello开启回显 echo on2. 关闭当前语句回显 3. del 删除一个或多个文件 /p 删除…

.bat 是什么? (批处理脚本)

批处理(Batch),也称为批处理脚本 windows下Bat命令学习 一、基础语法: 1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。 2.批处理是一种简单的程序,可以用…

批处理获取当前系统日期及时间及星期转换为数字并加以格式美化的bat代码

代码如下: echo off&setlocal enabledelayedexpansion ::批处理获取当前系统日期及时间并格式美化的bat代码 echo 读取系统日期和时间(普通) echo. echo %date%%time% echo 或者 echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:…