【数据挖掘】天池挑战赛 新闻推荐

比赛网址:https://tianchi.aliyun.com/competition/entrance/531842/introduction
项目源码:Github

一、项目知识点

  1. 数据预处理;

  2. 数据可视化;

  3. 特征工程;

  4. 模型选择;

  5. 实验结果的评价;

二、实验过程

一、比赛任务分析

1.赛题背景

赛题以新闻APP中的新闻推荐为背景,要求选手根据用户历史浏览点击新闻文章的数据信息预测用户未来点击行为,即用户的最后一次点击的新闻文章

2.赛题数据

数据来自某新闻APP平台的用户交互数据,包括30万用户,近300万次点击,共36万多篇不同的新闻文章,同时每篇新闻文章有对应的embedding向量表示。将会从中抽取20万用户的点击日志数据作为训练集,5万用户的点击日志数据作为测试集A,5万用户的点击日志数据作为测试集B。

train_click_log.csv 训练集用户点击日志
testA_click_log.csv 测试集用户点击日志
articles.csv 新闻文章信息数据表
articles_emb.csv 新闻文章embedding向量表示
sample_submit.csv 提交样例文件

数据表

Field Description
user_id 用户id
click_article_id 点击文章id
click_timestamp 点击时间戳
click_environment 点击环境
click_deviceGroup 点击设备组
click_os 点击操作系统
click_country 点击城市
click_region 点击地区
click_referrer_type 点击来源类型
article_id 文章id,与click_article_id相对应
category_id 文章类型id
created_at_ts 文章创建时间戳
words_count 文章字数
emb_1,emb_2,…,emb_249 文章embedding向量表示

字段表

Field Description
user_id 用户id
click_article_id 点击文章id
click_timestamp 点击时间戳
click_environment 点击环境
click_deviceGroup 点击设备组
click_os 点击操作系统
click_country 点击城市
click_region 点击地区
click_referrer_type 点击来源类型
article_id 文章id,与click_article_id相对应
category_id 文章类型id
created_at_ts 文章创建时间戳
words_count 文章字数
emb_1,emb_2,…,emb_249 文章embedding向量表示

3.评价指标

利用推荐系统常用的两个指标MRR与HR进行评估。

HR(Hit Rate): img

命中率:预测个数占用户总数的比例 (HR_i表明前i篇文章的HR得分)

MRR(Mean Reciprocal Rank):

首先对选手提交的表格中的每个用户计算用户得分

img

其中, 如果选手对该user的预测结果predict k命中该user的最后一条购买数据则s(user,k)=1; 否则s(user,k)=0。而选手得分为所有这些score(user)的平均值。(MRR_i表明前i篇文章的MRR得分)

4.赛题难点

(1)数据量大:一共有包括30万用户,近300万次点击,共36万多篇不同的新闻文章

(2)推荐系统随机性大:由于是基于真实数据,每个用户的点击随机性较高

5.赛题分类

最终需要给用户从高到低推荐5篇文章进行预测,因此为排序问题,可以通过一定方式转换为二分类问题(后续会提及方法)。

二、数据统计与可视化分析

1.数据集可视化展示

(1)Click_log(用户点击记录)

img

(2)Articles.csv(文章信息)

统计单词数量

img

统计文章主题

共461个主题,分布如下

### 关于天池挑战赛中的新闻推荐详情和技术方案 #### 比背景与目标 在阿里云天池中,“零基础入门推荐系统新闻推荐场景下的用户行为预测挑战赛”的主要目的是探索如何基于用户的浏览历史和其他特征来预测用户未来的行为,从而实现个性化的新闻推荐[^1]。 #### 数据集描述 数据集中包含了大量匿名化处理后的用户交互记录以及相应的新闻文章元数据。这些信息对于构建有效的推荐模型至关重要。具体来说,数据可能包括但不限于:用户ID、点击时间戳、阅读时长等用户行为指标;每篇新闻的文章类别、发布时间等内容属性。 #### 参规则概览 为了确保公平竞争并促进高质量成果产出,该事设定了详细的参指南。参与者需遵循官方规定的时间表提交作品,并且要保证所使用的算法和方法具有创新性和实用性。此外,还强调了保护个人隐私的重要性,在任何情况下都不得泄露敏感个人信息。 #### 基线解决方案介绍 作为帮助初学者快速上手的一部分工作,主办方提供了简单的基线代码供选手参考学习。此Baseline采用了经典的协同过滤(Collaborative Filtering)思路,即利用相似用户群体之间的偏好一致性来进行个性化推荐。同时,也鼓励参者尝试更先进的机器学习或深度学习框架以提高性能表现。 ```python import pandas as pd from sklearn.model_selection import train_test_split from surprise import Dataset, Reader, SVD from surprise.model_selection import cross_validate # 加载数据集 data = pd.read_csv('path_to_dataset.csv') reader = Reader(rating_scale=(0, 1)) dataset = Dataset.load_from_df(data[['user_id', 'item_id', 'rating']], reader) trainset, testset = train_test_split(dataset.build_full_trainset().build_testset(), test_size=0.2) algo = SVD() cross_validate(algo, dataset, measures=['RMSE'], cv=5, verbose=True) ``` 上述Python脚本展示了如何使用`surprise`库实施矩阵分解(Matrix Factorization),这是一种广泛应用于推荐系统的高效技术之一。
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex_SCY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值