天池入门赛- 新闻推荐-task2-数据分析

#数据分析目的
数据分析的价值主要在于熟悉了解整个数据集的基本情况包括每个文件里有哪些数据,具体的文件中的每个字段表示什么实际含义,以及数据集中特征之间的相关性,在推荐场景下主要就是分析用户本身的基本属性,文章基本属性,以及用户和文章交互的一些分布,这些都有利于后面的召回策略的选择,以及特征工程。

#数据分析
##数据浏览-训练集为例
训练集用户点击日志
trn_click = trn_click.merge(item_df, how=‘left’, on=[‘click_article_id’])
用户点击日志信息
trn_click.info()
训练集中的用户数量为20w
trn_click.user_id.nunique()
##具体分析
主要分析以下几个方面:
1.训练集和测试集的用户id没有重复,也就是测试集里面的用户没有模型是没有见过的。
trn_click.describe()
2.训练集中用户最少的点击文章数是2, 而测试集里面用户最少的点击文章数是1。
user_click_count = user_click_merge.groupby([‘user_id’, ‘click_article_id’])[‘click_timestamp’].agg({‘count’}).reset_index()
user_click_count.loc[:,‘count’].value_counts()
3.用户对于文章存在重复点击的情况, 但这个都存在于训练集里面。
4.同一用户的点击环境存在不唯一的情况,后面做这部分特征的时候可以采用统计特征。
5.用户点击文章的次数有很大的区分度,后面可以根据这个制作衡量用户活跃度的特征。
user_click_item_count = sorted(user_click_merge.groupby(‘user_id’)[‘click_article_id’].count(), reverse=True)
plt.plot(user_click_item_count)
6.文章被用户点击的次数也有很大的区分度,后面可以根据这个制作衡量文章热度的特征。
item_click_count = sorted(user_click_merge.groupby(‘click_article_id’)[‘user_id’].count(), reverse=True)
plt.plot(item_click_count)
7.用户看的新闻,相关性是比较强的,所以往往我们判断用户是否对某篇文章感兴趣的时候, 在很大程度上会和他历史点击过的文章有关。
tmp = user_click_merge.sort_values(‘click_timestamp’)
tmp[‘next_item’] = tmp.groupby([‘user_id’])[‘click_article_id’].transform(lambda x:x.shift(-1))
union_item = tmp.groupby([‘click_article_id’,‘next_item’])[‘click_timestamp’].agg({‘count’}).reset_index().sort_values(‘count’, ascending=False)
union_item[[‘count’]].describe()
8.用户点击的文章字数有比较大的区别, 这个可以反映用户对于文章字数的区别。
user_click_merge.groupby(‘user_id’)[‘category_id’].nunique().reset_index().describe()
plt.plot(sorted(user_click_merge.groupby(‘user_id’)[‘words_count’].mean(), reverse=True))
9.用户点击过的文章主题也有很大的区别, 这个可以反映用户的主题偏好。
10.不同用户点击文章的时间差也会有所区别, 这个可以反映用户对于文章时效性的偏好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值