5ab1c29c
tangwang
first commit
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
|
# 最终更新说明
## 📅 更新日期:2025-10-16
## ✅ 已完成的功能(完整版)
### 1. i2i 相似度索引(4种算法)
#### 1.1 行为相似(3种)
基于用户行为计算商品相似度:
| 算法 | 文件 | 特点 | 状态 |
|------|------|------|------|
| **Swing** | `i2i_swing.py` | 基于用户共同行为,效果最好 | ✅ 已完成 |
| **Session W2V** | `i2i_session_w2v.py` | 基于会话序列,捕获序列关系 | ✅ 已完成 |
| **DeepWalk** | `i2i_deepwalk.py` | 基于图游走,发现深层关系 | ✅ 已完成 |
#### 1.2 内容相似(新增)
基于商品属性计算商品相似度:
| 算法 | 文件 | 特点 | 状态 |
|------|------|------|------|
| **Content-based** | `i2i_content_similar.py` | 基于分类、供应商、属性等 | ✅ 新增完成 |
**支持的方法**:
- `tfidf` - 基于TF-IDF的文本相似度
- `category` - 基于分类的相似度
- `hybrid` - 混合方法(推荐)
**使用的特征**:
- 商品分类(一级到四级)
- 供应商信息
- 包装类型和包装方式
- 商品名称关键词
**运行命令**:
```bash
# 使用混合方法(推荐)
python3 scripts/i2i_content_similar.py --top_n 50 --method hybrid
# 只使用TF-IDF
python3 scripts/i2i_content_similar.py --top_n 50 --method tfidf
# 只使用分类
python3 scripts/i2i_content_similar.py --top_n 50 --method category
```
---
### 2. 兴趣点聚合索引(已完善)
#### 支持的维度(从2个扩展到7个)
**单维度**:
1. ✅ `platform` - 业务平台
2. ✅ `client_platform` - 客户端平台
3. ✅ `supplier` - 供应商
4. ✅ `category_level1` - 一级分类
5. ✅ `category_level2` - 二级分类
6. ✅ `category_level3` - 三级分类
7. ✅ `category_level4` - 四级分类
**组合维度**:
1. ✅ `platform_client` - 业务平台 + 客户端平台
2. ✅ `platform_category2` - 平台 + 二级分类
3. ✅ `platform_category3` - 平台 + 三级分类
4. ✅ `client_category2` - 客户端平台 + 二级分类
**列表类型**:
1. ✅ `hot` - 热门商品
2. ✅ `cart` - 加购商品
3. ✅ `new` - 新品
---
## 🎯 完整的索引输出
### i2i索引(4种)
```
# 行为相似
i2i:swing:{item_id}
i2i:session_w2v:{item_id}
i2i:deepwalk:{item_id}
# 内容相似(新增)
i2i:content_hybrid:{item_id}
i2i:content_tfidf:{item_id}
i2i:content_category:{item_id}
```
### 兴趣点聚合索引(大幅扩展)
**单维度示例**:
```
interest:hot:platform:pc
interest:hot:client_platform:web
interest:hot:supplier:10001
interest:hot:category_level1:100
interest:hot:category_level2:200
interest:hot:category_level3:300
interest:hot:category_level4:400
```
**组合维度示例**:
```
interest:hot:platform_client:pc_web
interest:hot:platform_category2:pc_200
interest:hot:platform_category3:mobile_300
interest:hot:client_category2:web_200
```
**列表类型示例**:
```
interest:hot:category_level2:200
interest:cart:category_level3:300
interest:new:supplier:10001
interest:global:platform_category2:pc_200
```
---
## 📊 业务场景应用(更新)
### 场景1: 首页猜你喜欢
```python
# 1. 基于平台推荐
items_1 = redis.get("interest:hot:platform:pc")
# 2. 基于用户常购分类推荐
items_2 = redis.get("interest:hot:category_level2:200")
# 3. 基于平台+分类组合
items_3 = redis.get("interest:hot:platform_category2:pc_200")
# 融合多个维度
recommended = merge_and_personalize(items_1, items_2, items_3)
```
### 场景2: 详情页大家都在看
```python
item_id = "12345"
# 1. 行为相似(用户行为)
similar_behavior = redis.get(f"i2i:swing:{item_id}")
# 2. 内容相似(商品属性)
similar_content = redis.get(f"i2i:content_hybrid:{item_id}")
# 3. 融合推荐
recommended = merge_i2i(similar_behavior, similar_content, weight1=0.6, weight2=0.4)
```
### 场景3: 分类页推荐
```python
category_id = "200"
# 1. 该分类的热门商品
hot_items = redis.get(f"interest:hot:category_level2:{category_id}")
# 2. 该分类的新品
new_items = redis.get(f"interest:new:category_level2:{category_id}")
# 3. 组合展示
display(hot_items, new_items)
```
### 场景4: 供应商页推荐
```python
supplier_id = "10001"
# 该供应商的热门商品
hot_items = redis.get(f"interest:hot:supplier:{supplier_id}")
```
---
## 🚀 运行所有任务
```bash
cd /home/tw/recommendation/offline_tasks
# 运行全部任务(包括新增的内容相似)
python3 run_all.py --lookback_days 730 --top_n 50
# 只运行内容相似
python3 run_all.py --only-content --top_n 50
# 跳过内容相似,只运行其他
python3 run_all.py --skip-content --lookback_days 730 --top_n 50
```
---
## 📈 性能参考(更新)
| 任务 | 数据依赖 | 预估时间 | 内存占用 |
|------|---------|---------|---------|
| Swing | 用户行为(730天) | 2-4小时 | 4-8GB |
| Session W2V | 用户行为(730天) | 30-60分钟 | 2-4GB |
| DeepWalk | 用户行为(730天) | 1-2小时 | 2-4GB |
| **Content-based** | **商品属性(全量)** | **10-30分钟** | **2-4GB** |
| 兴趣点聚合 | 用户行为(730天) | 30-60分钟 | 2-4GB |
**总计**:约6-10小时
---
## 📝 数据表依赖关系
### i2i 行为相似
- `sensors_events` - 用户行为事件
- `prd_goods_sku` - 商品SKU信息
### i2i 内容相似(新增)
- `prd_goods_sku` - 商品SKU信息
- `prd_goods` - 商品主表
- `sup_supplier` - 供应商信息
- `prd_category` - 分类信息(层级结构)
- `prd_goods_sku_attribute` - 商品属性
- `prd_option` - 属性选项
- `prd_attribute` - 属性定义
### 兴趣点聚合(已完善)
- `sensors_events` - 用户行为事件
- `prd_goods_sku` - 商品SKU信息
- `prd_goods` - 商品主表
- `prd_category` - 分类信息(新增)
---
## 🔄 与原有代码的对比
### 原计划维度(文档中)
- ❌ 国家/销售区域(字段不存在)
- ❌ 客户类型(字段不存在)
- ⚠️ 二级分类(原以为不存在,现已支持)
- ⚠️ 三级分类(原以为不存在,现已支持)
### 实际实现维度(完善后)
- ✅ 业务平台
- ✅ 客户端平台
- ✅ 供应商(新增)
- ✅ 一级分类(新增)
- ✅ 二级分类(新增支持)
- ✅ 三级分类(新增支持)
- ✅ 四级分类(新增)
---
## 💡 优势总结
### 1. 内容相似的优势
- ✅ **冷启动友好**:新商品立即可用
- ✅ **不依赖行为数据**:商品上架即可生成相似推荐
- ✅ **可解释性强**:基于分类、属性等明确特征
- ✅ **计算快速**:只需要商品属性数据
### 2. 多维度聚合的优势
- ✅ **分类粒度丰富**:支持4级分类
- ✅ **供应商维度**:支持供应商页推荐
- ✅ **组合查询**:支持平台+分类等组合维度
- ✅ **灵活性高**:可根据需要查询不同粒度
### 3. 算法融合的优势
- ✅ **行为 + 内容**:可以融合4种i2i算法
- ✅ **短期 + 长期**:热门、新品等不同时效性
- ✅ **粗粒度 + 细粒度**:一级到四级分类
---
## 🎉 完成状态
**✅ 全部完成!**
1. ✅ i2i 行为相似(3种算法)
2. ✅ i2i 内容相似(1种算法,3种方法)
3. ✅ 兴趣点聚合(7个单维度 + 4个组合维度 + 3种列表类型)
4. ✅ 统一调度脚本
5. ✅ Redis加载工具
6. ✅ 完整文档
---
## 📚 相关文档
- **CURRENT_STATUS.md** - 当前功能状态
- **FIELD_MAPPING.md** - 字段映射说明
- **DATABASE_SETUP.md** - 数据库配置
- **TROUBLESHOOTING.md** - 故障排除
- **README.md** - 完整文档
---
**更新版本**: v1.1
**更新日期**: 2025-10-16
**主要变化**:
- 新增内容相似算法
- 完善分类维度支持(1-4级)
- 新增供应商维度
- 扩展组合维度查询
|