首页 > 其他分享 >协同过滤笔记

协同过滤笔记

时间:2024-01-19 09:57:59浏览次数:30  
标签:采样 协同 训练 词语 矩阵 笔记 正则 过滤 L2

笔记

记录一下学习工作中遇到的一些知识,以防遗忘,不清楚的可以回来再看。

一些专有名词

embedding: 隐向量 非常重要 无处不在

召回: 粗略计算要返回结果,例如从100W商品中取比较可能的100个

负采样

负采样(Negative Sampling)是一种用于训练词嵌入模型的技术。在自然语言处理中,词嵌入模型被用于将词语表示为连续向量空间中的向量,以便于计算机处理和理解自然语言。

在传统的Skip-gram模型中,为了预测目标词语的上下文,需要对训练数据集中的每个词语生成一对(目标词语,上下文词语)。然而,这种全局计算上下文的方法会导致训练过程非常耗时,尤其是在大规模数据集上。

负采样通过减少训练样本的数量来加速训练过程。它的基本思想是对于每个目标词语和其上下文词语,只选取部分负面样本进行训练,而不是使用全部的上下文词语。具体来说,对于每个训练样本,我们会随机选取一些与目标词语不相关的词语作为负面样本。这些负面样本不仅能够加速训练过程,还能够帮助模型学习到更好的词嵌入表示。

负采样的过程通常涉及两个参数:采样数量和采样分布。采样数量决定了每个正样本应该选择多少个负面样本进行训练,而采样分布用于选择负面样本。常见的采样分布方法是根据词语的频率进行采样,即频率越高的词语被选中为负面样本的概率越大,这样可以更好地处理高频词语的训练。

通过负采样,可以显著减少训练时间,同时保持较好的词嵌入质量。这使得负采样成为了训练大规模词嵌入模型的常用技术。

RecBole推荐平台总体架构

image

协同过滤

image

基于用户的协同过滤推荐算法 —— 计算量大 矩阵稀疏

  1. 首先找到用户相似度
  2. 属性特征,行为特征等都可以作为计算输入
  3. 计算两个用户的相似度,如果相似度较高,那么就可以将item推荐给用户
  4. 较难
    image

基于物品的协同过滤推荐算法 —— 计算量大 矩阵稀疏

先得到用户和商品的交互数据,计算相关度。
不适合实时的内容。
image

基于矩阵分解 —— 更快

最终目的是降低计算量,优化隐向量。

  1. 因为数据量大了以后,矩阵非常大,很难计算,那么如何计算呢?—— 矩阵分解:
    image

  2. 只要近似就行,可以不用在数学上那么严谨。
    image

  3. 矩阵分解后:是有一些特点的!
    image

  4. 矩阵还原:
    image

  5. 怎样才能让矩阵分解更好?

需要不断实验进行调参
image

隐式

image

image

image

显式

目标函数

image

image

embedding

image

L2正则化限制

在防止过拟合的方法中有L1正则化和L2正则化,L1和L2是正则化项,又叫做惩罚项,是为了限制模型的参数,防止模型过拟合而加在损失函数后面的一项。

参考CSDN-什么是L1和L2正则化,以及它们有什么区别

L2是模型各个参数的平方和的开方值。L2会选择更多的特征,这些特征都会接近于0。最优的参数值很小概率出现在坐标轴上,因此每一维的参数都不会是0。

参考CSDN-什么是L1和L2正则化,以及它们有什么区别

SLIM(Spares Linear Methods)

SLIM对基于记忆的方法提出了一些改进,该算法从用户交互记录中为所有物品学习一个稀疏矩阵来同时实现高效率和高质量的推荐。

标签:采样,协同,训练,词语,矩阵,笔记,正则,过滤,L2
From: https://www.cnblogs.com/wephiles/p/17972687

相关文章

  • 【学习笔记】斜率优化DP
    例题1.ACwing301为了方便,我们记\(c_i\)为c的前缀和,\(t_i\)同理。容易推出\(O(n^2)\)方程:\(dp_{i}=\min_{j=0}^{i-1}{(dp_j+s\times(c_n-c_j)+t_i\times(c_i-c_j))}\)但是本题的数据范围是3e5,所以考虑优化。我们先把min给拆掉:\(dp_i=dp_j+s\timesc_n-s\timesc......
  • 笔记重修计划三:线性基(施工中)
    正在备战THUWC,暂时停更。目前准备将这一系列内容迁移到cnblogs。本文属于笔记重修计划中的第三部,主要介绍广义的线性基与高斯消元的关联吗,以及在OI中应用较广的异或线性基。建议先阅读重修计划二高斯消元(目前很需要施工故未公开)的内容。其实我觉得这两章的内容如果分开来看......
  • 笔记重修计划一:斜率优化 dp & cdq 分治维护凸包(施工中)
    施工中,但是目前暂停施工。前言刷cdq分治的时候做到了这题,发现自己不是很懂这个东西,跑回去看自己几个月前写的斜率优化dp笔记,当时认为自己弄得很明白了,但现在看来简直就是皮毛,遂弄明白后写下此文,希望自己之后有更多启发时能继续充实这篇文章。若有不妥之处望指出。如果单调......
  • 后端登陆的过滤器
    后端登陆的过滤器packagecom.itheima.filter;importcom.google.gson.Gson;importcom.google.gson.JsonObject;importcom.itheima.pojo.Result;importcom.itheima.utils.JwtUtils;importlombok.extern.slf4j.Slf4j;importorg.springframework.boot.configurationpro......
  • 大三寒假学习进度笔记9
    今日学习时间一小时,学习内容:通过不同格式构建DataFrame对象,包括基于Pandas的DF转换,读取text,csv,json和jparquet创建。jparquet具有以下特点:列式存储自带Schema具备PredicateFilter特性一个Parquet文件的内容由Header、DataBlock和Footer三部分组成。在文件的首尾各有一个......
  • 2024/1/18学习进度笔记
    今天研究了外包杯的题目。我们做的主要是一个虚拟数字人的项目,这里记录下在windows上配置pytorch3d以及freqencoder,gridencoder,raymarchingshencoder这几个库的过程首先这几个库是用过setup.py进行安装的,也就是pythonsetup.pyinstall安装前电脑里必须要装好了VisualStu......
  • 《拓扑学》复习笔记
    是1.15写的,但仅存了草稿,1.18终于想起来发布,没想到发布时间变成今天了(?麻,一点不懂,记录一下习题课感觉对于数学课,敲公式对学的效果比较有限,还是回去手写一遍其实写了,但截图发博客很麻烦。考前复习到凌晨三点,把讲义全看完了,但看过≠我会。此外还和好同学们讨论了往年......
  • stm32笔记[12]-LoRa通信
    摘要在蓝桥杯物联网的CT127C开发板上测试LoRa通信;Node_A按下按钮触发按键中断,经过定时器消抖后触发LoRa发送函数并切换LED的状态,Node_B接收到数据后在屏幕显示累计次数.开发环境Keil5.35.00HAL库版本:STM32CubeFW_L0V1.12.0STM32CubeMX:6.2.1原理简介LoRa简介[htt......
  • 学习笔记7
    DataFrame的创建Spark2.0版本开始,Spark使用全新的SparkSession接口替代Spark1.6中的SQLContext及HiveContext接口来实现其对数据加载、转换、处理等功能。SparkSession实现了SQLContext及HiveContext所有功能;SparkSession支持从不同的数据源加载数据,并把数据转换成DataFrame,支持......
  • Merge sort【1月18日学习笔记】
    点击查看代码//Mergesort#include<iostream>usingnamespacestd;voidmerge(intL[],intR[],intA[],intnL,intnR){//将两个已排序数组合并填入 inti=0,j=0,k=0;//i,j为未拾取元素索引,k为归并数组索引 while(i<nL&&j<nR){ if(L[i]<R[j]){......