20240322-1-协同过滤面试题

协同过滤面试题

1. 协同过滤推荐有哪些类型

  • 基于用户(user-based)的协同过滤

    基于用户(user-based)的协同过滤主要考虑的是用户和用户之间的相似度,只要找出相似用户喜欢的物品,并预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户。

  • 基于项目(item-based)的协同过滤

    基于项目(item-based)的协同过滤和基于用户的协同过滤类似,只不过这时我们转向找到物品和物品之间的相似度,只有找到了目标用户对某些物品的评分,那么我们就可以对相似度高的类似物品进行预测,将评分最高的若干个相似物品推荐给用户

  • 基于模型(model based)的协同过滤

    用机器学习的思想来建模解决,主流的方法可以分为:用关联算法,聚类算法,分类算法,回归算法,矩阵分解,神经网络,图模型以及隐语义模型来解决。

2. 基于模型的协同过滤

  • 用关联算法做协同过滤

    做频繁集挖掘,找到满足支持度阈值的关联物品的频繁N项集或者序列。将频繁项集或序列里的其他物品按一定的评分准则推荐给用户,这个评分准则可以包括支持度置信度提升度等。 常用的关联推荐算法有AprioriFP TreePrefixSpan

  • 用聚类算法做协同过滤

    • 基于用户聚类,则可以将用户按照一定距离度量方式分成不同的目标人群,将同样目标人群评分高的物品推荐给目标用户

    • 基于物品聚类,则是将用户评分高物品的相似同类物品推荐给用户。常用的聚类推荐算法有K-Means, BIRCH, DBSCAN谱聚类

  • 用分类算法做协同过滤

    设置一份评分阈值,评分高于阈值的就是推荐,评分低于阈值就是不推荐,我们将问题变成了一个二分类问题。虽然分类问题的算法多如牛毛,但是目前使用最广泛的是逻辑回归。因为逻辑回归的解释性比较强,每个物品是否推荐我们都有一个明确的概率放在这,同时可以对数据的特征做工程化,得到调优的目的。常见的分类推荐算法有逻辑回归和朴素贝叶斯,两者的特点是解释性很强。

  • 用回归算法做协同过滤

    评分可以是一个连续的值而不是离散的值,通过回归模型我们可以得到目标用户对某商品的预测打分。常用的回归推荐算法有Ridge回归,回归树和支持向量回归。

  • 用矩阵分解做协同过滤

    用矩阵分解做协同过滤是目前使用也很广泛的一种方法。由于传统的奇异值分解SVD要求矩阵不能有缺失数据,必须是稠密的,而我们的用户物品评分矩阵是一个很典型的稀疏矩阵,直接使用传统的SVD到协同过滤是比较复杂的。

  • 用神经网络做协同过滤

    用神经网络乃至深度学习做协同过滤应该是以后的一个趋势。目前比较主流的用两层神经网络来做推荐算法的是限制玻尔兹曼机(RBM)

  • 用隐语义模型做协同过滤

    隐语义模型主要是基于NLP的,涉及到对用户行为的语义分析来做评分推荐,主要方法有隐性语义分析LSA和隐含狄利克雷分布LDA,

  • 用图模型做协同过滤

    用图模型做协同过滤,则将用户之间的相似度放到了一个图模型里面去考虑,常用的算法是SimRank系列算法和马尔科夫模型算法。

3. 频繁项集的评估标准

  • 支持度:

    • 支持度就是几个关联的数据在数据集中出现的次数占总数据集的比重。或者说几个数据关联出现的概率。
      Support ( X , Y ) = P ( X Y ) =  number  ( X Y )  num (AllSamples)  \text {Support} (X, Y)=P(X Y)=\frac{\text { number }(X Y)}{\text { num (AllSamples) }} Support(X,Y)=P(XY)= num (AllSamples)  number (XY)
  • 置信度:

    • 一个数据出现后,另一个数据出现的概率,或者说数据的条件概率。
      Confidence  ( X ⇐ Y ) = P ( X ∣ Y ) = P ( X Y ) P ( Y ) \text {Confidence }(X \Leftarrow Y)=P(X | Y)=\frac{P(X Y)}{ P(Y)} Confidence (XY)=P(XY)=P(Y)P(XY)
  • 提升度 :

    • 提升度表示含有Y的条件下,同时含有X的概率,与X总体发生的概率之比
      Lift  ( X ⇐ Y ) = P ( X ∣ Y ) P ( X ) =  Confidence  ( X ⇐ Y ) P ( X ) \text {Lift }(X \Leftarrow Y)=\frac{P(X | Y)}{ P(X)} = \frac{\text { Confidence }(X \Leftarrow Y) }{ P(X)} Lift (XY)=P(X)P(XY)=P(X) Confidence (XY)
  • 注意:

    • 支持度高的数据不一定构成频繁项集,但是支持度太低的数据肯定不构成频繁项集。
    • 提升度体先了 X X X Y Y Y之间的关联关系, 提升度大于1则 X ⇐ Y X\Leftarrow Y XY是有效的强关联规则, 提升度小于等于1则 X ⇐ Y X\Leftarrow Y XY是无效的强关联规则 。一个特殊的情况,如果 X X X Y Y Y独立,则 Lift ⁡ ( X ⇐ Y ) = 1 \operatorname{Lift}(X \Leftarrow Y)=1 Lift(XY)=1,因此 P ( X ∣ Y ) = P ( X ) P(X | Y)=P(X) P(XY)=P(X)

4. 使用Aprior算法找出频繁k项集

输入:数据集合 D D D,支持度阈值 α \alpha α

输出:最大的频繁 k k k项集

  • 扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。 k = 1 k=1 k=1,频繁0项集为空集。

  • 挖掘频繁 k k k项集

    • 扫描数据计算候选频繁 k k k项集的支持度
    • 去除候选频繁 k k k项集中支持度低于阈值的数据集,得到频繁 k k k项集。如果得到的频繁 k k k项集为空,则直接返回频繁 k − 1 k-1 k1项集的集合作为算法结果,算法结束。如果得到的频繁 k k k项集只有一项,则直接返回频繁 k k k项集的集合作为算法结果,算法结束。
    • 基于频繁 k k k项集,连接生成候选频繁 k + 1 k+1 k+1项集。
  • k = k + 1 k=k+1 k=k+1,转入步骤挖掘频繁 k k k项集。

从算法的步骤可以看出,Aprior算法每轮迭代都要扫描数据集,因此在数据集很大,数据种类很多的时候,算法效率很低。

具体实现:

image-20240303171943322

5. 使用Aprior算法找出强关联规则

  • 强关联规则:

    • 如果规则 R R R😒\Rightarrow $满足 :

    s u p p o r t ( X ⇒ Y ) ≥ min ⁡ s u p (1) \tag{1} { support }(X \Rightarrow Y) \geq \min {sup} support(XY)minsup(1)

    c o n f i d e n c e ( X ⇒ Y ) ≥ min ⁡ c o n f (2) \tag{2} confidence (X \Rightarrow Y) \geq \min conf confidence(XY)minconf(2)

    称关联规则 X ⇒ Y X\Rightarrow Y XY为强关联规则,否则称关联规则 X ⇒ Y X\Rightarrow Y XY为弱关联规则。在挖掘关联规则时,产生的关联规则要经过 min ⁡ s u p \min sup minsup min ⁡ c o n f \min conf minconf的衡量筛选出来的强关联规则才能用商家的决策

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/502042.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VS Code 安装

VS Code 安装文档 一、下载 进入VS Code官网:https://code.visualstudio.com,点击 DownLoad for Windows下载windows版本 当然也可以点击旁边的箭头,下载Windows版本 或 Mac OS 版本 Stable:稳定版Insiders:内测版 …

算法系列--动态规划--背包问题(4)--完全背包拓展题目

💕"这种低水平质量的攻击根本就不值得我躲!"💕 作者:Lvzi 文章主要内容:算法系列–动态规划–背包问题(4)–完全背包拓展题目 大家好,今天为大家带来的是算法系列--动态规划--背包问题(4)--完全背包拓展题目…

Codeforces Round 838 (Div. 2) D. GCD Queries

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e9, maxm 4e4 5; co…

信息系统项目管理师——第11章项目成本管理(重要)

选择、本章节内容属于10大管理知识领域中的重中之重案例、论文都会考&#xff0c;需要完全掌握。 选择题大概考3分左右&#xff0c;理论和计算都会考。 案例题&#xff0c;必考内容&#xff0c;挣值相关的计算&#xff0c;必须得会。 论文题&#xff0c;考的比较多&#xff0c;…

STM32之HAL开发——DMA转运串口数据

DMA功能框图&#xff08;F1系列&#xff09; 如果外设要想通过 DMA 来传输数据&#xff0c;必须先给 DMA 控制器发送 DMA 请求&#xff0c; DMA 收到请求信号之后&#xff0c;控制器会给外设一个应答信号&#xff0c;当外设应答后且 DMA 控制器收到应答信号之后&#xff0c;就会…

【Linux】POSIX信号量{基于环形队列的PC模型/理解信号量的出现/参考代码}

文章目录 1.POSIX信号量1.1介绍1.2接口 2.基于环形队列的PC模型2.1环形队列常用计算2.2如何设计&#xff1f;2.3如何实现&#xff1f; 3.细节处理3.1空间资源和数据资源3.2push/pop3.3理解信号量的出现1.回顾基于阻塞队列的PC模型中条件变量的使用2.如何理解信号量的投入使用&a…

【活动预告】SLMOps 系列(一)|SLMOps 基础 - Azure AI Studio 的 SLM 应用构建

点击蓝字 关注我们 编辑&#xff1a;Alan Wang 排版&#xff1a;Rani Sun 2023年&#xff0c;Azure OpenAI Service 引领了 AI 2.0 时代的热潮&#xff0c;各行业企业都在 AI 模型的探索与应用中持续发力。相比复杂度更高的大模型&#xff0c;有时候轻量且高效的小模型&#xf…

时序预测 | MATLAB实现BiTCN双向时间卷积神经网络的时间序列预测

时序预测 | MATLAB实现BiTCN双向时间卷积神经网络的时间序列预测 目录 时序预测 | MATLAB实现BiTCN双向时间卷积神经网络的时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现BiTCN双向时间卷积

【C语言基础】:自定义类型(一)--> 结构体

文章目录 一、内置类型与自定义类型1.1 内置类型&#xff08;基本数据类型&#xff09;1.2 自定义类型 二、结构体2.1 结构体的声明2.2 结构体变量的创建和初始化2.3 结构体的特殊声明2.4 结构体的自引用 三、结构体内存对齐3.1 对齐规则3.2 为什么存在内存对齐3.3 修改默认对齐…

十七、InnoDB 一次更新事务的执行过程

一、InnoDB的一次更新事务是怎么实现的&#xff1f; InnoDB的一次更新事务涉及到多个组件和步骤&#xff0c;包括Buffer Pool、BinLog、UndoLog、RedoLog以及物理磁盘。 下面是一次完整的事务更新操作过程&#xff1a; 1. 加载数据到缓存中&#xff08;Buffer Pool&#xff0…

Huggingface模型下载

1. 基础信息 huggingface的模型排行榜&#xff08;需要翻墙&#xff09;&#xff1a;https://huggingface.co/spaces/mteb/leaderboard 2. 下载模型 2.1 手动一个个下载&#xff08;方式1&#xff09; 2. 使用huggingface-cli下载(方式2) pip install -U huggingface_hub h…

英文网站怎么推广,英文网站推广排名方案

英文网站的推广对于吸引国际用户、提升品牌知名度和增加业务收入至关重要。而在全球范围内&#xff0c;谷歌是最主要的搜索引擎之一&#xff0c;因此谷歌SEO排名优化是英文网站推广的重要手段之一。本文将介绍英文网站推广的方法&#xff0c;并重点探讨谷歌SEO排名优化推广策略…

STM32嵌套中断向量控制器NVIC

一、嵌套终端向量控制器NVIC 1.1NVIC介绍 NVIC&#xff08;Nest Vector Interrupt Controller&#xff09;&#xff0c;嵌套中断向量控制器&#xff0c;作用是管理中断嵌套 先级。 核心任务是管理中断优 管理中断嵌套&#xff1a;我们在处理某个中断的过程中还没处理完这个中…

Python环境下基于慢特征分析SFA的过程监控(TE数据)

近几年来&#xff0c;慢特征分析&#xff0c;作为一种新兴的非监督型特征提取算法&#xff0c;正在逐渐兴起。它以变量随时间的一阶导数的大小来衡量变量变化的快慢&#xff0c;并从建模数据中提取出变化最慢的潜在特征变量&#xff0c;称为“不变量”或“慢特征”。 因为工业…

在新能源充电桩、智能充电枪、储能等产品领域得到广泛应用的两款微功耗轨至轨运算放大器芯片——D8541和D8542

D8541和D8542是我们推荐的两款微功耗轨至轨运算放大器芯片&#xff0c;其中D8541为单运放&#xff0c; D8542为双运放&#xff0c;它特别适用于NTC温度采集电路、ADC基准电压电路、有源滤波器、电压跟随器、信号放大器等电路应用&#xff0c;在新能源充电桩、智能充电枪、…

显示器亮度调节,如何调屏幕亮度

我们常说的显示器亮度&#xff0c;其实就是屏幕亮度。在使用电脑的时候呢&#xff0c;屏幕亮度直接可以影响我们的视觉感官&#xff0c;太亮度或者过暗都会伤害视力&#xff0c;而且眼睛看着也不舒服。那么电脑如何调屏幕亮度呢?操作方法很简单。接下来小编为大家介绍&#xf…

2024测试员最佳跳槽频率是多少?进来看看你是不是符合!

最近笔者刷到一则消息&#xff0c;一位测试员在某乎上分享&#xff0c;从月薪5K到如今的20K&#xff0c;他总共跳了10次槽&#xff0c;其中还经历过两次劳动申诉&#xff0c;拿到了大几万的赔偿&#xff0c;被同事们称为“职场碰瓷人”。 虽说这种依靠跳槽式的挣钱法相当奇葩&…

预训练大模型最佳Llama开源社区中文版Llama2

Llama中文社区率先完成了国内首个真正意义上的中文版Llama2-13B大模型&#xff0c;从模型底层实现了Llama2中文能力的大幅优化和提升。毋庸置疑&#xff0c;中文版Llama2一经发布将开启国内大模型新时代。 作为AI领域最强大的开源大模型&#xff0c;Llama2基于2万亿token数据预…

ObjectiveC-04-类的创建以属性、方法定义详细

在本小节中&#xff0c;笔者会详细讲解下ObjC的类的相关内容&#xff0c;包括创建、构造、方法、属性以及属性读取等相关知识&#xff0c;先来看下类的组成&#xff1a; 类的创建 ObjC是在C语言基础上扩展的&#xff0c;在编写OS软件时可以混用两种语言。但它们之间是有区别的…

全球X射线源市场持续增长 我国高端产品研制能力较弱

全球X射线源市场持续增长 我国高端产品研制能力较弱 X射线源&#xff0c;即X射线发生器&#xff0c;是产生和发射X射线的装置&#xff0c;从阴极发射电子&#xff0c;经阴极与阳极之间的电场加速后&#xff0c;高速轰击阳极靶面&#xff0c;产生X射线射出&#xff0c;是X射线检…