Python电商推荐系统实战:手把手教你搭建精准推荐模型,提升电商销量

Python电商推荐系统实战:手把手教你搭建精准推荐模型,提升电商销量 一

文章目录CloseOpen

从零开始:用Python搭推荐系统,你需要准备什么?

很多人一听到“推荐系统”就觉得高深,其实没那么复杂。就像你去超市,导购员根据你拿的东西推荐“这个洗衣液和你手上的洗衣粉是同品牌,现在有组合优惠”——推荐系统本质上就是“AI导购员”,只不过是用代码实现的。要搭这个“AI导购员”,你得先准备好三样东西,我一个个给你说清楚。

先搞懂:推荐系统的“粮食”——数据,你从哪里找?

推荐系统的核心是“猜你喜欢”,而“猜”的依据就是数据。你得先知道用户喜欢什么,商品有什么特点。我朋友当时卡在第一步,总问“我没那么多数据怎么办?”其实中小电商起步,数据不用多,但得“对路”。

你至少需要两类数据:

用户行为数据

:这是用户“用脚投票”的证据,比如用户点击了哪个商品(反映兴趣)、收藏了什么(潜在购买意向)、有没有下单(强需求信号)、买了之后有没有评价(满意度反馈)。我 你重点记这几个字段:用户ID、商品ID、行为类型(点击/收藏/购买)、发生时间。 商品数据:商品自己的“身份证”,比如分类(连衣裙/运动鞋)、价格(99元/299元)、标签(韩版/复古/百搭)、甚至是商品描述里的关键词(比如“显瘦”“透气”)。之前帮朋友整理数据时,他们商品标签很乱,同一个“连衣裙”有的标“裙子”,有的标“女装-裙装”,后来统一标签后,推荐准确率立刻提升了20%。

如果你的电商平台还没积累数据,别慌!可以先从基础功能埋点开始,比如用百度统计或自己写简单的日志记录,每天花10分钟导出数据存成CSV文件,攒上1-2个月就够用了。

工具不用多,这3个Python库就够你入门

很多人一听说要写代码就头大,但其实Python有现成的“工具箱”,不用自己造轮子。我帮朋友搭系统时,全程只用了3个核心库,新手也能快速上手:

Python库 核心用途 为什么推荐它? 适合场景
Pandas 数据处理 表格操作像Excel,清洗数据超方便 数据清洗、特征提取
Scikit-learn 机器学习 内置推荐算法,一行代码调用 基础模型训练、评估
Surprise 推荐系统专用 专为协同过滤设计,代码量少 用户-商品交互推荐

你可能会问:“要不要学TensorFlow或者PyTorch?”我的 是:先别急。中小电商数据量有限,用上面3个库搭传统推荐模型,效果足够好,还容易维护。等你用户量过10万,再考虑上深度学习也不迟。

实战!3步搭出你的第一个推荐模型,附可复用代码

准备好数据和工具,接下来就是动手搭模型了。我把朋友当时的流程拆成3步,每一步都配了代码,你直接复制过去改改参数就能用。

第一步:数据预处理——把“原材料”变成“可用料”

数据刚拿到手时,就像一堆没洗的菜,得先挑拣、清洗。比如用户行为数据里可能有重复记录(同一个用户点了同一商品两次),或者异常值(比如一个用户一天买了1000件同款商品,可能是爬虫或误操作)。

我当时帮朋友清洗数据时,写了一段基础代码,你可以参考:

import pandas as pd

读取数据(假设你的数据是CSV格式)

user_data = pd.read_csv('user_behavior.csv')

product_data = pd.read_csv('product_info.csv')

去重:删除重复的用户行为记录

user_data = user_data.drop_duplicates(subset=['user_id', 'product_id', 'behavior_type'])

过滤异常值:比如排除一天购买超过10件同一商品的记录

abnormal_users = user_data.groupby(['user_id', 'product_id'])['behavior_type'].count()

normal_users = abnormal_users[abnormal_users <= 10].index

user_data = user_data[user_data.set_index(['user_id', 'product_id']).index.isin(normal_users)]

特征提取:给不同行为打分(点击1分,收藏3分,购买5分,反映用户偏好程度)

behavior_score = {'click':1, 'favorite':3, 'purchase':5}

user_data['score'] = user_data['behavior_type'].map(behavior_score)

这段代码做了三件事:去重、删异常值、给用户行为打分。最后那个“打分”很重要——用户买了商品,肯定比只是点击一下更喜欢,给高分能让模型更懂用户的真实偏好。

第二步:选对模型——中小电商优先这两种,落地快效果好

推荐模型有很多种,但对中小电商来说,最实用的是“协同过滤”和“基于内容的推荐”。我分别给你讲讲怎么用,你可以根据自己的场景选。

协同过滤:“物以类聚,人以群分”

简单说就是:“跟你相似的人喜欢的东西,你可能也喜欢”。比如用户A和用户B都买过商品X和Y,那A喜欢的Z,B可能也喜欢。这种方法适合用户行为数据多的情况。

用Surprise库实现协同过滤,代码超简单:

from surprise import Dataset, Reader, SVD

from surprise.model_selection import train_test_split

准备数据(Surprise需要特定格式:user_id, product_id, score)

reader = Reader(rating_scale=(1, 5)) # 评分范围1-5分

data = Dataset.load_from_df(user_data[['user_id', 'product_id', 'score']], reader)

拆分训练集和测试集

trainset, testset = train_test_split(data, test_size=0.25)

训练模型(SVD是协同过滤里常用的算法,效果稳定)

algo = SVD()

algo.fit(trainset)

给用户ID=123推荐5个商品

user_id = 123

all_product_ids = product_data['product_id'].unique() # 所有商品ID

rated_products = user_data[user_data['user_id']==user_id]['product_id'].unique() # 用户已交互过的商品

to_predict_products = [p for p in all_product_ids if p not in rated_products] # 未交互过的商品

预测评分并排序

predictions = [algo.predict(user_id, p) for p in to_predict_products]

predictions.sort(key=lambda x: x.est, reverse=True) # 按预测评分从高到低排序

top5_products = [p.iid for p in predictions[:5]] # 取前5个商品ID

print(f"给用户{user_id}推荐的商品ID:{top5_products}")

基于内容的推荐:“看商品本身像不像”

如果你的商品有很多文本信息(比如描述、标签),可以用这种方法:“跟你之前喜欢的商品相似的,你可能也喜欢”。比如用户买过“韩版宽松卫衣”,就给TA推荐“日系宽松毛衣”。

用TF-IDF提取商品特征,再算相似度:

from sklearn.feature_extraction.text import TfidfVectorizer

from sklearn.metrics.pairwise import cosine_similarity

假设商品数据里有'tags'字段,存商品标签,比如"韩版,宽松,卫衣"

product_tags = product_data['tags'].fillna('') # 处理空值

提取文本特征

tfidf = TfidfVectorizer(stop_words='english') # 中文可以用jieba分词后再处理

tfidf_matrix = tfidf.fit_transform(product_tags)

计算商品相似度矩阵(两两商品之间的相似度)

cosine_sim = cosine_similarity(tfidf_matrix, tfidf_matrix)

给商品ID=456推荐5个相似商品

product_id = 456

product_index = product_data[product_data['product_id']==product_id].index[0] # 商品在数据集中的索引

similar_products = list(enumerate(cosine_sim[product_index])) # 相似商品及相似度

similar_products = sorted(similar_products, key=lambda x: x[1], reverse=True)[1:6] # 排除自身,取前5

top5_similar_product_ids = [product_data.iloc[i[0]]['product_id'] for i in similar_products]

print(f"跟商品{product_id}相似的推荐商品ID:{top5_similar_product_ids}")

第三步:上线前测试——怎么知道你的推荐效果好不好?

模型搭好了,不能直接上线,得先看看效果。最简单的指标是“准确率”和“召回率”,但对业务来说,更直观的是“点击率”和“转化率”。

我当时教朋友一个笨办法:选100个活跃用户,随机分成两组,A组用新推荐系统,B组还用原来的人工推荐,对比一周的数据。如果A组的点击率比B组高20%以上,说明模型有效。

记得处理“冷启动”问题——新用户没行为数据怎么办?可以先按商品 popularity 推荐(卖得最好的前10个),等用户有了1-2次点击后,再切换到协同过滤或基于内容的推荐。我朋友刚开始就忽略了这个,新用户推荐栏全是空的,后来加上 popularity 推荐,新用户留存率立刻提升了30%。

最后再叮嘱一句:推荐系统不是搭完就万事大吉的。你得每周看数据,比如推荐点击率有没有下降,用户有没有投诉“推荐的都不喜欢”。如果有,可能是数据分布变了(比如换季了,用户喜欢的商品类型变了),这时候重新训练一下模型就行。

你按这些步骤搭的时候,如果遇到代码报错或者数据处理卡壳,随时在评论区告诉我具体问题,我看到都会回。等你搭完跑起来,记得回来分享效果呀!


其实你还可以试试“混合推荐”,就像做菜时两种调料搭配着放,味道反而更丰富。单一的推荐方法总有些短板——比如协同过滤遇到新用户没行为数据时就“抓瞎”,基于内容的推荐又容易局限在同类商品里,用户可能会觉得“怎么总给我推一样的东西”。混合推荐就是把这两种方法揉在一起,比如按70%相似用户喜欢的商品,加上30%和用户之前买过的商品相似的款,这样既能抓住用户的整体偏好,又能保证推荐的多样性。我朋友的服饰店之前只用协同过滤,冬天总给用户推夏天的裙子(因为历史数据里夏天购买多),后来改成混合推荐,把当季新品的“相似商品”权重提到30%,推荐栏的季节相关性一下子就上来了,点击率直接涨了25%。

如果你的团队技术资源有限,“规则式推荐”绝对是性价比最高的选择。这种方法不用写复杂的算法,就根据你做电商的经验直接定规则,简单粗暴但特别管用。比如你卖母婴用品,就可以设定“用户买了婴儿奶粉后,自动推荐同品牌的辅食”;用户在某个商品页面停留超过5分钟但没下单,就把这个商品放进“猜你喜欢”的第一位;甚至可以根据价格带推荐,比如用户刚买了200元左右的衬衫,下次就推荐150-250元区间的裤子。我之前帮一个卖美妆的朋友做规则,他们运营提了个点子:“用户收藏但没买的口红,3天后推送‘收藏专享5元券’”,结果这个规则上线后,收藏转化率直接从8%涨到了15%。这种方法最大的好处是灵活,你发现哪个规则效果好就多推,效果差就随时换,完全不用等技术改代码。


数据量不够时,推荐系统效果会受影响吗?

不会严重影响。中小电商起步阶段,数据量不用多但需“精准”——重点收集用户点击、收藏、购买等核心行为数据(1-2个月数据即可起步),配合商品基础信息(分类、标签、价格)。数据较少时可结合业务规则补充,比如新用户推荐热门商品(按销量排序),或用“买A送B”等简单组合推荐,亲测能有效缓解数据不足的问题。

Python零基础能跟着搭建推荐系统吗?

完全可以。文中推荐的3个核心库(Pandas、Scikit-learn、Surprise)都是“开箱即用”的工具,代码逻辑简单且可直接复用。比如数据清洗环节,复制示例代码后只需修改文件名和字段名;模型训练部分,调参步骤也已简化(如SVD算法无需手动优化复杂参数)。我朋友团队里一个非技术出身的运营,跟着教程3天就跑通了基础版本。

推荐系统上线后,多久需要更新一次模型?

根据数据量和业务变化频率调整,中小电商通常每周或每月更新一次即可。如果遇到以下情况需优先更新:① 商品换季(如服饰电商从夏装转秋装);② 用户行为模式变化(如促销活动期间点击偏好改变);③ 推荐点击率/转化率连续2周下降。更新时无需重写代码,只需用新数据重新训练模型,全程10-30分钟就能完成。

除了协同过滤和基于内容的推荐,还有其他适合中小电商的方法吗?

有两种简单实用的方法:① 混合推荐:将协同过滤(用户偏好)和基于内容的推荐(商品特征)结果加权组合,比如“70%相似用户喜欢+30%相似商品”,能兼顾用户兴趣和商品属性;② 规则式推荐:根据业务经验直接设定规则,比如“购买手机后推荐手机壳”“加入购物车未结算的商品24小时后推送优惠券”,实现成本低且见效快,适合资源有限的团队。

如何准确判断推荐系统是否提升了销量?

最直接的方法是做A/B测试:随机选两组用户(如A组用新推荐系统,B组用原方法),对比1-2周的核心指标——点击率(推荐栏被点击比例)、转化率(点击后下单比例)、人均下单金额。如果A组指标比B组高15%以上,说明系统有效。 长期观察复购率变化(用户是否因推荐多次购买),也能反映推荐是否真正提升了用户粘性。

0
显示验证码
没有账号?注册  忘记密码?