DW_新闻推荐_task02_数据分析

数据分析:
下面的这张图生动的描述了机器学习与深度学习的区别:特征提取
在这里插入图片描述
我们做一个新任务,需要利用我们的知识和工具进行进行探索。就像让你去景岗山打老虎,你需要做好准备,比如带上攻击武器,带上地图,带上跌打药,需要分析老虎可能出没的地方等等。同样的,做机器学习任务,数据的理解、清洗是第一步,十分重要!
本期的主题是“新闻”推荐,所以新闻本身作为首要的特征是需要重点关注的。

  1. 一共有多少个文章主题
  2. 文章的被点击的分布状况? (最常见的分为热门,冷门)
  3. 用户对文章的点击分布情况? (有的人很关注新闻,热门、冷门都看; 有的人很少关注新闻,那么这类人应该更有可能是被热门新闻所吸引,再或者说他的关注点本身比较冷门。)
  4. 如果有关注抖音的会有个细心的发现,抖音刚开始的时候,视频都比较短:15秒。对的,因为现在社会是个变化非常快,节奏也是非常快的。同样的,新闻除了内容本身外,长短也是一个重要的特征。

1、 数据集一个结构化的表格,这对于我们的处理带来了很大的便利性。

item_df = pd.read_csv(path+'articles.csv')
print(item_df['category_id'].nunique())     # 461个文章主题
item_df['category_id'].hist()

在这里插入图片描述2、文章被点击的分布状况

#####train
trn_click = pd.read_csv(path+'train_click_log.csv')
#####test
tst_click = pd.read_csv(path+'testA_click_log.csv')
user_click_merge = trn_click.append(tst_click)
###上面的append, 是把训练集和测试集的数据整合到一起,然后分析分布状况。也可以只要训练集。
user_click_item_count = sorted(user_click_merge.groupby('user_id')['click_article_id'].count(), reverse=True)
plt.plot(user_click_item_count)

下面第一图,是总体的文章被点击的次数分布。纵轴是次数分布,横轴是用户ID。可以看出有一个明显的转折点,也就是说,文章的点击次数有个明显的分层。次数越多,说明文章越受大家喜欢,可以定义为热门新闻。就如同,物品相似度计算方法的协同过滤的背后的假设,如下面的解释。

协同过滤—https://www.cnblogs.com/NeilZhang/p/9900537.html
算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品。
在这里插入图片描述
其中,|N(i)|是喜欢物品i的用户数,|N(j)|是喜欢物品j的用户数,|N(i)&N(j)|是同时喜欢物品i和物品j的用户数。
从上面的定义看出,在协同过滤中两个物品产生相似度是因为它们共同被很多用户喜欢,两个物品相似度越高,说明这两个物品共同被很多人喜欢。
这里面蕴含着一个假设:就是假设每个用户的兴趣都局限在某几个方面,因此如果两个物品属于一个用户的兴趣列表,那么这两个物品可能就属于有限的几个领域,而如果两个物品属于很多用户的兴趣列表,那么它们就可能属于同一个领域,因而有很大的相似度。
(用户活跃度大的用户可能喜欢列表中有很多商品,会影响ItemCf算法计算结果准确性,后面优化算法会增加一个用户活跃度分子)

如下所示,第一幅图(纵轴点击次数,横轴文章序号),可以看出文章被点击次数的明显分层。第二幅,可以看出点击次数最多的前100篇文章,点击次数大于1000次。我们可以定义一定数量的文章为热门文章,比如前20篇,或者点击次数大于2500次。

item_click_count = sorted(user_click_merge.groupby('click_article_id')['user_id'].count(), reverse=True)
plt.plot(item_click_count)
plt.plot(item_click_count[:100])
plt.plot(item_click_count[:20])

在这里插入图片描述在这里插入图片描述
3、用户点击行为的分布。
用户总体的点击分布这里可以放大看下点击次数在前50的用户。我们可以定义点击次数大于某个数(如100次)的用户为活跃用户。因为活跃用户的数据更有价值。

user_click_item_count = sorted(user_click_merge.groupby('user_id')['click_article_id'].count(), reverse=True)
plt.plot(user_click_item_count)
plt.plot(user_click_item_count[:50])

在这里插入图片描述
4、这里我们可以分析文章被点击次数从多到少的前5000篇,统计其字数。

#挑出大多数人的区间仔细看看
plt.plot(sorted(user_click_merge.groupby('user_id')['words_count'].mean(), reverse=True)[1000:45000])

在这里插入图片描述
从上图可以看出,大多数人偏好阅读字数在200-400字之间的新闻。真的是,新闻字越少,“事”儿越大!
还有其他的特征,有了这些初步印象,后面的特征工程就有了方向,而不是手足无措了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值