机器学习公开课笔记(9):异常检测和推荐系统
异常检测(Anomaly Detection)
基本假设:多数情况下数据点落入正常的取值范围,但是当异常行为发生时,数据点的取值落入正常取值范围之外(如图1所示)。所以可以利用高斯分布,计算行为发生的概率,如果是概率小于给定阈值,则认为发生了异常行为。基本过程是利用训练数据点建立模型,对于新的数据点, 如果则发生异常;否则正常。异常检测的应用包括:
- 欺诈检测(Fraud detection)
- 制造业(Manufacturing)
- 数据中心监视电脑(Monitering computers in data center)
图1 异常行为(Outlier Point)发生示例
高斯分布
对于一元高斯分布,表达式如下,其中表示均值,对应于分布的对称轴;表示数据点的离散程度,越大函数图像的下端张口越大峰值越低;反之越小,图像下端张口越小,峰值越高,如图2所示。
图2 不同参数()取值下的一元高斯分布
参数估计
高斯分布的总体参数和可以使用样本数据点进行估计,如下
注意在统计学中,参数的系数为而在机器学习中习惯使用.
异常检测算法
对于训练数据集,其中数据点并假设每个特征均服从高斯分布,即,可如下建立模型
算法步骤:
1. 特征选择:选择能够指示异常行为的特征
2. 参数估计:用训练数据集估计每个特征的整体均值和方差,即,
3. 用估计得到的参数, 建立模型;
4. 对于给定新的数据点, 计算;如果则发生异常,否则正常。
算法评估:
给定训练数据集(去掉标签建立模型)中,训练模型。在交叉验证集(带标签)中,如果,则预测;否则预测。最后计算指标Precision/Recall/F1Score等来评估算法性能。注意:也可以用验证集来选择阈值.
异常检测与监督式学习对比:
特征选择:
选择的特征需要近似服从于高斯分布,如果明显不服从高斯分布,可以做适当的转换,例如等
多元高斯分布
之前的模型假设各个特征之间是相互独立的,因此模型将各特征取值的概率相乘【,当且仅当事件AB相互独立时才有】;然而当各个特征之间存在依赖关系时,一元的高斯模型将不能很好的刻画,需要多元高斯模型。模型的建立不再是各个概率相乘,而直接用多元高斯分布进行刻画 其中是维行向量,; 是协方差矩阵,,图3给出了在不同参数取值下的二维高斯模型及其对应的等高线图。
图3 二维高斯分布及其对应的等高线图
多元高斯模型和一元高斯模型的关系:当协方差矩阵是对角阵且对角线元为一元高斯分布的估计参数时,两个模型是等价的。区别在于前者能够自动获取特征之间的依赖关系而后者不能(后者假设特征之间是独立的)。当特征数很大时,前者计算代价高昂而后者计算速度快。前者适用于(一般要求)的情况,而后者当很小时依然适用。
推荐系统
电影推荐系统问题:根据用户对已看过电影的打分,对用户未看过的电影(下表中以?表示)进行打分估计,以给其推荐合适的电影。
符号说明:
- 表示用户数量
- 表示电影数量
- 是符号变量,如果用户已经对电影进行评分则;反之,如果用户尚未对电影进行评分则.
- 表示用户对电影的评分(如果用户对电影已经评分,即).
Movie | User1 | User2 | User3 | User4 | x1 | x2 |
movie1 | 5 | 5 | 0 | 0 | 0.9 | 0 |
movie2 | 5 | ? | ? | 0 | 1.0 | 0.01 |
movie3 | ? | 4 | 0 | ? | 0.99 | 0 |
movie4 | 0 | 0 | 5 | 4 | 0.1 | 1.0 |
movie5 | 0 | 0 | 5 | ? | 0 | 0.9 |
基于内容的推荐
对每一部电影抽出若干特征,然后每个用户学习一个参数向量,然后用来估计用户对电影的评分。例如对于上面的表格,我们对每一个电影抽取出2个特征(对应表格最后2列),然后每个用户学习一个参数向量(包含bias项以及的系数),然后就可以用来预测评分。为了学习参数,定义代价函数为
梯度下降法的参数更新:
协同过滤(Collaborative Filtering)
基于内容的推荐假设电影的特征(如, )是已知的,仅需要学习参数;然而实际中电影的特征是未知的,现在假定已知用户的参数,需要学习电影的特征,与上面的代价函数类似,定义这样我们发现,给定电影特征可以学习到用户参数;反之给定用户参数可以学习到特征。因此可以先随机猜一个,然后学习,再由学习到的学习,然后不断重复即可。然而事实上,两个参数可以如下同时更新,从而得到协同过滤的推荐算法
协同过滤算法步骤:
1. 初始化参数为随机数,其中表示电影特征,表示用户参数(注:不包含bias参数)
2. 使用梯度下降或者其他高级优化算法,进行参数更新
3. 用学习到的参数和预测电影评分
低秩矩阵分解(Low rank matrix factorization)
协同过滤与低秩矩阵分解:协同过滤算法要求评分矩阵中元素越接近越好,因此参数和的求解,实际上等价于寻找两个矩阵和使得,从而协同过滤问题可以转化为低秩矩阵分解问题。
均值归一化:对于尚未评分任何电影的用户,可以对矩阵按行求平均值作为该用户的初始评分;用均值化矩阵进行参数学习,然后用进行评分预测。
参考文献
[1] Andrew Ng Coursera 公开课第九周
[2] Recommender Systems: Collaborative Filtering. http://recommender-systems.org/collaborative-filtering/
[3] Wikipedia: Low-rank approximation https://en.wikipedia.org/wiki/Low-rank_approximation
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南