Files
onion-dmp/analyze_issue.md
2026-04-08 14:52:09 +08:00

191 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔍 数据质量分析报告
## 问题描述
选择了11个标签组合后转化率变成了 **0%**
- 母亲主导
- 一线城市
- 高收入 (>5w)
- 独生子女
- 初中阶段
- 初一 (7年级)
- 培优拔高
- 数学薄弱
- 重点/示范校
- 体制内/国企
- **日活用户** ← 这个导致了 0 人
---
## 分析结果
### ✅ 数据不是质量太低的问题
实际上,数据质量还不错:
- 总用户数50,000 人
- 前 10 个条件交集:**4 人** ✅
- 加上第 11 个条件(日活用户):**0 人** ❌
### 🎯 真实原因
**不是数据太少,而是标签相关性设计不够合理**
这4个符合前10个条件的用户他们的活跃特征分别是
1. 用户 16727**考前突击**
2. 用户 20002**沉默用户**
3. 用户 28755**周末活跃**
4. 用户 29105**考前突击**
**没有一个是"日活用户"**
---
## 根本问题
### 当前种子数据生成逻辑seed.js 第 363 行)
```javascript
// 活跃特征 (同时存在两项的概率加大)
tags.push(weightedPick([
{ value: 'eng_active_daily', weight: 15 }, // 只有 15% 概率
{ value: 'eng_weekend', weight: 35 }, // 35%
{ value: 'eng_exam', weight: 25 }, // 25%
{ value: 'eng_dormant', weight: 25 } // 25%
]));
```
### 问题点
1. **日活用户比例太低**15%
2. **活跃特征与其他属性无相关性**
- 逻辑上,"高收入 + 培优拔高 + 重点学校"的家长**应该更可能是日活用户**
- 但代码中,活跃特征是完全随机分配的
3. **没有考虑用户画像的合理性**
- 体制内/国企 + 全职妈妈 → 更可能日活
- 高收入 + 培优拔高 → 更可能付费+日活
- 沉默用户不应该同时是付费会员
---
## 改进方案
### 方案 1提高日活用户比例快速
修改权重:
```javascript
tags.push(weightedPick([
{ value: 'eng_active_daily', weight: 30 }, // 提高到 30%
{ value: 'eng_weekend', weight: 30 },
{ value: 'eng_exam', weight: 25 },
{ value: 'eng_dormant', weight: 15 } // 降低沉默用户
]));
```
### 方案 2基于用户画像的智能分配推荐
```javascript
// 活跃特征 - 基于用户画像智能分配
let engWeights;
// 高收入 + 培优拔高 + 重点学校 → 大概率日活
if ((actualIncome === 'inc_high' || actualIncome === 'inc_mid_high')
&& tags.includes('sp_top')) {
engWeights = [
{ value: 'eng_active_daily', weight: 40 }, // 40%
{ value: 'eng_weekend', weight: 30 },
{ value: 'eng_exam', weight: 20 },
{ value: 'eng_dormant', weight: 10 }
];
}
// 全职妈妈 → 高概率日活
else if (tags.includes('pj_fulltime')) {
engWeights = [
{ value: 'eng_active_daily', weight: 50 }, // 50%
{ value: 'eng_weekend', weight: 25 },
{ value: 'eng_exam', weight: 15 },
{ value: 'eng_dormant', weight: 10 }
];
}
// 体制内/国企 → 中等日活概率
else if (tags.includes('pj_gov')) {
engWeights = [
{ value: 'eng_active_daily', weight: 25 },
{ value: 'eng_weekend', weight: 35 },
{ value: 'eng_exam', weight: 25 },
{ value: 'eng_dormant', weight: 15 }
];
}
// 其他情况
else {
engWeights = [
{ value: 'eng_active_daily', weight: 15 },
{ value: 'eng_weekend', weight: 35 },
{ value: 'eng_exam', weight: 30 },
{ value: 'eng_dormant', weight: 20 }
];
}
tags.push(weightedPick(engWeights));
```
### 方案 3重新生成数据最佳
运行改进后的种子脚本:
```bash
npm run seed
```
---
## 数据统计
### 逐步筛选过程
| 步骤 | 添加条件 | 剩余人数 | 占比 |
|------|---------|---------|------|
| 1 | 母亲主导 | 30,006 | 60.01% |
| 2 | + 一线城市 | 4,492 | 8.98% |
| 3 | + 高收入 | 1,390 | 2.78% |
| 4 | + 独生子女 | 804 | 1.61% |
| 5 | + 初中阶段 | 483 | 0.97% |
| 6 | + 初一 | 174 | 0.35% |
| 7 | + 培优拔高 | 85 | 0.17% |
| 8 | + 数学薄弱 | 34 | 0.07% |
| 9 | + 重点学校 | 11 | 0.02% |
| 10 | + 体制内/国企 | **4** | **0.008%** |
| 11 | + 日活用户 | **0** | **0%** ❌ |
### 两两标签相关性Jaccard 相似度)
| 标签对 | 交集人数 | 相似度 |
|--------|---------|--------|
| 母亲主导 ∩ 一线城市 | 4,492 | 13.61% |
| 一线城市 ∩ 高收入 | 2,319 | 20.76% |
| 高收入 ∩ 独生子女 | 3,315 | 10.98% |
| 独生子女 ∩ 初中阶段 | 16,633 | 37.80% |
| 初中阶段 ∩ 初一 | 11,964 | 35.50% |
---
## 建议
### 短期方案5分钟
重新生成种子数据,提高日活用户比例和相关性
### 长期方案
1. 添加更多真实的用户行为数据
2. 基于实际业务逻辑设计标签相关性
3. 定期分析标签组合的覆盖情况
4. 对于极端稀少的组合,可以在 UI 上给出提示
---
## 结论
**这不是数据质量问题**,数据生成逻辑运行正常
⚠️ **这是标签相关性设计问题**,需要优化种子数据生成算法
🎯 **解决方案**:重新生成数据,让标签之间有更合理的相关性
生成时间: $(date)