发散阅读、拓宽思路【PageRank、Tf-Idf、协同过滤、分布式训练、StyleTransfer、Node2vec】

推荐系统(4)——推荐算法1(基于内容和协同过滤) 文章目录1 基于内容的推荐(Content Based)1.1原理1.2 算法流程1.3 优/缺点2 协调过滤(Collaborative Filtering)2.1 CF的理论基础(1)U-U矩阵相似度计算(Pearson系数)(2)V-V矩阵相似度计算(余弦相似度)(3)U-V矩阵降维2.2 基于领域的协调过滤推荐(1)User-CF(2)Item-CF(3) 两种模式的比较2.3 基于模型的协同过滤推荐(1)基于隐语义模型(latent factor model,LFM)1.LFM简介2.数学推导3. 阅读详情

刚工作一年,做的内容算是比较单一,基本是NLP相关,当然主流的算法、模型还是基本都了解,偶尔发散的看一些东西,算是留个印象,日积月累,可能以后会用到或者有所启发。

这种情况下,一般看的就没那么细节,留下个大致感觉,后续需要用时深究。

1. PageRank

1.1 PageRank的两个假设

假设1,将各个网页做成一个图模型中(每个网页是其中的一个节点),如果一个页面节点收到到的入链数量越多,这个页面越重要;

假设2,指向某节点A的入链质量(分数)不同,质量(分数)高的页面节点,会传递给A更多的分数。

1.2 重点:
1.PageRank计算出的每个网页/节点的分数和用户输入的query没有关系;
2.假设某搜索引擎完全采用PageRank的网页得分来进行排序,那搜索引擎表现如何?对于任意query,返回的结果都相同,返回PageRank得分最高的页面。
3.这种可以通俗理解为与query无关的先验概率结果,而在此基础上考虑query相关的为条件概率结果?

1.3 核心公式:

Pr(A)=(Pr(B)L(B)+Pr(C)L(C)+Pr(C)L(C)...)∗q+1−qPr(A)=(\frac{Pr(B)}{L(B)}+\frac{Pr(C)}{L(C)}+\frac{Pr(C)}{L(C)}...)*q+1-qPr(A)=(L(B)Pr(B)​+L(C)Pr(C)​+L(C)Pr(C)​...)∗q+1−q
(1)其中Pr(B)Pr(B)Pr(B)表示页面B的得分,比如0.7,
(2)L(B)L(B)L(B)表示节点的出度(指向外的边的个数),比如节点BBB指向节点DDD和EEE,那么L(B)L(B)L(B)为2,
(3)qqq叫阻尼系数,主要是为了让某些孤立网页(没有入度的网页)有1−q1-q1−q这样一个基础的分数,你可以理解为1−q1-q1−q为所有网页节点的“底薪”,公式的前一部分是“绩效”,整体为页面A的“工资”。(较为官方的解释为,在任意时刻,用户到达某页面后并继续向后浏览的概率)

对于上述的核心公式还有另外一个版本(至于为啥我还没时间去细致研究,回头有空了看下为啥这么设计,查了些资料,1−q1-q1−q表示到新页面的概率,除以NNN表示访问具体单个页面的概率?深层次的影响待查,我有空搞了update)
Pr(A)=(Pr(B)L(B)+Pr(CL(C)+Pr(C)L(C)...)∗q+(1−q)/NPr(A)=(\frac{Pr(B)}{L(B)}+\frac{Pr(C}{L(C)}+\frac{Pr(C)}{L(C)}...)*q+(1-q)/NPr(A)=(L(B)Pr(B)​+L(C)Pr(C​+L(C)Pr(C)​...)∗q+(1−q)/N

1.4 如何计算:
1.4.1 方式1
将所有网页的PrPrPr值初始化,利用公式不断迭代,最终稳定下来(嘿嘿,收敛性是否一定成立呢,如何证明呢,有空了研究update)
1.4.2 方式2

上述公式矩阵化,利用线性代数方法求解,设
Pr=[Pr(1)Pr(2)Pr(3)...Pr(n)]\bm{Pr}=\begin{bmatrix}Pr(1) \\Pr(2) \\Pr(3)\\...\\Pr(n)\end{bmatrix}Pr=⎣⎢⎢⎢⎢⎡​Pr(1)Pr(2)Pr(3)...Pr(n)​⎦⎥⎥⎥⎥⎤​
(1)那么公式转化为:
Pr=[1−q/N1−q/N1−q/N...1−q/N]+q∗[l(p1,p1)l(p1,p2)l(p1,p3)...l(p1,pn)l(p2,p1)l(p2,p2)l(p2,p3)...l(p2,pn)l(p3,p1)l(p3,p2)l(p3,p3)...l(p3,pn)...l(pn,p1)l(pn,p2)l(pn,p3)...l(pn,pn)]∗Pr\bm{Pr}=\begin{bmatrix}1-q/N \\1-q/N \\1-q/N\\...\\1-q/N\end{bmatrix}+q*\begin{bmatrix}l(p_1,p_1)&l(p_1,p_2)&l(p_1,p_3)&...&l(p_1,p_n) \\l(p_2,p_1)&l(p_2,p_2)&l(p_2,p_3)&...&l(p_2,p_n) \\l(p_3,p_1)&l(p_3,p_2)&l(p_3,p_3)&...&l(p_3,p_n) \\...\\l(p_n,p_1)&l(p_n,p_2)&l(p_n,p_3)&...&l(p_n,p_n) \end{bmatrix}*\bm{Pr}Pr=⎣⎢⎢⎢⎢⎡​1−q/N1−q/N1−q/N...1−q/N​⎦⎥⎥⎥⎥⎤​+q∗⎣⎢⎢⎢⎢⎡​l(p1​,p1​)l(p2​,p1​)l(p3​,p1​)...l(pn​,p1​)​l(p1​,p2​)l(p2​,p2​)l(p3​,p2​)l(pn​,p2​)​l(p1​,p3​)l(p2​,p3​)l(p3​,p3​)l(pn​,p3​)​............​l(p1​,pn​)l(p2​,pn​)l(p3​,pn​)l(pn​,pn​)​⎦⎥⎥⎥⎥⎤​∗Pr
至于那个l(pi,pj)l(p_i,p_j)l(pi​,pj​)就是上文中的L(B)、L(C)L(B)、L(C)L(B)、L(C)之类的,简单想想画一画就理解了。
(2)然后就是解方程
线性代数幂法求解,emmm,有点忘了,想细看的去搜一下就可以得到答案,不纠结这个了。

整体上还有更细节解读方式,资料见https://www.changhai.org/articles/technology/misc/google_math.php。

总而言之:这种方式得到的各个页面的分数与用户的搜索无关,就是一个【静态】分数,衡量的是这个页面的火热度,而衡量搜索词与页面关系的原始方式用的是Tf-idf(BM25是改进版)。

2. TF-idf

细节就不重复了,要学会借鉴别人的成果https://my.oschina.net/stanleysun/blog/1617727

TF-idf简单来说,举个例子:
搜索query中的词,如果在某个页面出现的很多,那么这query和此页面就很可能相关,此为TF;
但是有一些不重要的词,比如“的”,“哪”这种,在每个页面都出现了,那么意味着这种词对于各个页面来说没有区分度,根据这些词计算的TF值即使很高,也没有啥意义。那么怎么判定一个词的区分度呢,如果某个词/元素只集中在某些页面,而且越集中,说明区分度越高,此为IDF。

延伸:可以利用TF-idf的思想做特征选择,比如某个分类任务,有几百万、千万的特征,你可以统计特征在所有样本的频次取top级别(比如50w)作为你选用的特征,但是这里很可能就会有垃圾特征,与上述的“的”,“哪”这种类似;怎么办呢,可以利用idf的思想,如果某个特征在每个类别样本都出现,那么这个特征可能就是没啥区分度的,如果集中在某几个类别,说明区分度好…

TF-idf原本是用来衡量搜索词与页面的相关性的,但是思想可以用的场景不止于此,所以还是我在bert那一博客提到的,注意这些前人成果的剑意精髓,具体的招式反而次要。

3. 协同过滤

套路有很多,本质上核心的就是矩阵分解,举个例子,mmm个用户,对nnn个商品的评分,形成了一个大矩阵Rm∗nR_{m*n}Rm∗n​,一般是一个稀疏矩阵,将矩阵分解为
Rm∗n≈Um∗k∗Rk∗k∗Ik∗nR_{m*n} \approx U_{m*k}*R_{k*k}*I_{k*n}Rm∗n​≈Um∗k​∗Rk∗k​∗Ik∗n​或者Rm∗n≈Um∗k∗Ik∗nR_{m*n} \approx U_{m*k}*I_{k*n}Rm∗n​≈Um∗k​∗Ik∗n​,那么Um∗kU_{m*k}Um∗k​可以看做是每个用户的向量描述,Ik∗nI_{k*n}Ik∗n​可以看做是每个商品的向量描述。至于怎么分解,大致两种方式,一种是数学角度比如SVD改进之类,一种是初始化后梯度下降这种。

有了向量描述,计算用户或者商品的相似度、聚类、推荐什么的都可以操作了。

不管怎么说,本质上是对矩阵Rm∗nR_{m*n}Rm∗n​的处理,信息量是有限的,可以认为这些向量描述是购买行为/评分行为graph的一种embedding。

实际中应该会引入更多的信息,上述得到的向量描述只能算是用户/商品在这一种行为角度下的特征vector,信息单一。

4. 模型的分布式训练

https://www.zhihu.com/question/53851014这个文章说的很清楚,不赘述。
简单理解:

  • 数据并行,可以理解为用nnn个worker并行跑nnn个batch;
    同步更新:n个节点从parameter server取到参数矩阵www,输入一个batch训练数据计算梯度以后回传到parameter server,对多个节点回传的梯度进行平均(也是额外计算开销),然后更新参数矩阵www,然后各个节点从这里获取新的参数w1w_1w1​,如此循环;如果需要等待所有节点回传,某个worker计算很慢,会出现等待的情况(当然可以设置一个阈值,太久了就不等了),这就是简单的同步更新例子,实际肯定不是我说的那么简单。
    异步更新:每个节点从parameter server取到参数矩阵www,输入一个batch训练数据计算梯度以后回传到parameter server,不等待其他节点数据,parameter server更新参数矩阵www,计算完成的worker向parameter server取得最新的参数,这种方式存在梯度/参数过时的情况。
  • 模型并行,矩阵计算分块处理。

实际情况肯定有各种优化,比如模型并行和数据并行一起用、同步和异步的处理。

5. 图像风格迁移三部曲

https://zhuanlan.zhihu.com/p/40322927 具体看这位同学的。我主要说点背后的思想和自己的感悟。

5.1 固定风格固定内容的普通风格迁移

A Neural Algorithm of Artistic Style
最早的风格迁移,最慢的,最经典的。

首先,图片本质上是一个矩阵,比如维度为256∗256∗3256*256*3256∗256∗3,256∗256256*256256∗256表示图片的大小、像素点个数,3表示3通道RGB。

给定风格图片s1s_1s1​,给定内容图片c1c_1c1​,随机初始化结果图片r1r_1r1​,计算s1s_1s1​与r1r_1r1​的风格损失函数losssloss_slosss​,计算c1c_1c1​与r1r_1r1​的内容损失函数losscloss_clossc​,然后加权相加,loss最小化,优化图片r1r_1r1​的参数,就ok了。

问题核心就在构建风格损失函数losssloss_slosss​和内容损失函数losscloss_clossc​:
拿一个预训练好的特征提取网络比如vgg16,分别把c1c_1c1​与r1r_1r1​输入,得到中间层特征feature map,利用中间的feature map加工得到两种loss。

举个例子

步骤1:当我们输入c1c_1c1​ 进入vgg16,取中间某4层的输出,假设 c1c_1c1​ 的尺寸是 [1, 3, 512, 512](四个维度分别代表 batch, channels, height, width),那么它返回的四个中间层的尺寸就是这样的,
c1vggf1c_{1}^{vgg_{f1}}c1vggf1​​: [1, 64, 512, 512]
c1vggf2c_{1}^{vgg_{f2}}c1vggf2​​: [1, 128, 256, 256]
c1vggf3c_{1}^{vgg_{f3}}c1vggf3​​: [1, 256, 128, 128]
c1vggf4c_{1}^{vgg_{f4}}c1vggf4​​: [1, 512, 64, 64]

步骤2:输入r1r_1r1​ 进入vgg16得到
r1vggf1r_{1}^{vgg_{f1}}r1vggf1​​: [1, 64, 512, 512]
r1vggf2r_{1}^{vgg_{f2}}r1vggf2​​: [1, 128, 256, 256]
r1vggf3r_{1}^{vgg_{f3}}r1vggf3​​: [1, 256, 128, 128]
r1vggf4r_{1}^{vgg_{f4}}r1vggf4​​: [1, 512, 64, 64]

步骤3:将c1vggfic_{1}^{vgg_{fi}}c1vggfi​​与r1vggfir_{1}^{vgg_{fi}}r1vggfi​​(i=1、2、3、4i=1、2、3、4i=1、2、3、4)矩阵对应取均方误差MSE,得到内容损失函数losscloss_clossc​,这个好理解,说白了,特征矩阵feature map越相近,内容上越接近。

步骤4:输入s1s_1s1​ 进入vgg16得到
s1vggf1s_{1}^{vgg_{f1}}s1vggf1​​: [1, 64, 512, 512]
s1vggf2s_{1}^{vgg_{f2}}s1vggf2​​: [1, 128, 256, 256]
s1vggf3s_{1}^{vgg_{f3}}s1vggf3​​: [1, 256, 128, 128]
s1vggf4s_{1}^{vgg_{f4}}s1vggf4​​: [1, 512, 64, 64]

步骤5:对r1vggfir_{1}^{vgg_{fi}}r1vggfi​​(i=1、2、3、4i=1、2、3、4i=1、2、3、4)计算gram矩阵
r1vggf1r_{1}^{vgg_{f1}}r1vggf1​​: [1, 64, 512, 512] -> r1gramf1r_{1}^{gram_{f1}}r1gramf1​​: [1, 64, 64]
r1vggf2r_{1}^{vgg_{f2}}r1vggf2​​: [1, 128, 256, 256] -> r1gramf2r_{1}^{gram_{f2}}r1gramf2​​: [1, 128, 128]
r1vggf3r_{1}^{vgg_{f3}}r1vggf3​​: [1, 256, 128, 128] -> r1gramf3r_{1}^{gram_{f3}}r1gramf3​​: [1, 256, 256]
r1vggf4r_{1}^{vgg_{f4}}r1vggf4​​: [1, 512, 64, 64] -> r1gramf3r_{1}^{gram_{f3}}r1gramf3​​: [1, 512, 512]
怎么计算的呢,比如对r1vggf1r_{1}^{vgg_{f1}}r1vggf1​​,有64个feature map,大小都为[512, 512],两两做矩阵"点乘"(类似向量的点乘)得到一个数值,整体就得到一个[64, 64]大小的矩阵(当然每个元素除以512*512归一化?)。

步骤6:同理可以得到s1vggfis_{1}^{vgg_{fi}}s1vggfi​​(i=1、2、3、4i=1、2、3、4i=1、2、3、4)的gram矩阵,对r1r_{1}r1​和s1s_{1}s1​的gram矩阵做MSE,得到风格损失函数losssloss_slosss​,也就是说,gram矩阵越相近,风格上越接近。这个怎么理解,我也不很确定,Gram计算的实际上是两两特征之间的相关性,哪两个特征是同时出现的,哪两个是此消彼长的等等。

5.2 固定风格任意内容的快速风格迁移
Perceptual Losses for Real-Time Style Transfer and Super-Resolution

思路:假设存在这么一个模型model1model_1model1​对应风格图片s1s_1s1​,可以输入内容图片c1c_1c1​、c2c_2c2​、…,得到结果图片r1r_1r1​、r2r_2r2​、…;初始化model1model_1model1​的参数,然后依据结果图片ri(i=1,2,...)r_i(i=1,2,...)ri​(i=1,2,...)计算两种损失函数来优化model1model_1model1​的参数。

模型网络结构:三层卷积层(降维) -> 5个 ResidualBlock 堆叠 -> 三层卷积层(转置卷积,升维)

论文中提到了一个 TV Loss,为了平滑图像:将图像水平和垂直平移一个像素,与原图相减,然后计算绝对值的和。优化模型时用的是上述两种loss加上TV Loss。

整体来说:就是一个模型对应一种风格,模型接受内容图片,输出风格迁移的图片。

5.3 任意风格任意内容的极速风格迁移

Meta Networks for Neural Style Transfer

基于上述5.2一个模型对应一种风格,而模型本身就是一堆参数,那么能不能建立一种网络,每次输入一个风格图像,输出一组参数(风格模型),说白了,建立风格图像与风格迁移模型的映射关系呢。

细节就不说了,比较多,比如均值、标准差代替gram矩阵,比如分组全连接代替全连接…上面的链接有细节。

核心思想:每次输入一个风格图片s1s_1s1​,进入MetaNMetaNMetaN网络得到一组参数,把这个参数填入风格转换网络N1N_1N1​,得到的N1N_1N1​就是拥有风格s1s_1s1​的转化模型,在N1N_1N1​中输入任意的内容图片,都可以得到s1s_1s1​风格下的新图片。

5.4 个人感受

图片的风格迁移其实借鉴了图片领域的一些经典结构,比如vgg提取feature map、利用卷积-ResidualBlock-转置卷积转化图像,那么语言上的风格迁移有没有好办法呢…

有人说,图像处理的好处是连续性,那些像素值,随便加减以后无非是颜色变化,而对于自然语言来说,某个字embedding以后的向量你加减一些数,可能完全没法字典里的一个字对应,连续 vs 离散?

这方面没怎么尝试过,希望大佬们搞点东西让我等渣渣学习下。

6. Word2vec -> Node2vec

这个具体细节没啥可说的,贴一个我之前看的知乎https://zhuanlan.zhihu.com/p/58281139。

Node2vec不过是在图里面游走生成节点序列,然后按照Word2vec的形式对Node进行了embedding,这不新鲜。

重要的是对事物的编码提供了另外一种角度。

举个例子,拿用户搜索qq音乐里的歌为例,我可以对每一个歌本身的歌词、简介做一下语义、情感、主题上的embedding,这是基于自然语言语义的;还可以根据不同用户先后搜索行为,将不同的歌生成一个“歌”网络,利用上述Node2vec得到每首歌在用户行为逻辑下的embedding。

7. 最后

差点没坚持下去半途而废了,总归还是写完了。

最近老是想着成为暴发户哈哈,这,心态不好。

饭要一口口吃,技术要一点点长进,经验是慢慢积累,钱是会逐渐挣得多。

量变引起质变,积累与坚持,这是规律,是天道。

所以,坚持学习和努力,注重生活品质、身心健康。

说出来你可能不信,我要报钢琴课去学习了,ByeBye,下次见!

算法篇--协同过滤 文章目录一、长尾理论二、协同过滤介绍1.基于用户的协同过滤算法(User-based CF,简称UserCF) 一、长尾理论 wiki链接:https://wiki.mbalib.com/wiki/%E9%95%BF%E5%B0%BE%E7%90%86%E8%AE%BA   长尾头部的商品往往代表了绝大多数用户的需求而长尾中的商品往往代表了一小部分用户的个性化需求。因此如果要通过发掘长尾来提高销售额就必须充分研究用户的个性化兴趣。而这正是个性化推荐系统主要解决的问题。   推荐系统通过发掘用户的行为找到用户 阅读详情

相关推荐

TF-IDF、PageRank、TextRank、LSA、LSI和LDA等文本提取算法

目录 TF-IDF(Term Frequency-Inverse Document Frequency) PageRank TextRank LSA(Latent Semantic Analysis,潜在语义分析) LSI(Latent Semantic Index,潜在语义索引) LDA(Latent Dirichlet Allocation,隐含狄利克雷分布) 基本应用 ...

L 1375

tf-idf&pagerank&itemCF

PageRank 概念 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xh6ixThr-1617443784312)(media/03220b35276ce11d28bb913d0d014f92.jpeg)] PageRank是Google提出的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。是Google创始人拉里·佩奇和谢尔盖·布林于1997年创造的PageRank实现了将链接价值概念作为排名因素。 GOOGLE PageRank并不是唯一的链接相关的

KIBO的博客 588

devsearch:使用Python构建的网络搜索引擎,使用TF-IDF和PageRank对搜索结果进行排序

开发搜索 使用Python构建的网络搜索引擎,使用TF-IDF和PageRank对搜索结果进行排序。 叠放 烧瓶(Python 3) cra草 LXML MongoEngine(MongoDB) 引导程序4 要求 码头工人 Docker撰写 建立 安装Docker和Docker Compose。 克隆或下载此仓库。 从.env.example创建一个.env文件。 运行docker-compose up 。 爬行 更新SPIDER_ALLOWED_DOMAINS在.ENV你想要的蜘蛛爬行域变量。 将至少一个URL添加到crawl_list集合(在MongoDB中),以使蜘蛛开始使

搜索引擎的网页 质量排序-PageRank算法 & 相关度排序-TF-IDF算法

对于大部分用户的查询,今天的搜索引擎,都会返回成千上万条结果,那么应该如何排序,把用户最想看到的结果排在前面呢?这个问题很大程度上决定了搜索引擎的质量。总的来讲,对于一个特定的查询,搜索结果的排名取决于两组信息,关于网页的质量信息( Quality ), 和这个查询与每个网页的相关性(Relevance)。

coderge's 优快云 Blog. 1216

基于PageRank和Node2vec的研究热点与集群发现——以国际深度学习研究领域为例.pdf

基于PageRank和Node2vec的研究热点与集群发现——以国际深度学习研究领域为例.pdf

三维重建笔记_光束平差法(Bundle Adjustment, BA)

目录 1 光束平差法(Bundle Adjustment, BA) 1.1 SFM (Structure‐from‐Motion) 定义 问题描述 1.2 重投影误差 (Reprojection Error) 目标函数 1.3 使用 Levenberg‐Marquardt Algorithm 进行优化 问题描述 简化目标函数 参考 Gauss‐Newton Method ...

惊鸿一博 2万+

推荐系统 | 一文带你了解协同过滤的前世今生

导读协同过滤:在推荐领域中,让人耳熟能详、影响最大、应用最广泛的模型莫过于协同过滤。2003年,Amazon发表的论文[1]让协同过滤成为今后很长时间的研究热点和业界主流的推荐模型。什么...

abcdefg90876的博客 2097

mmsegmentation教程1:自定义数据集、config文件修改、训练教程

mmseg使用教程

weixin_42748439的博客 2万+

自然语言处理系列一》TF-IDF算法原理

此文章有对应的陈敬雷老师的清华大学出版社配套书籍教材 【自然语言处理原理与实战(人工智能科学与技术丛书)】 https://item.jd.com/13951851.html 和【分布式机器学习实战(人工智能科学与技术丛书)】,对应京东自营链接地址: https://item.jd.com/12743009.html

weixin_52610848的博客 813

基于奥比中光Orbbec Astra Pro与ROS实现实时3D环境建模:orb_slam2实战指南

本文提供了一份详细的实战指南,介绍如何使用奥比中光Orbbec Astra Pro深度摄像头与ROS系统,部署并运行ORB-SLAM2算法,实现实时3D环境建模与定位。内容涵盖从驱动安装、环境配置、算法编译到摄像头标定与性能调优的全流程,旨在帮助开发者快速搭建一套高性价比的视觉SLAM系统。

weixin_29054399的博客 335

碳化硅外延层厚度测量:红外干涉光谱与FFT技术详解

薄膜厚度测量是半导体制造中的关键工艺控制环节,其核心原理基于光的干涉现象。当光在薄膜上下界面反射并叠加时,会产生与厚度相关的干涉条纹。通过分析这些条纹,可以非接触、无损地获取薄膜的精确厚度信息。这项技术的核心价值在于实现了对关键工艺参数的在线、快速监控,对于提升器件性能与生产良率至关重要。在第三代半导体,尤其是碳化硅功率器件的制造中,外延层厚度直接决定了器件的击穿电压和导通电阻等核心性能。红外干涉光谱法因其对碳化硅材料在红外波段的良好透过性,成为该领域主流的厚度测量方案。通过快速傅里叶变换(FFT)对采集到

weixin_29032489的博客 308

推荐算法工程师必备!!!协同过滤推荐算法总结

推荐算法具有非常多的应用场景和商业价值,因此对推荐算法值得好好研究。推荐算法种类很多,但是目前应用最广泛的应该是协同过滤类别的推荐算法,本文就对协同过滤类别的推荐算法做一个概括总结,后续也会对一些典型的协同过滤推荐算法做原理总结。 1. 推荐算法概述 推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了。概括来说,可以分为以下5种: 1)基于内容的推荐:这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐。这类推荐算法可以找到用户独

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 1140

Android 13 内置xapk安装包的方法

安装xapk 内置xapk

安卓兼职framework和app工程师的博客 223

「数据分析」协同过滤算法

利用协同过滤算法推荐电影 协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。 摘自百度百科 ...

wzw 974

修改yolov8使支持单通道图像输入

默认支持BGR三通道图像输入,但是在很多工业场景下,存在很多灰度图像的场景,因此对yolov8代码做一些修改以支持单通道图像输入,满足项目实际需求。训练时,只需要在 data 的 yaml 文件中,添加 ch=1 即可。

mingo_敏 5779

【图像处理】德里奇( Deriche)边缘检测器

Deriche边缘检测,同canny算法齐名,因此,知道canny原理,也有必要知道德里奇的检测原理。本篇专门针对德里奇算法展开讨论。

gongdiwudu的专栏 8683

基于内容的协同过滤推荐算法 hashmap中文分词 TF-IDF中文分词 基于用户/项目的协同过滤推荐算法代码实现

本文主要介绍基于内容的协同过滤推荐算法的实现原理、实现过程、实现代码,本文中的基于内容是指基于文章标题、文章内容等文本,基于文本内容的推荐与根据项目的评分、收藏记录推荐不同,项目的评分、收藏记录推荐可直接将评分、收藏记录数字化,便于计算机处理,但是文本内容是文字,需要有一个将内容数字化或者向量化的过程,本文主要介绍通过hashmap算法和TF-IDF中文分词算法实现文本内容关键字的提取、数字化、向...

linge511873822的博客 1568

抖音 webmssdk 签名算法解析:X-Dynosaur / X-Gnarly / X-Bogus 生成原理

它只依赖设备指纹/环境编码与随机数,与 query 内容无关,因此可以独立于 Dynosaur/Gnarly 生成。

猫敷雪 198

TF-IDF算法和TextRank算法的分析比较

TF-IDF算法 TF-IDF(词频-逆文档频率)算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。该算法在数据挖掘、文本处理和信息检索等领域得到了广泛的应用,如从一篇文章中找到它的关键词。 TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并...

小白_努力 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TF-IDF与TextRank

咕噜咕噜 320

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

关键词提取(tf-idf与textRank)

关键词提取(tf-idf与textRank) 一.tf-idf tf-idf提取关键词是一种简单有效的提取关键词的方法.其思想主要在于预先统计在语料中出现的所有词的词频,计算出idf值,然后再针对要提取关键词的文章或句子的每个词计算出tf值,乘起来便是tf-idf值.值越大表示作为关键词的优先级越高. 假设现在语料一共有M篇文章,其中词A在其中m篇中出现过了,那么A的idf值为log(M/m...

gzt940726的博客 1万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【GNN】第五章:传统图机器学习算法:Deepwalk、Node2Vec、PageRank

摘要:本文介绍了三种传统图机器学习算法——DeepWalk、Node2Vec和PageRank,用于将图数据嵌入低维向量空间。DeepWalk通过随机游走生成节点序列,类似NLP的滑窗操作,再使用Word2Vec训练得到节点嵌入向量。Node2Vec在DeepWalk基础上引入有偏随机游走策略,通过调整参数p和q控制游走方向,能捕捉节点不同特性。PageRank则用于计算节点重要性排名。文章还演示了如何使用Python实现这些算法,并指出基于随机游走的方法存在无法泛化新节点、缺乏全局信息等局限性,为后续深度

因为热爱所以坚持 1699

推荐算法笔记

基于内容推荐: 协同过滤:根据朋友的意见 Tf idf TF:某个单词在一篇文档中出现的频率 IDF:该单词在其他文档中是不是出现,分子:所有文档的个数,分母:包含这个特定搜索词的文档的个数.比如the 分子分母比接近一,取log就为0 向量空间模型 缺点:不能识别近义词和多义词 隐含语义分析 点与原点的连线夹角越小关系越近 pagerank 有多少别的网页指向它以及其他网页的含金量 所有网页的pagerank值无论哪一时...

qq_41166416的博客 165

机器学习 | TF-IDF和TEXT-RANK的区别

提取关键字的两种方法1 背景1.1 为什么要计算这两个指标?2 什么是TF-IDF2.1 定义2.2 计算方式2.3 举例2.4 Python实现3 什么是TEXT-RANK3.1 定义/思想3.2 计算公式3.3 Python实现3.4 用途4 两者对比5 参考 1 背景 在前面的一篇博客里,笔者层提到过这两种计算关键词的思路(尴尬了,好像没有提到,没事待会儿写一篇LDA主题模型的博客,里面会涉...

RUC_Lee的博客 5110

文本相似度结合PageRank算法

目标 尝试了一下把PageRank算法结合了文本相似度计算。直觉上是想把一个list里,和大家都比较靠拢的文本可能最后的PageRank值会比较大。因为如果最后计算的PageRank值大,说明有比较多的文本和他的相似度值比较高,或者有更多的文本向他靠拢。这样是不是就可以得到一些相对核心的文本,或者相对代表性的文本?如果是要在整堆文本里切分一些关键的词做token,那么每个token在每份文本里的...

架构设计 447

TF-IDF算法介绍及实现

1、TF-IDF算法介绍 TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术。 TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要...

嘻哈吼嘿呵的博客 3980
上一篇: 通俗易懂系列机器学习之手撕bert【bert论文、源码、实践都被我撸了】
下一篇: 几个例子,立点flag【python爬虫、多进程、spark-ml库等例子】
滚滚的纸盒子
博客等级 码龄10年 136粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值