新闻app用户分析及召回策略
一、数据信息数据来源:阿里天池
字段说明:
表train_click_log: 数据量:1112623,字段数:9
user_id: 用户的唯一标识
click_article_id: 用户点击的文章唯一标识
click_timestamp: 用户点击文章时的时间戳
click_environment: 用户点击文章的环境
click_deviceGroup: 用户点击文章的设备组
click_os: 用户点击文章时的操作系统
click_country: 用户点击文章时的所在的国家
click_region: 用户点击文章时所在的区域
click_referrer_type: 用户点击文章时,文章的来源
表articles:数据量:364047 字段数:4
article_id:文章唯一标识
category_id:文章主题唯一标识
created_at_ts: 文章创造时间戳
words_counts: 文章字数
二、数据预处理
增加表train_click_log的字段:用户第几次点击新闻、用户点击新闻的次数,总计11个字段
select c.*,rank()over(partition by c.user_id order by c.click_timestamp) as 用户第几次点击,count(c.click_timestamp)over(partition by c.user_id ) as 用户点击次数from edw.train_click_log AS c 三、数据分析
3.1 表train_click_log基本分析
阅读率分析:该app上去重后共计364047条新闻发布,在统计时间段内有31116条新闻被阅读过,仅占8.54%
select count(DISTINCT c.click_article_id) from edw.train_click_log AS c
点击新闻汇总分析:
新闻热度分析:一条新闻被多少用户打开过,越多用户打开过该条新闻,说明该条新闻热度越高,用阅读人数指标来衡量新闻热度(由于一条新闻可能被一个用户多次打开,造成虚假数据,这里按照用户数计算,而不是阅读数)
select c.click_article_id,count(DISTINCT c.user_id)from edw.train_click_log as cgroup by c.click_article_idorder by count(DISTINCT c.user_id) DESC
如图所示,共有31116条新闻被阅读过,其中大部分新闻的用户数都较低,有1204条新闻用户数超过100人,占比3.86%,仅有245条新闻用户数超过1000人,仅占0.78%。由此说明少量的热点新闻带来了大量的app用户,符合长尾理论。
1.PNG
进一步查看前20条热点新闻的分布,如图所示,可以看到id为234698的新闻热度最高,接近12000人,前20条热点新闻的读者数都在5000以上。
2.PNG
点击新闻环境分布:
select c.click_environment,count(c.click_environment) from edw.train_click_log as c group by c.click_environment
如图所示,98%的阅读都发生在编号为4的环境里,阅读数为1084627,其余环境占比较少,可重点关注该环境的阅读体验。
3.PNG
点击设备分布
select c.click_deviceGroup,count(c.click_deviceGroup) from edw.train_click_log as c group by c.click_deviceGrouporder by count(c.click_deviceGroup) desc
如图所示,编号为1和3的设备是读者最主要的选择,分别占比61%和31%,可以考虑在这个设备上优化提升阅读体验。
4.PNG
点击系统分布:
select c.click_os,count(c.click_os) from edw.train_click_log as c group by c.click_osorder by count(c.click_os) desc
如图,编号为12,2,20的系统是读者选择的最主要系统,分别占比58%,28%,11%,重点优化。
5.PNG
点击地区分布:
select c.click_region,count(c.click_region) from edw.train_click_log as c group by c.click_regionorder by count(c.click_region) desclimit 20
如图,编号25,21,13地区的读者是该新闻app的主要用户,超过别的地区读者之和。
6.PNG
点击文章来源分布:
select c.click_referrer_type,count(c.click_referrer_type) from edw.train_click_log as c group by c.click_referrer_typeorder by count(c.click_referrer_type) desc
如图所示,编号为2,1的来源是文章主要来源,占比分别是54%,38%,可重点关注这两个来源。
7.PNG
用户活跃度分析:读者阅读的文章阅读,就认定为其活跃度越高。
select c.user_id,count(c.click_article_id)from edw.train_click_log as cgroup by c.user_idorder by count(c.click_article_id) DESC
共计20万读者,图展示的前30%的读者阅读数分布,阅读数的区间为,即每个用户至少阅读了两篇文章。平均每个用户阅读11篇文章,524个用户阅读数在50篇以上,仅占0.26%,可见这些读者是该app最具价值的用户。超过11篇文章认定为高价值用户,有23897个读者,占比11.9%。针对阅读量较少的读者,建议针对其特征进行阅读点的挖掘,提升高价值用户的占比。
8.PNG
重复阅读次数分析:一篇文章被一个读者多次打开阅读,可以衡量读者对该文章的喜欢程度,更可以侧面反映出文章的质量,好的文章值得反复阅读。
select cf.重复次数,count(cf.重复次数) FROM(select c.user_id,c.click_article_id,count(c.click_timestamp) AS 重复次数 from edw.train_click_log as c group by c.user_id,c.click_article_idhaving count(c.click_timestamp)>1order by count(c.click_timestamp) DESC) cfgroup by cf.重复次数
如表所示,有6673个读者对文章重复阅读2次,阅读4次及以上人数较少,其中一篇文章被一个用户重复阅读13次(其中可能包含打开且关闭异常情况,需要结合阅读时间进行综合分析),可见其对该文章的喜欢程度,可重点推送该类文章给该读者。
9.PNG
3.2 表articles基本分析
主题分析:每篇文章归属于一个主题
select a.category_id,count(a.category_id)from edw.articles AS a group by a.category_id
共计461个主题,其包含文章数量如图所示,其中主题编号50-100的主题文章数量最少,低于10000篇,而编号400+的主题文章数最多,接近80000篇。
10.PNG
文章创作时间戳分析:新创作的文章和较之前创作的文章其阅读率的对比,如图,app上一半左右的文章都是近期创作。
11.PNG
文章字数分析:文章字数符合符合正态分布,95%文章篇幅都在100-300之间。
12.PNG
3.3 两表联立分析
读者的兴趣广泛程度分析:读者阅读的有关主题越多,说明兴趣越广泛。
select c.user_id,count(DISTINCT a.category_id) from edw.train_click_log AS c left join edw.articles as a ON c.click_article_id = a.article_idgroup by c.user_idorder by count(DISTINCT a.category_id) DESC
如图所示,基本上所有的读者都至少爱好两种主题。编号为194859的读者阅读过62种主题的新闻文章。平均每个读者阅读7.8种主题,说明该app用户兴趣较为广泛。
13.PNG
热点主题分析:主题被关注的程度、可以考虑增加热点主题的文章数。
select a.category_id,count(DISTINCT c.user_id) from edw.train_click_log AS c right join edw.articles as a on c.click_article_id = a.article_idGROUP BY a.category_idORDER BY count(DISTINCT c.user_id) DESC
如图,在阅读的文章中,只有少量主题是被重点关注的,点击文章大于1000的主题有83个,占比83/461=18%,点击文章大于10000的主题有26个,仅占比26/461=5.63%,平均每个主题被阅读1766次。最热主题编号为375,点击文章次数为66441,占比达总阅读次数5.9%。而在发布的文章中,编号375的主题文章数为10005篇,占总文章数的10005/364047=2.74%,即该主题用2.74%的篇幅做到了5.9%的阅读量。
14.PNG
15.PNG
时间序列分析:阅读的文章是否是近期发布,其中近期发布的有多少,之前发布的有多少,可以衡量近期发布的文章受欢迎程度。
select a.created_at_ts,count(a.created_at_ts) from edw.train_click_log AS c left join edw.articles as aon c.click_article_id = a.article_idgroup by a.created_at_ts
如图所示、阅读的文章都是近期创作,占比高达99%,符合新闻的时效性。但其中以前的文章中占比近1/3,可以考虑减少一些质量较低的之前创作的文章。
16.PNG
四、数据挖掘
目的:对阅读量较低的低频用户推送其可能感兴趣的文章、对阅读主题较少的用户推送其可能感兴趣的主题、对沉默用户(即下载了该新闻app,但是基本上没有打开阅读过新闻)可以推送一些热点新闻及热点主题的新闻。
方法:基于新闻相似度的协同过滤,这是因为这里缺失新闻的较多特征数据,只能使用读者和新闻的交互数据对新闻进行关联。
过程:
step1.根据用户与新闻的交互数据得到字典{读者1:[(阅读文章1,时间1),(阅读文章2,时间2),...]....},如图显示的是编号前8的读者与新闻的交互数据。
17.PNG
step2.使用该交互数据计算新闻的相似度矩阵。
step3.设置相似文章以及推送文章的数量,若基于相似度推送数量较少,则推送热门新闻补全。
step4.基于相似度和热门新闻迭代出每个用户的推送文章。
18.PNG
如图给出的是编号199995的读者推送的十篇文章编号。
页:
[1]