参考自modelwahle上的用户[广发英雄帖]所做的数据分析案例,提取思路部分,仅供参考。
数据的预处理
- 为提高运行效率,会随机抽取20%的数据样本
df = df_orginal.sample(frac=0.2,random_state=None); - 预览数据的类型df.info()和缺失值df.isnull().sum(),并去掉缺失值太多的数据列df.drop();
- 日期与时段处理,将时间拆分为日期和时段,时段又分为'凌晨'、'上午'、'中午'、'下午'、'晚上';
- 制作用户标签表,生成用户标签表,后续制作好的标签都加入这个表中;
用户行为标签
1. 用户浏览活跃时间段
对用户和时段分组,统计浏览次数并且统计浏览次数最多的时段并提取,可并列,添加到用户标签表;2. 用户购买活跃时间段
逻辑与1相同;
3. 关于类目的用户行为
1⃣️浏览最多的类目
2⃣️收藏最多的类目
3⃣️加购最多的类目
4⃣️购买最多的类目
4. 30天用户行为
1⃣️近30天购买次数
2⃣️近30天加购次数
将加购行为按用户进行分组,统计次数
3⃣️近30天活跃天数
对用户进行分组,统计活跃的天数,包括浏览、收藏、加购、购买
5. 7天用户行为
1⃣️近7天购买次数
统计七天内的数据
2⃣️近7天加购次数
3⃣️近7天活跃天数
6. 最后一次行为距今天数
1⃣️上次浏览距今天数2⃣️上次加购距今天数
3⃣️上次购买距今天数
7. 最近两次购买间隔天数
8. 是否浏览未下单
统计同时具备两者特征的用户9. 是否加购未下单
统计同时具备两者特征的用户用户属性标签
1. 是否复购用户
统计每个用户总购买次数判断是否大于2
2. 访问活跃度
30天内访问人数和次数的关系来判断活跃阈值
3. 购买活跃度
30天内购买人数和次数的关系
4. 购买的品类是否单一
判断每个用户购买品类是否为1
未购买的用户标记为‘未购买’,不为1的用户标记为‘否’,为1的用户标记为‘是’
5. 用户价值分组(RFM)
此处仅判断购买人数和距今天数的关系,访问异常为双十二
用户个性化标签
数据预处理
对所有数据按'user_id','item_id','behavior_type','item_category','time'进行分组1. 应用TF-IDF算法计算标签权重
TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率),是一种加权算法,即次数*频率。
计算每个用户身上每个标签的个数和总数,以及每个标签的行为数;
应用TF-IDF计算标签权重
2. 建立行为类型权重维表
浏览行为,权重0.3
收藏行为,权重0.5
加购行为,权重1
购买行为,权重1.5
3. 计算用户标签权重
标签权重衰减函数
本项目中,加购行为的权重不随着时间的增长而衰减,而购买、浏览、收藏随着时间的推移,其对当前的参考性越来越弱,因此权重会随着时间的推移越来越低
用户偏好标签
1. 计算两两标签共同对应的用户数
要计算两两标签的相似性,计算量太大,服务器性能有限,在此只选取有过购买的标签
2. 计算每个标签对应的用户数
将两表正交,得到每个用户下,其所有标签的的两两组合
删除重复值,即同一用户由上述正交得到的数据表中,两个标签为同一标签的数据
用两个标签分组,计算用户数,即每两个标签同时出现在不同的用户中的个数
计算每一个标签对应的不同的用户数,即每个标签出现在不同的用户中的个数
计算标签1有关的用户数,计算标签2有关的用户数
3. 计算两两标签之间的相似性
余弦相似度计算两两标签的相关性
4. 对每个用户的历史标签权重加总
对用户、标签进行分组,计算每个用户每个标签的权重和
5. 计算推荐给用户的相关标签
将用户与所有与其有关的标签作对应
计算推荐得分值 得分值 = 行为权重*相关性
群体用户画像标签
1. 随机指定性别并划分群体
2. 使用TF-IDF计算不同人群的标签偏好
计算每个性别、每个标签的权重加总计算每个性别的所有标签的权重加总
使用TF-IDF算法计算每个性别对每个标签的偏好权重值
对所有数据按得分值排序,再按性别分组,得到每个性别得分值最高的10个标签