天池-新闻推荐之多路召回
天池——新闻推荐之多路召回
多路召回
召回
召回(match)是指从全量信息集合中得到用户可能感兴趣的一小部分候选集。
召回之后是排序,排序是将召回阶段得到的候选集的内容进行打分排序,选出得分高的几个结果推荐给用户。
多路召回
多路召回是指采用不同的策略、特征或者简单模型分别召回一部分候选集,然后将候选集混合在一起供后续的排序模型使用。
导入包
123456789101112131415161718192021import pandas as pd import numpy as npfrom tqdm import tqdm from collections import defaultdict import os, math, warnings, math, picklefrom tqdm import tqdmimport faissimport collectionsimport randomfrom sklearn.preprocessing import MinMaxScalerfrom sklearn.preprocessing impor ...
天池-新闻推荐之数据分析
天池新闻推荐——数据分析
数据分析
数据分析是解决一个数据科学问题的第一步。通过数据可视化观察数据,再根据情况进行数据预处理对数据进行清洗。 > 解决数据科学问题的步骤:(源于大佬分享及自己的总结补充) * 数据可视化(观察数据) * 数据预处理(对数据进行清洗) * 文献等资料查阅解决问题的已有方式 * 建立模型,确定目标对象 * 特征工程 * 模型尝试(统计模型、树模型、神经网络) * 特征筛选 * 模型超参数调优 * 交叉验证与模型融合
数据观察与数据分析
导入包
12345678910%matplotlib inlineimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsplt.rc('font', family='SimHei', size=13)import os, gc, re, warnings, syswarnings.filterwarnings('ignore')
...
Data Structure
Why data structures?
Data structures are containers that organize and group data together in different ways. When you write code to solve a problem, there will always be data involved—and how you store or structure that data in the computer's memory can have a huge impact on what kinds of things you can do with it and how efficiently you can do those things.
Collections:(集合)
Properties of collections
Don't have a particular order (so you can't say "give me the 3rd element in this collectio ...
Efficiency
Space and time
When we refer to the efficiency of a program, we aren't just thinking about its speed—we're considering both the time it will take to run the program and the amount of space the program will require in the computer's memory. Often there will be a trade-off between the two, where you can design a program that runs faster by selecting a data structure that takes up more space—or vice versa.
Algorithms
An algorithm is essentially a series of steps for solving a problem. Usually, a ...
Transformer
Why Transformer?
Transformer 是Google Brain在2017年的《Attention Is All You Need》中提出的。
Transformer针对RNN的弱点进行重新设计,解决了RNN效率问题和传递中的缺陷等。RNN对sequence(序列)进行串行的处理,Transformer对sequence进行并行的处理。
What is Transformer?
The Transformer - model architecture: 它是基于Encoder-Decoder结构的模型,在Encoder和Decoder中各有N个不同的Transformer block。
Positional Encoding
在Transformer中没有RNN的迭代操作(前一输出成为当下的输入),sequence中所有的word都被同等对待,所以word之间没有了先后关系,因此,Transformer架构中提出了Positional Encoding方案,给每个输入的词向量叠加一个固定的位置向量来区分位置关系。
位置编码需要满足以下准则:参考 ...
NLP预训练模型之BERT
BERT
传统的word2vec
对于word2vec来说,一个词的词向量一旦训练好了之后就不变了(静态词向量),但是在实际生活中一个词可能有不同的含义,所以word2vec不适用于多语意。
Transformer
BERT是基于Transformer架构的模型,首先来看Transformer。(我的另一篇单独Transformer博客)
BERT
BERT全称:Bidirectional Encoder Representations from Transformers
BERT == Transformer的Encoder部分
BERT论文
由于"Learn from a large amount of text without annotation",BERT可以好好利用大量产生的无标注的数据,而Transformer需要有标注的数据。
向BERT中输入一个sequence,BERT输出sequence中word的Embedding。
如果进行没有标注的无监督训练,那BERT是如何训练的呢?
Approach 1:Masked Language M ...
Pandas
Pandas
1 Pandas的数据类型
pandas中有两种数据类型:DateFrame和Series。
1.1 Series
Series是一种类似于一维数组的对象,是由一组数据以及一组与之相关联的标签(即索引)组成的,具体的表现形式就是索引在左边,值在右边。
创建Series
直接通过列表创建(索引的值是默认的自动创建一个0到N-1的整数索引): 1s1 = pd.Series([4,7,-5,3]) 创建Series并且为其设置索引: 1s2 = pd.Series([4,7,-5,3], index=['d','b','a','c']) 通过字典创建Series————传入一个字典,则结果Series中的索引就是原字典的键,而且是按键有序排列: 12sdata = {'Ohio':35000,'Texas':71000,'Oregon':16000,'Utah':5000} ...
天池-新闻推荐之赛题理解+Baseline
赛题
新闻推荐比赛链接
赛题任务
赛题以预测用户未来点击新闻文章为任务,数据集报名后可见并可下载,该数据来自某新闻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
点击环境
...
推荐系统简介
推荐系统简介
推荐系统的目的
让用户更快更好地获取到自己需要的内容。(在无数的商品信息中高效地获取到自己想要的物品)
让内容更好更快的推送到喜欢它的用户手中。
让平台更有效地保留用户资源。(用户在获取内容时的便利和优质资源的获得)
推荐系统的应用
推荐系统广泛应用在个性化音乐、电子商务、电影视频、社交网络、个性化阅读、位置服务、个性化邮件、个性化广告、个性化旅游、证券理财等。
个性化推荐是基于用字自己的数据生成的。热门推荐是基于大量的用户数据生成的。
推荐系统的基本思想
1 利用用户和物品的特征,给用户推荐那些具有用户喜欢特征的物品。(很多时候不知道用户喜欢的特征)
2 根据用户喜欢过的物品进行相似物品的推荐。(物以类聚)
3 根据与用户具有相似兴趣的用户所喜欢的物品进行推荐。(人以群分)
推荐系统的数据分析
用户信息
用户信息数据包含:
个人信息。例如性别、年龄等。
喜好标签。很多应用会让用户选择自己感兴趣的领域或者内容,利用这样的喜好标签进行内容的推荐。
上下文信息。如果没有个人信息和喜好标签,可以通过像获取浏览器的搜索 ...
自然语言处理库——NLTK
NLTK
NLTK介绍
NLTK(Natural Language Toolkit)是Python上著名的自然语言处理库,它自带语料库、词性分类库,还自带分词(tokenize)、分类等等功能。
NLTK有强大的社区(community)支持。
NLTK安装
Linux安装nltk命令: $pip install -U nltk
-U参数是指update(更新)。
测试是否安装成功: 在终端窗口: 12$ python>>> import nltk ## NLTK的使用
安装语料库
12import nltknltk.download()
下载时可能会出现[error connecting to sever],就是出现连接失败的情况,原因是nltk语料库的服务器需要连外网才能访问,所以修改下DNS地址。
Linux修改DNS地址: sudo vim /etc/resolv.conf,将文件中的nameserver后的ip改为8.8.8.8
选择要下载的内容,这里我只下载了nltk的book。 下载到的路径可以自己更改。
NL ...