1. 项目概述
电商行业每天产生海量的商品数据,SKU(Stock Keeping Unit)作为商品管理的最小单元,其分类效率直接影响着库存管理、搜索推荐和营销活动的效果。传统人工分类方式不仅耗时费力,还容易因主观判断导致分类不一致。我们团队最近完成了一个从零搭建的AI驱动SKU智能分类系统,将商品分类准确率从人工的78%提升到了94%,同时处理速度提高了20倍。
这个项目特别适合两类人群:一是想要切入AI实战的初学者,可以通过完整的项目理解机器学习工作流程;二是中小电商企业的技术负责人,能够快速复现这套低成本高回报的解决方案。整个系统我们采用Python+Scikit-learn技术栈实现,没有使用复杂的深度学习框架,在保证效果的前提下最大程度降低了实现门槛。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心需求解析
2.1 电商SKU分类的业务痛点
在实际运营中,我们发现SKU分类主要面临三个核心问题:
- 新品上架时运营人员需要手动选择分类,平均每个SKU耗时2-3分钟
- 不同运营人员的分类标准不一致,导致相似商品被分到不同类别
- 促销活动时需要人工筛选目标品类商品,响应速度慢
以我们合作的母婴电商为例,仅"奶瓶"这个商品就有7个不同分类路径:有的按品牌分、有的按材质分、还有的按适用年龄段分。这种混乱直接导致用户搜索"PPSU奶瓶"时,相关商品展示不全。
2.2 智能分类系统的设计目标
基于这些痛点,我们确定了系统的四个关键指标:
- 准确率:>90%(基于人工分类基准)
- 处理速度:<1秒/SKU
- 可解释性:能输出分类依据的关键特征
- 扩展性:支持新增品类无需重新训练
特别要强调的是,电商场景不需要追求99%+的极致准确率。我们的业务分析显示,90%准确率已经比人工分类更优,剩下10%的误差可以通过简单的人工复核流程弥补,这种"AI初筛+人工确认"的混合模式在实际业务中最具性价比。
3. 技术方案选型
3.1 机器学习 vs 深度学习
虽然当前大语言模型很火,但经过实测我们发现,对于SKU分类这种结构化程度高的任务,传统机器学习方法反而更具优势:
- 数据需求:机器学习模型只需几百个标注样本就能达到不错效果,而深度学习需要上万样本
- 训练成本:我们的随机森林模型在普通笔记本上10分钟就能完成训练,而BERT类模型需要GPU资源
- 可解释性:决策树可以直观展示分类规则,方便业务人员理解信任
提示:如果商品描述包含大量图片,可以后续升级为多模态模型,但建议先从文本分类做起
3.2 特征工程设计
我们从三个维度提取了17个关键特征:
文本特征(处理商品标题和描述):
- TF-IDF关键词权重(前20个关键词)
- 品牌词是否出现在标题开头(0/1)
- 商品规格参数(如容量、尺寸等数值)
统计特征:
- 标题长度
- 价格区间(每100元为一个区间)
- 是否包含促销关键词(满减、折扣等)
业务特征:
- 季节相关性(夏季/冬季商品)
- 适用人群(婴儿、孕妇等)
- 商品生命周期(新品/常规品/清库存)
我们使用Featuretools库自动生成特征组合,最终筛选出区分度最高的特征集。比如发现"品牌+材质"的组合对母婴用品分类特别有效。
4. 系统实现细节
4.1 数据处理流水线
python复制from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.ensemble import RandomForestClassifier
# 示例代码核心部分
pipeline = Pipeline([
('tfidf', TfidfVectorizer(max_features=500)),
('clf', RandomForestClassifier(
n_estimators=150,
max_depth=12,
class_weight='balanced'
))
])
这个流水线实现了文本特征提取和分类的一站式处理。关键参数说明:
- max_features=500:限制特征维度避免过拟合
- n_estimators=150:森林中树的数量,经测试150性价比最高
- class_weight='balanced':自动处理类别不均衡问题
4.2 分类规则可视化
通过sklearn的export_graphviz可以导出单棵决策树的判断逻辑:
python复制from sklearn.tree import export_graphviz
import pydotplus
dot_data = export_graphviz(
pipeline.named_steps['clf'].estimators_[0],
feature_names=pipeline.named_steps['tfidf'].get_feature_names_out(),
class_names=class_names,
filled=True
)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_png('tree.png')
生成的决策树图显示,系统首先判断是否包含"婴儿"、"孕妇"等关键词,然后根据材质、容量等特征进行细分,与人工分类逻辑高度一致但更加量化。
5. 部署与优化
5.1 线上部署方案
我们使用Flask构建了轻量级API服务:
python复制from flask import Flask, request, jsonify
import joblib
app = Flask(__name__)
model = joblib.load('sku_classifier.pkl')
@app.route('/classify', methods=['POST'])
def classify():
data = request.json
title = data['title']
description = data['description']
features = preprocess(title, description)
pred = model.predict([features])
return jsonify({'category': pred[0]})
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
这个API平均响应时间在300ms左右,单台2核4G的云服务器可以轻松支撑每秒50+次分类请求。
5.2 持续学习机制
我们设计了三个反馈闭环:
- 人工修正记录:运营人员对AI分类结果的修改会自动存入训练集
- 分类置信度监控:低置信度(<0.7)的预测触发人工审核
- 月度模型重训:用新增数据重新训练模型并AB测试
这套机制使得系统上线半年后,准确率从初始的91%提升到了94%。
6. 常见问题与解决方案
6.1 样本不均衡问题
母婴品类中"奶瓶"样本量是"吸鼻器"的20倍,直接训练会导致小类识别率低。我们采用三种对策组合:
- 过采样少数类(SMOTE算法)
- 调整类别权重(class_weight参数)
- 设计分层抽样验证集
6.2 新品冷启动
对于全新品类(如突然上架的宠物用品),系统会:
- 匹配最相似的现有类别临时归类
- 标记为"待确认"状态
- 收集20个样本后启动专项训练
6.3 多语言混合问题
跨境电商常见的多语言标题处理方案:
- 统一翻译为中文(用阿里云机器翻译API)
- 提取语言无关特征(品牌、型号、规格等)
- 训练多语言词向量
7. 效果评估与业务价值
上线三个月后的关键指标对比:
| 指标 | 人工分类 | AI分类 | 提升幅度 |
|---|---|---|---|
| 分类速度 | 3分钟/SKU | 0.8秒/SKU | 225倍 |
| 准确率 | 78% | 92% | +14% |
| 人力成本 | 2人专职 | 0.5人兼职 | 75% |
| 搜索转化率 | 12% | 18% | +6% |
这套系统给我们带来了三个意外收获:
- 发现了200多个分类错误的积压商品,修正后销售额平均提升7%
- 通过分类关键词分析,识别出5个潜力新品方向
- 为个性化推荐系统提供了更准确的商品画像
对于想要尝试的团队,我的建议是先从小品类试点(比如先做"奶瓶"分类),积累足够样本后再扩展。我们开源了基础版的代码模板,包含数据预处理和模型训练的完整流程,可以在GitHub上搜索"sku-classifier-starter"获取。
