![](https://img-blog.csdnimg.cn/20200830194823934.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
推荐系统
文章平均质量分 81
总结推荐系统方面的一些知识点,代码链接:https://github.com/Gavince/Recommend-System
张先生-您好
学习的同时记录,记录的同时分享,分享的同时交流,交流的同时学习。
展开
-
分解机(Factorization Machines)推荐算法原理
分解机(Factorization Machines)推荐算法原理转载文章:https://www.cnblogs.com/pinard/p/6370127.html Pinard注:上面最后一句话应该是"而gθ(x)则利用yˆ(x)−θhθ(x)来计算"转载 2021-10-19 21:09:33 · 99 阅读 · 0 评论 -
协同过滤算法UserCF和ItemCF优缺点对比
转载:协同过滤算法UserCF和ItemCF优缺点对比 UserCF: 性能:适用于用户较少的场合,如果用户很多,计算用户相似度矩阵代价很大。领域:时效性较强,用户个性化兴趣不太明显的领域。实时性:用户有新行为,不一定造成推荐结果的立即变化。冷启动: 在新用户对很少的物品产生行为后,不能立即对它进行个性化推荐,因为用户相似度表示每隔一段时间离线计算的。新物品上线后一段时间,一旦有用户对物品产生行为,就可以将新物品推荐给和对它产生行为的用户兴趣相似的其他用户。转载 2021-09-19 09:05:27 · 4343 阅读 · 0 评论 -
推荐系统之NeuralCF
推荐系统之NeuralCF模型框架Neural CF模型是从传统的协同过滤方法(MF)的基础上进行的改进, 把MF里面用户向量和物品向量的点积操作换成了多层的神经网络, 使得两个向量可以做更充分的交叉, 得到更多有价值的特征组合信息, 另外一个就是神经网络的激活函数可以引入更多的非线性, 让模型的表达能力更强。GMF和MLP如何融合?import torchimport torch.nn as nnimport torch.nn.functional as F from torchkera原创 2021-07-04 21:56:55 · 581 阅读 · 0 评论 -
推荐系统之AutoRec
推荐系统之AutoRec文章目录推荐系统之AutoRec网络模型L2损失(防止过拟合)评估总结参考网络模型class AutoRec(nn.Module): """ 基于物品的AutoRec模型 """ def __init__(self, num_items, hidden_units, lambd): super(AutoRec, self).__init__() self._num_items = num_items原创 2021-07-04 19:58:00 · 193 阅读 · 0 评论 -
推荐系统之局部敏感哈希(LSH)
推荐系统之局部敏感哈希(LSH)前言局部敏感哈希的基本思想:是希望让相邻的点落入同一个“桶”,这样在进行最近邻搜索时,我们仅需要在一个桶内,或相邻几个桶内的元素中进行搜索即可。如果保持每个桶中的元素个数在一个常数附近,我们就可以把最近邻搜索的时间复杂度降低到常数级别。高维空间映射到低维空间相似度的定性结论:欧式空间中,将高维空间的点映射到低维空间,原本接近的点在低维空间中肯定依然接近,但原本远离的点则有一定概率变成接近的点。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img原创 2021-06-01 15:50:07 · 1251 阅读 · 0 评论 -
推荐系统之EGES
推荐系统之EGES前言(提前阅读)淘宝平台推荐的三个问题:可扩展性(scalability):已有的推荐算法(CF,Base-Content,DL)可以在小数据集上有不错效果,但是对于10亿用户,20亿商品这样海量的数据集上效果差;稀疏性(sparsity):用户仅与小部分商品交互,难以训练准确的推荐模型;冷启动(cold start):物品上新频繁,然而这些商品并没有用户行为,预测用户对这些商品的偏好是十分具有挑战性的。原理解析(参考代码)数据预处理数据预处理整体流程如下图:imp原创 2021-05-30 11:23:55 · 4004 阅读 · 0 评论 -
推荐系统之Node2vec
推荐系统之Node2vec主要思想:在DeepWalk的基础上更近一步,通过调整随机游走的权重的方法使Graph Embedding的结果更倾向于体现网络的同质性或结构性。同质性:指距离相近节点的Embedding应尽量近似;结构性:指的是结构上相似的节点Embedding应该尽量相似。随机游走说明:依照指定概率随机游走,需要对游走节点进行判别:(1)当为起始节点时,需要在无前驱节点t的情况下,随机选择跳转节点(alias节点采样);(2)当存在起始节点,即存在(t, v)时,对下一步的随机节原创 2021-05-19 15:16:20 · 836 阅读 · 2 评论 -
推荐系统之DeepWalk
推荐系统之DeepWalk主要思想:在由物品组成的图结构上进行随机游走,产生大量物品序列,然后将这些物品序列作为训练样本输入Word2vec进行训练,得到物品Emmbedding。算法流程:(a)原始用户行为序列;(b)基于这些用户行为序列构建物品关系图;©采用随机游走的方式随机选择起始点,重新产生物品序列;(d)将这些物品序列输入到Word2Vec模型中,生成最终的Embedding向量。DeepWalk设计class DeepWalk: def __init__(se原创 2021-05-19 10:13:16 · 1454 阅读 · 2 评论 -
推荐系统之Word2vec
推荐系统之Word2vec目的:自然语言处理相关任务中要将自然语言交给机器学习中的算法来处理,通常需要将语言数学化,因为机器不是人,机器只认数学符号。向量是人把自然界的东西抽象出来交给机器处理的东西,基本上可以说向量是人对机器输入的主要方式了。 词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量就是把一个词表示成一个向量。我们都知道词在送到神经网络训练之前需要将其编码成数值变量,常见的编码方式有两种:One-Hot Representation 和 Distributed Represe原创 2021-05-15 10:53:09 · 784 阅读 · 0 评论 -
推荐系统之DIEN
推荐系统之DIEN主要贡献:• We focus on interest evolving phenomenon in e-commerce system, and propose a new structure of network to model interest evolving process. The model for interest evolution leads to more expressive interest representation and more precise原创 2021-05-05 16:32:45 · 614 阅读 · 1 评论 -
推荐系统之DeepFM
推荐系统之DeepFM问题导向:FM部分的数据怎么输入?Linear、FM和DNN的三部分如何结合?EMbedding中的权值怎么共享?DeepFM网络数据输入说明 :一阶:原始输入特征X二阶:Embedding向量两两交叉高阶:concat(稠密特征(归一化), 稀疏特征(Embedding化))图示 :联合训练 :y=sigmoid(yFM+yDNN)(1)y = sigmoid(y_{FM} + y_{DNN})\tag{1}y=sigmoid(yFM+yDNN)原创 2021-04-25 14:04:57 · 396 阅读 · 0 评论 -
推荐系统之Wide&Deep
推荐系统之Wide&Deep前言“推荐” 对于我们来说并不陌生,已经渗透到了我们生活中的方方面面,比如淘宝的商品推荐,网易云的音乐推荐,抖音的短视频推荐等。在房产O2O领域,同样也需要推荐。无论在哪个推荐领域,推荐系统面临的一个共同挑战是如何同时满足推荐结果的准确性和多样性。准确性要求推荐的内容与用户高度相关,推的精准;多样性则要求推荐内容更加新颖,让用户具有新鲜感。模型Wide&Deep模型旨在使得训练得到的模型能够同时兼顾记忆(Memorization)与泛化(Generaliz原创 2021-04-22 17:45:48 · 249 阅读 · 0 评论 -
推荐系统之PNN
推荐系统之PNN推荐优先阅读:AI上推荐 之 NeuralCF与PNN模型(改变特征交叉方式)import pandas as pdimport numpy as npfrom sklearn.preprocessing import MinMaxScalerfrom sklearn.preprocessing import LabelEncoderfrom sklearn.model_selection import train_test_splitimport torchfrom tor原创 2021-03-27 14:22:30 · 735 阅读 · 0 评论 -
搜索评价指标——NDCG
搜索评价指标——NDCG ◆本文出自胖喵~的博客 原文:https://www.cnblogs.com/by-dream/p/9403984.html 概念 NDCG,Normalized Discounted cumulative gain 直接翻译为归一化折损累计增益,可能有些晦涩,没关系下面重点来解释一下这个评价指标。这个指标通常是用来衡量和评价搜索结果算法(注意这里维基百科中提到了还有推荐算法,但是我个人觉得不太适合推荐算法,后面我会给我出转载 2021-03-17 19:43:37 · 621 阅读 · 0 评论 -
推荐系统之GBDT+LR
GBDT+LR系列(组合高阶特征)模型示意图:通过GBDT生成的特征,可直接作为LR的特征使用,省去人工处理分析特征的环节,LR的输入特征完全依赖于通过GBDT得到的特征通过GBDT生成的特征,可直接作为LR的特征使用,省去人工处理分析特征的环节,LR的输入特征完全依赖于通过GBDT得到的特征。思考:1)为什么要使用集成的决策树模型,而不是单棵的决策树模型:一棵树的表达能力很弱,不足以表达多个有区分性的特征组合,多棵树的表达能力更强一些,可以更好的发现有效的特征和特征组合。 2)为什么建树采用原创 2021-03-12 20:13:35 · 473 阅读 · 0 评论 -
推荐系统之FM算法
推荐系统之FM算法原理为什么需要FM?1、特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接建模,很有可能会忽略掉特征与特征之间的关联信息,因此,可以通过构建新的交叉特征这一特征组合方式提高模型的效果。2、高维的稀疏矩阵是实际工程中常见的问题,并直接会导致计算量过大,特征权值更新缓慢。试想一个10000*100的表,每一列都有8种元素,经过one-hot独热编码之后,会产生一个10000*800的表。因此表中每行元素只有100个值为1,700个值为0。如图:而FM的优势就在于对这两方面原创 2021-03-11 11:10:01 · 868 阅读 · 0 评论 -
推荐系统之矩阵分解算法
矩阵分解算法协同过滤的缺点:推荐结果的头部效应明显,处理稀疏向量的能力弱.矩阵分解图解求解方法(1)特征值分解(适用于方阵).(2)奇异值分解(原始共现矩阵必须稠密).(3)梯度下降(重点)计算公式(梯度下降法)预测在对某用户进行推荐时,可利用该用户的隐向量与所有物品的隐向量进行逐一的内积运算,得出该用户对所有物品的评分预测,在依次进行排序,得到最终的推荐列表.代码实践import numpy as npimport pandas as pdimport原创 2021-03-04 21:39:23 · 301 阅读 · 3 评论 -
推荐系统之协同滤波算法
协同滤波算法原理:所谓协同过滤, 基本思想是根据用户之前的喜好以及其他兴趣相近的用户的选择来给用户推荐物品(基于对用户历史行为数据的挖掘发现用户的喜好偏向, 并预测用户可能喜好的产品进行推荐),一般是仅仅基于用户的行为数据(评价、购买、下载等), 而不依赖于项的任何附加信息(物品自身特征)或者用户的任何附加信息(年龄, 性别等)。核心思想:算法思想:物以类聚,人以群分。实现协同过滤推荐有以下几个步骤:找出最相似的人或物品:TOP-N相似的人或物品通过计算两两的相似度来进行排序,即可找出TOP-原创 2021-02-05 23:12:36 · 1457 阅读 · 0 评论 -
新闻推荐之深度排序模型(精排)
深度排序模型通过召回的操作, 我们已经进行了问题规模的缩减, 对于每个用户, 选择出了N篇文章作为了候选集,并基于召回的候选集构建了与用户历史相关的特征,以及用户本身的属性特征,文章本省的属性特征,以及用户与文章之间的特征,下面就是使用机器学习模型来对构造好的特征进行学习,然后对测试集进行预测,得到测试集中的每个候选集用户点击的概率,返回点击概率最大的topk个文章,作为最终的结果。排序阶段选择了三个比较有代表性的排序模型,它们分别是:LGB的排序模型LGB的分类模型深度学习的分类模型DIN原创 2021-01-19 17:32:28 · 1465 阅读 · 1 评论 -
新闻推荐之特征工程
新闻推荐之特征工程目标:制作特征和标签, 转成监督学习问题我们先捋一下基于原始的给定数据, 有哪些特征可以直接利用:文章的自身特征, category_id表示这文章的类型, created_at_ts表示文章建立的时间, 这个关系着文章的时效性, words_count是文章的字数, 一般字数太长我们不太喜欢点击, 也不排除有人就喜欢读长文。文章的内容embedding特征, 这个召回的时候用过, 这里可以选择使用, 也可以选择不用, 也可以尝试其他类型的embedding特征, 比如W2V等原创 2021-01-16 22:41:38 · 611 阅读 · 0 评论 -
新闻推荐之多路召回
多路召回前言推荐系统流程:所谓的“多路召回策略”就是指采用不同的策略、特征或者简单模型,分别召回一部分候选集,然后再把这些候选集混合在一起后供后续排序模型使用的策略。然后我们来说说为啥需要用到多路召回策略,我们在设计召回层的时候,“计算速度”与“召回率”这两个指标是相互矛盾的,也就是说在提高计算速度的时候需要尽量简化召回策略,这就会导致召回率不尽人意,同样的,需要提高召回率时就需要复杂的召回策略,这样计算速度肯定会相应的降低。在权衡两者后,目前工业界普遍采用多个简单的召回策略叠加的“多路召回策略”。原创 2021-01-14 17:17:48 · 1262 阅读 · 1 评论 -
推荐系统之新闻推荐
目录新闻推荐之Baseline新闻推荐之数据分析参考第19期_学习者手册(新闻推荐)DatawhaleDatawhale 组队学习第19期新闻推荐详细总结原创 2021-01-14 16:15:32 · 322 阅读 · 0 评论 -
新闻推荐之数据分析
新闻推荐之数据分析目的:数据分析的价值主要在于熟悉了解整个数据集的基本情况包括每个文件里有哪些数据,具体的文件中的每个字段表示什么实际含义,以及数据集中特征之间的相关性,在推荐场景下主要就是分析用户本身的基本属性,文章基本属性,以及用户和文章交互的一些分布,这些都有利于后面的召回策略的选择,以及特征工程。%matplotlib inlineimport pandas as pdimport numpy as npimport datetimeimport matplotlib.pyplot a原创 2021-01-14 14:06:57 · 771 阅读 · 1 评论 -
新闻推荐之Baseline
新闻推荐问题描述:赛题以新闻APP中的新闻推荐为背景,要求选手根据用户历史浏览点击新闻文章的数据信息预测用户未来点击行为,即用户的最后一次点击的新闻文章,测试集对最后一次点击行为进行了剔除。评价指标:score(user)=∑k=15s(user,k)kscore(user) = \sum_{k=1}^5 \frac{s(user, k)}{k}score(user)=k=1∑5ks(user,k)评估:假如article1就是真实的用户点击文章,也就是article1命中, 则s(user原创 2021-01-12 10:58:37 · 487 阅读 · 0 评论 -
推荐系统之YoutubeDNN代码详解
推荐系统之YoutubeDNN代码详解import pandas as pdfrom deepctr.feature_column import SparseFeat, VarLenSparseFeatfrom sklearn.preprocessing import LabelEncoderfrom tensorflow.python.keras import backend as Kfrom tensorflow.python.keras.models import Modelimport原创 2021-01-11 21:06:29 · 4852 阅读 · 3 评论 -
推荐系统之DIN代码详解
推荐系统之DIN代码详解import syssys.path.insert(0, '..')import numpy as npimport torchfrom torch import nnfrom deepctr_torch.inputs import (DenseFeat, SparseFeat, VarLenSparseFeat, get_feature_names)from deepctr_torch.models原创 2021-01-06 15:25:07 · 4005 阅读 · 1 评论 -
推荐系统之AFM代码详解
AFM重点:在NFM中,特征向量进行两两交叉之后,直接进行sum pooling,将二阶交叉向量进行等权求和处理。但是直觉上来说,不同的交叉特征应该有着不同的重要性。不重要的交叉特征应该降低其权重,而重要性高的交叉特征应该提高其权重。Attention概念与该思想不谋而合,AFM作者顺势将其引入到模型之中,为每个交叉特征引入重要性权重,最终在对特征向量进行sum pooling时,利用重要性权重对二阶交叉特征进行加权求和。模型计算公式:框架:class BaseModel: pass原创 2020-11-20 21:40:40 · 993 阅读 · 0 评论 -
推荐系统之CTR_Torch代码解析
DeepCTR_Torch 代码解析(基于Wide&Deep网络)import pandas as pdimport torchfrom sklearn.metrics import log_loss, roc_auc_scorefrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import LabelEncoder, MinMaxScalerfrom deepctr_torch.原创 2020-11-10 13:53:08 · 1214 阅读 · 0 评论 -
PySpark之电商广告推荐(4)
离线推荐处理目的:这里主要是利用我们前面训练的ALS模型进行协同过滤召回,但是注意,我们ALS模型召回的是用户最感兴趣的类别,而我们需要的是用户可能感兴趣的广告的集合,因此我们还需要根据召回的类别匹配出对应的广告。 所以,这里我们除了需要我们训练的ALS模型以外,还需要有一个广告和类别的对应关系。构建广告与商品类别表# 加载广告基本信息数据,df = spark.read.csv("data/ad_feature.csv", header=True)# 注意:由于本数据集中存在NULL字样的数据原创 2020-09-07 13:37:20 · 456 阅读 · 0 评论 -
PySpark之电商广告推荐(3)
基于LR的点击率预测模型训练数据处理raw_sample表数据读入与标准化# 数据读取_raw_sample_df1 = spark.read.csv("./data/raw_sample.csv", header=True)# 更改表结构,转换为对应的数据类型from pyspark.sql.types import StructType, StructField, IntegerType, FloatType, LongType, StringType # 更改df表结构:更改列类原创 2020-09-06 14:11:45 · 708 阅读 · 0 评论 -
PySpark之电商广告推荐(2)
数据预处理raw_sample表表描述淘宝网站中随机抽样了114万用户8天内的广告展示/点击日志(2600万条记录),构成原始的样本骨架。 字段说明如下:user_id:脱敏过的用户ID;adgroup_id:脱敏过的广告单元ID;time_stamp:时间戳;pid:资源位;noclk:为1代表没有点击;为0代表点击;clk:为0代表没有点击;为1代表点击;数据读取并分析# 淘宝网站中随机抽样了114万用户8天内的广告展示/点击日志(2600万条记录)构成原始的样本数据原创 2020-09-06 11:24:08 · 473 阅读 · 0 评论 -
PySpark之电商广告推荐(1)
协同过滤(基于物品和品牌)主要对用户行为表进行处理,从而构建用户与物品表,进而通过协同过滤的方法获得相对应的推荐.环境配置import pandas as pdimport numpy as npimport pysparkimport os import datetimeimport timefrom pyspark import SparkConffrom pyspark.sql import SparkSessionimport matplotlib.pyplot as plt原创 2020-09-05 14:12:56 · 478 阅读 · 0 评论 -
PySpark之LR初探
PySpark之LR初探环境配置import pandas as pdimport numpy as npimport pysparkimport os import datetimeimport timefrom pyspark import SparkConffrom pyspark.sql import SparkSessionimport matplotlib.pyplot as pltimport seaborn as snsspark = SparkSession \原创 2020-09-05 10:12:43 · 611 阅读 · 0 评论