电商用户购买行为预测

比赛介绍

互联网的出现和普及给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但是网上信息量的大幅增长也带来了“信息过载”的问题。这使得用户在面对大量信息时无法从中获得对自己真正有用的信息,导致用户对信息的使用效率大大降低了。为了帮助用户更快速地过滤出有用的信息,需要依据真实的用户购买行为记录,利用机器学习相关技术建立稳健的电商用户购买行为预测模型。

意义

  1. 用于预测用户的下一个行为,以此为用户进行商品的推荐,
  2. 准确捕获用户的购买兴趣,提高电商平台商品的购买率
  3. 提升购物体验,促进电子商务发展

数据集

先查看大赛提供的train.csv训练数据集:
数据集的字段的含义:

模型选择

回归预测问题
可供选择:

  1. 机器学习模型:逻辑回归,支持向量机SVM,决策树,融合逻辑回归和支持向量机

  2. 深度学习模型:CNN-LSTM

使用CNN从用户行为中提取高影响力的特征,然后利用LSTM建立时间序列预测模型,最后通过全连接层输出模型预测结果

数据预处理

首先进行数据清洗:数据处理和特征构建完成用户历史行为数据清洗,剔除刷单用户、重大促销等不具有一般规律的数据,并采用分段下采样方法进行样本均衡处理。

代码实现:

import time
import numpy as np
import pandas as pd
from tqdm import tqdmfrom sklearn.preprocessing import LabelEncoderimport lightgbm as lgbraw_train = pd.read_csv('./data/train.csv')
raw_test = pd.read_csv('./data/test.csv')
submit_df = pd.read_csv('./data/submit_example.csv')display(raw_train, raw_test, submit_df)#预处理
for df in [raw_train, raw_test]:# 处理空值for f in ['category_code', 'brand']:df[f].fillna('<unkown>', inplace=True)# 处理时间df['event_time'] = pd.to_datetime(df['event_time'], format='%Y-%m-%d %H:%M:%S UTC')df['timestamp'] = df['event_time'].apply(lambda x: time.mktime(x.timetuple()))df['timestamp'] = df['timestamp'].astype(int)# 排序
raw_train = raw_train.sort_values(['user_id', 'timestamp'])
raw_test = raw_test.sort_values(['user_id', 'timestamp'])# 处理非数值特征
df = pd.concat([raw_train, raw_test], ignore_index=True)for f in ['event_type', 'category_code', 'brand']:# 构建编码器le = LabelEncoder()le.fit(df[f])# 设置新值raw_train[f] = le.transform(raw_train[f])raw_test[f] = le.transform(raw_test[f])# 删除无用列
useless = ['event_time', 'user_session', 'timestamp']
for df in [raw_train, raw_test]:df.drop(columns=useless, inplace=True)
#滑动窗口构造数据集
#为了让机器学习模型能够处理时序数据,必须通过滑动窗口构造数据,后一个时间点的作为前一个时间点的预测值# 训练集数据生成:滑动窗口
# 用前一个时间节点的数据预测后一个时间节点是商品
train_df = pd.DataFrame()
user_ids = raw_train['user_id'].unique()
for uid in tqdm(user_ids):user_data = raw_train[raw_train['user_id'] == uid].copy(deep=True)if user_data.shape[0] < 2:# 小于两条的,直接忽略continueuser_data['y'] = user_data['product_id'].shift(-1)user_data = user_data.head(user_data.shape[0]-1)train_df = train_df.append(user_data)train_df['y'] = train_df['y'].astype(int)
train_df = train_df.reset_index(drop=True)# 测试集数据生成,只取每个用户最后一次操作用来做预测
test_df = raw_test.groupby(['user_id'], as_index=False).last()train_df.drop(columns=['user_id'], inplace=True)display(train_df, test_df)user_ids = test_df['user_id'].unique()preds = []
for uid in tqdm(user_ids):pids = raw_test[raw_test['user_id'] == uid]['product_id'].unique()# 找到训练集中有这些product_id的数据作为当前用户的训练集p_train = train_df[train_df['product_id'].isin(pids)]# 只取最后一条进行预测user_test = test_df[test_df['user_id'] == uid].drop(columns=['user_id'])X_train = p_train.iloc[:, :-1]y_train = p_train['y']if len(X_train) > 0:# 训练clf = lgb.LGBMClassifier(**{'seed': int(time.time())})clf.fit(X_train, y_train)# 预测pred = clf.predict(user_test)[0]else:# 训练集中无对应数据# 直接取最后一条数据作为预测值pred = user_test['product_id'].iloc[0]preds.append(pred)submit_df['product_id'] = preds# 分数 0.206
submit_df.to_csv('baseline.csv', index=False)

如果本文对你有帮助,欢迎点赞、订阅以及star我的项目。
你的支持是我创作的最大动力!

CCF大赛:电商用户购买行为预测 解决方案相关推荐

  1. 电商用户购买行为预测-排名48-0.23

    任务:依据电子商务平平台上真实的用户行为记录,利用机器学习相关技术,建立稳健的电商用户购买行为预测模型,预测用户下一个可能会购买的商品. 数据简介 数据整理自一家中等化妆品在线商店公布的网上公开数据集 ...

  2. 利用Python对电商用户购买行为进行预测!这都能预测到?

    任务:依据电子商务平平台上真实的用户行为记录,利用机器学习相关技术,建立稳健的电商用户购买行为预测模型,预测用户下一个可能会购买的商品. 数据简介 数据整理自一家中等化妆品在线商店公布的网上公开数据集 ...

  3. 电商用户行为预测数据初探

    电商用户行为预测 数据初步探究 电商用户行为预测 数据分析 导入相关包 自定义采样函数 读取数据 数据预处理 数据浏览 用户的交互行为_训练集 trn_click.csv文件数据中每个字段的含义 用户 ...

  4. 电商用户购买行为数据分析

    1 相关背景 数据来源:该数据集来自The UCI Machine Learning Repository 数据背景:该数据集是英国某电商在2年内的全部在线销售数据,该电商主要销售独特的全时礼品,多数 ...

  5. 对电商用户的数据分析!

    一.以淘宝等为主的用户分析场景 以淘宝.京东和拼多多为典型的用户+商品消费场景,是国内用户量最多的业务场景,也是产生利润最多的业务场景.在这其中,客户拥有最大的自主权,如何有效地加以利用或辨别客户在行 ...

  6. 基于大数据的线上线下电商用户数据挖掘研究

    From:http://www.thebigdata.cn/JieJueFangAn/11932p2.html Online-to-Offline( 简称 O2O)电子商务模式,是一个连接线上用户和线 ...

  7. 基于 flink 的电商用户行为数据分析【9】| 电商常见指标汇总 + 项目总结

    本文已收录github:https://github.com/BigDataScholar/TheKingOfBigData,里面有大数据高频考点,Java一线大厂面试题资源,上百本免费电子书籍,作者 ...

  8. mysql统计今日首充用户_电商用户行为MySQL分析

    一:分析背景 近年来电商行业发展迅猛,发展的模式也从最开始粗糙的供给结构开始向精细化电商发展.我国政策也指出: 促进电子商务发展是推进供给侧结构性改革重要的途径.因此分析用户的行为,可打造爆款商品,爆 ...

  9. 数据分析实战(六):英国电商用户行为分析

    案例:英国电商用户行为数据分析 Part 1. 数据获取 1.1 数据集简介 https://archive.ics.uci.edu/ml/datasets/online+retail# 该数据集为英 ...

最新文章

  1. BZOJ3916 [Baltic2014]friends
  2. MySQL数据库迁移到PostgreSQL
  3. lynda ux_举办UX午餐并学习并成为UX英雄
  4. wxpython 优秀的界面_好用的 wxPython 界面設計工具 — wxFormBuilder
  5. 写给大忙人看的java_《写给大忙人看的Java核心技术》读后感
  6. maven项目,在spring中整合mybatis
  7. 【POJ】【2125】Destroying the Graph
  8. 使用lightbox插件实现图片预览功能
  9. fibonacci数列java大赛_斐波那契数列 java 解法
  10. 计算机组成原理bzc指令,计算机组成原理课程设计-09级.ppt
  11. 【转】J2SDK1.5+TOMCAT5.5 最详细有效安装及配置
  12. 自有项目Iframe嵌入ThingJS物联网可视化项目代码解析
  13. 佛蒙特州政府将启动区块链保险试点项目
  14. LaTeX中段落缩进的概念
  15. Android Bmob
  16. SQL Server菜鸟入门
  17. 【大数据技术基础系列】列式数据库与基于行的数据库存储数据结构
  18. Linux文件类型发布啦!
  19. 现代化医院PACS/RIS系统概述
  20. 2.给 Proxmox VE换源

热门文章

  1. matlab中画反函数的图像,matlab中如何实现Q函数的反函数
  2. android adb 5037端口被占用解决方案
  3. DP专项(一维DP)
  4. PowerPoint制作科技风工作报告封面页
  5. 前端学习之JavaScript——内置对象
  6. 上网必备!这些网站绝对是互联网宝藏!带你进入全新的在线世界
  7. 骑士游历java_骑士游历 - 凡尘里的一根葱 - 博客园
  8. 4.Operators-操作符(Dart中文文档)
  9. redhat linux防火墙状态,RedHat Linux下iptables防火墙设置
  10. 模拟开关(CD4051B、CD4052B)介绍与应用