基于多行为序列的电商用户商品推荐与智能分析系统(Python + Streamlit + AI大模型)
本文介绍一个完整的电商推荐系统实战项目涵盖数据清洗、特征工程、多模型融合推荐、AI大模型接入以及可视化系统开发适合数据分析与机器学习初学者参考。一、项目背景电商平台的用户行为数据点击、收藏、加购、购买蕴含着丰富的消费偏好信息。如何从海量数据中挖掘价值为用户提供精准的商品推荐是电商行业的核心竞争力。本项目基于780万条用户行为记录、15.3万商品、5.1万用户的真实电商数据集构建了一套完整的推荐系统 智能分析 AI问答的可视化应用。二、技术栈技术组件 选型编程语言 Python 3.11可视化框架 Streamlit图表库 Plotly数据处理 Pandas NumPy机器学习 LightGBM scikit-learn序列模型 GRU纯NumPy实现文本向量化 scikit-learn TfidfVectorizerAI大模型 智谱AI GLM-4-Flash免费三、数据集介绍数据集包含三个核心文件traindata_user/merged.csv用户行为数据约780万条包含用户ID、商品ID、点击/收藏/加购/购买次数、时间戳、日期traindata_goodsid/merged.csv商品属性数据15.3万条包含商品ID、品类ID、品牌IDa榜需要预测的uid_5000.xlsx需要预测的5000名测试用户由于数据量达到780万行直接使用 pd.read_csv() 会导致内存不足。项目采用 分块读取策略import pandas as pd # 分块读取每块50万行 chunks pd.read_csv(path, headerNone, namesCOLUMNS, chunksize500000) agg_list [] for chunk in chunks: chunk clean(chunk) # 清洗当前块 agg_list.append(aggregate(chunk)) # 聚合当前块 interaction_df pd.concat(agg_list) # 合并所有块四、数据处理4.1 数据清洗去重基于 user_id goods_id expose_start_time 去除完全重复记录缺失值处理去除 user_id、goods_id 为空的记录负值处理行为次数负值置为0时间字段处理转换为 datetime 格式提取小时/天/周几等特征品类品牌填充空值填充为 unknown4.2 行为权重评分构造不同行为反映不同程度的购买意愿项目为每种行为赋予权重行为类型 权重 含义点击 1.0 基础关注收藏 2.0 明确兴趣加购 3.0 强购买意向购买 5.0 最终转化综合行为评分公式score 点击×1 收藏×2 加购×3 购买×54.3 用户-商品交互聚合将原始行为数据按 user_id goods_id 分组聚合得到每个用户-商品对的汇总信息包括总点击数、总收藏数、总加购数、总购买数、综合评分、交互次数、首次/最后交互时间、时间跨度等。五、特征工程项目构建了四个维度的特征体系5.1 用户特征行为统计特征总点击数、总收藏数、总加购数、总购买数、交互商品数、交互天数转化率特征点击→购买转化率、收藏→购买转化率、加购→购买转化率活跃度特征活跃天数、活跃等级低/中/高/超高四级偏好特征偏好品类、偏好品牌基于评分最高的交互记录5.2 商品特征行为统计商品点击数、收藏数、加购数、购买数、互动用户数转化率点击→购买转化率、加购→购买转化率热度等级基于互动用户数分桶冷门/一般/热门/爆款属性信息品类ID、品牌ID编码后作为特征输入5.3 交互特征行为强度比点击比率、购买比率标准化评分用户组内Z-Score标准化、商品维度标准化5.4 行为序列特征按时间排序记录每个用户的商品交互序列goods_seq用于GRU序列模型的输入。序列长度最大50不足部分用padding填充。训练时采用滑动窗口方式生成输入-目标对。六、推荐模型项目实现了三种推荐模型并采用加权投票策略进行融合。6.1 基于物品的协同过滤Item-based CF核心思想如果用户喜欢物品A且物品A与物品B相似那么用户可能也喜欢物品B。物品相似度采用余弦相似度计算sim(A, B) cos(A, B) (A · B) / (||A|| × ||B||)为支持大规模数据模型只对互动用户数最多的top 5000个热门商品计算相似度保留每个商品最相似的top 20个邻居。对于新用户冷启动推荐全平台最热门商品。6.2 LightGBM集成学习模型LightGBM是微软开源的梯度提升决策树框架。在推荐场景中LightGBM将推荐问题转化为二分类问题预测用户是否会购买某个商品is_purchased0/1。主要参数配置import lightgbm as lgb model lgb.LGBMClassifier( num_leaves63, learning_rate0.05, n_estimators300, feature_fraction0.8, bagging_fraction0.8, early_stopping_rounds50, class_weightbalanced )训练时采用负样本采样平衡正负样本比例为1:5类别特征采用标签编码方式处理。评估指标包括AUC、PrecisionK、RecallK、F1K。6.3 GRU序列推荐模型GRUGate Recurrent Unit通过更新门和重置门控制信息流动能够有效捕捉序列数据中的长期依赖关系。核心计算公式z σ(W_z · x_t U_z · h_{t-1} b_z) # 更新门r σ(W_r · x_t U_r · h_{t-1} b_r) # 重置门h_tilde tanh(W_h · x_t (r ⊙ h_{t-1}) · U_h b_h) # 候选隐藏状态h_t (1 - z) ⊙ h_{t-1} z ⊙ h_tilde # 新隐藏状态本项目使用纯NumPy实现GRU模型避免PyTorch依赖主要结构Embedding层embedding_dim64将商品ID映射为64维向量GRU层hidden_dim128单层GRU结构输出层使用共享Embedding权重的投影层计算每个商品的预测概率训练策略负采样n_negatives20加速训练mini-batch SGD优化七、多模型融合与预测采用加权投票策略融合三个模型的预测结果模型 权重 理由GRU序列模型 3 时序依赖最强LightGBM 2 特征利用充分协同过滤 1 可解释性强对于每个测试用户三个模型分别给出推荐商品累加各模型的投票分最终选择得分最高的商品作为推荐结果。对于冷启动用户推荐全平台热度最高的商品。候选商品生成策略热门商品Top 100 用户偏好品类下的商品每个品类取50个去除用户已交互过的商品共计不超过100个候选。八、AI大模型能力接入8.1 RAG知识库问答基于TF-IDF向量化和余弦相似度检索构建轻量级RAGRetrieval-Augmented Generation知识库。将每个商品的属性和行为统计信息转化为自然语言文档使用 TfidfVectorizer 构建TF-IDF矩阵。用户查询时通过余弦相似度检索最相关的商品文档并生成回答。8.2 智谱AI大模型接入接入智谱AI GLM-4-Flash免费大模型实现以下功能智能数据查询自然语言转数据查询智能体内置意图识别热门商品、品类统计、品牌排行、用户画像、行为统计、转化率分析、时间分析等未匹配查询自动调用AI大模型处理推荐解释生成输入用户ID和商品IDAI大模型基于用户偏好、商品特点、购买建议等生成自然语言推荐解释AI自由对话支持6轮对话历史的多轮对话基于电商数据上下文智能回答问题API调用方式import requests API_URL https://open.bigmodel.cn/api/paas/v4/chat/completions headers { Authorization: fBearer {api_key}, Content-Type: application/json } data { model: glm-4-flash, messages: [ {role: system, content: system_prompt}, {role: user, content: user_question} ] } response requests.post(API_URL, headersheaders, jsondata)九、可视化系统Streamlit基于Streamlit开发了包含7个功能模块的可视化分析平台9.1 数据概览展示5个核心指标卡片用户总数、商品总数、交互记录数、品类数、品牌数以及数据字段说明表和数据样本。9.2 行为分析包含行为漏斗图Plotly Funnel、行为偏好雷达图Plotly Scatterpolar、关键转化率柱状图、24小时行为分布和每日行为趋势。9.3 品类热度品类/品牌销售排行柱状图、品类×品牌购买热力图Plotly imshow、品类转化率分析图。9.4 用户画像用户活跃度分布饼图中空环形图、购买次数分布直方图、点击→购买转化率分布图、偏好品类分布图、用户特征数据表。9.5 模型对比模型评估指标对比表、三指标分组对比柱状图对数尺度、模型综合能力雷达图、模型各指标排名热力图。9.6 智能推荐支持从训练集选择用户或输入用户ID可调整推荐数量展示用户历史交互、协同过滤推荐结果支持AI生成推荐解释。9.7 AI智能问答包含4个TabRAG知识库问答支持快捷查询按钮、智能数据查询自然语言转数据查询、推荐解释生成器、AI自由对话支持6轮对话历史。9.8 界面美化通过CSS自定义样式实现了以下视觉效果主背景粉白到浅蓝灰色渐变135deg标题紫蓝渐变文字效果透明文字侧边栏紫蓝垂直渐变白色文字指标卡片白色背景、紫色左边框、悬浮效果按钮紫蓝渐变按钮悬浮上移效果信息框不同类型信息框配合渐变背景和左边框Tab选项卡圆角顶部、间距优化十、项目总结本项目完成了从数据加载、清洗、特征工程、模型训练到多模型融合预测的完整流程并接入了AI大模型能力实现智能问答和推荐解释。主要成果完成了780万条电商行为数据的加载、清洗和聚合构建了包括用户、商品、交互、序列四维度的完整特征体系实现了协同过滤、LightGBM、GRU三种推荐模型并采用加权投票融合接入智谱GLM-4-Flash大模型实现RAG知识库、智能查询、推荐解释和自由对话基于Streamlit开发了包含7个功能模块的可视化分析平台十一、关键代码片段11.1 数据加载分块策略import pandas as pd from src.config import COLUMNS, TRAIN_DATA_PATH def load_train_data(chunk_size500000): chunks pd.read_csv( TRAIN_DATA_PATH, headerNone, namesCOLUMNS, chunksizechunk_size, dtype{user_id: str, goods_id: str} ) agg_list [] for chunk in chunks: chunk clean_chunk(chunk) agg_list.append(aggregate_chunk(chunk)) return pd.concat(agg_list, ignore_indexTrue)11.2 LightGBM模型训练import lightgbm as lgb from sklearn.model_selection import train_test_split # 特征和标签 X features.drop([user_id, goods_id, is_purchased], axis1) y features[is_purchased] # 划分训练集和验证集 X_train, X_val, y_train, y_val train_test_split( X, y, test_size0.2, random_state42, stratifyy ) # 训练模型 model lgb.LGBMClassifier( num_leaves63, learning_rate0.05, n_estimators300, feature_fraction0.8, bagging_fraction0.8, early_stopping_rounds50, class_weightbalanced, random_state42, verbose-1 ) model.fit( X_train, y_train, eval_set[(X_val, y_val)], eval_metricauc )11.3 智谱AI API调用import requests import json class AIRecommender: def __init__(self, api_key): self.api_key api_key self.url https://open.bigmodel.cn/api/paas/v4/chat/completions def generate_explanation(self, user_id, goods_id, user_profile, goods_info): headers { Authorization: fBearer {self.api_key}, Content-Type: application/json } system_prompt 你是一位电商推荐专家。请根据用户的画像和商品信息 生成一段自然语言的推荐解释说明为什么推荐该商品给用户。 解释应简洁明了包含用户偏好和商品特点的匹配理由。 user_prompt f用户ID: {user_id} 用户画像: {user_profile} 商品信息: {goods_info} 请生成推荐解释: data { model: glm-4-flash, messages: [ {role: system, content: system_prompt}, {role: user, content: user_prompt} ] } response requests.post(self.url, headersheaders, jsondata) return response.json()[choices][0][message][content]11.4 Streamlit界面核心配置import streamlit as st # 页面配置 st.set_page_config( page_title电商推荐与智能分析系统, page_icon, layoutwide, initial_sidebar_stateexpanded ) # 自定义CSS样式 st.markdown( style /* 主背景渐变 */ .stApp { background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); } /* 指标卡片样式 */ .metric-card { background: white; border-radius: 10px; padding: 20px; border-left: 4px solid #667eea; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } /style , unsafe_allow_htmlTrue) # 侧边栏导航 page st.sidebar.radio( 选择功能模块, [ 数据概览, 行为分析, 品类热度, 用户画像, 模型对比, 智能推荐, AI智能问答] )十二、运行方式# 1. 安装依赖 pip install -r requirements.txt # 2. 运行Streamlit应用 streamlit run app/app.py # 3. 浏览器自动打开 http://localhost:8501十三、写在最后本项目作为《数据分析》课程的实训课题重点在于从数据到应用的全流程实践。通过这个项目可以掌握大规模数据的加载与清洗技巧分块读取、内存优化多维度特征工程的构建方法三种推荐模型的原理与实现AI大模型API的接入与提示工程Streamlit可视化应用开发希望这个项目对你有所帮助欢迎在评论区交流讨论屏幕录制 2026-07-13 233348