异常检测
异常检测被广泛应用于欺诈检测(例如信用卡被偷事件)。给定大量数据,指出与均值有巨大差异的点。例如,在制造业中检测缺陷与异常。高斯分布对数据建模往往会很有用。
本模块涉及“推荐系统”(Amazon, Netflix, Apple 等公司用它来向用户推荐产品)。推荐系统(Recommender systems)寻找用户与产品间的交互模式从而生成推荐建议。该课程介绍了推荐算法,例如协同过滤算法与低秩矩阵分解。
密度估计
问题动机
异常检测的案例:(欺诈/不正常行为)
- 特征 x(i)
- 于数据中建立模型 p(x)
- 定义异常值,根据 p(x)<ε
当然,参数 ε 是决定异常的关键。
高斯分布
算法
1 密度估计
类似《数理统计》中的极大似然估计方法。
2 算法流程
- 选择能作为指出异常例子的特征 xi
- 参数估计
μi,σ2i
μi=1m∑j=1mx(j)i,σ2i=1m∑j=1m(x(j)i−μi)2 - 给定新的例子
x
,计算
p(x)
p(x)=∏j=1np(xj;μj,σ2j)=∏j=1n12π−−√σje⎛⎝−(xj−μj)22σ2j⎞⎠ - p(x)<ε ,则为异常。
构建异常检测系统
值得注意的事,异常检测并不是一种监督学习方法。
开发与评估异常检测系统
估计异常检测系统最直接且有效的方法是采用数值评估的方法。
数据集将被分为训练集、验证集与预测集:60%, 20%, 20%。其中我们训练集是无异常的,记作
x(i)
,验证集与预测集包含标签(是否异常),记作
(x(i)CV,y(i)CV)
与
(x(i)test,y(i)test)
。
例如:10000正常,20异常(异常的数量一般很少)
- 训练集:6000正常
- 验证集:2000正常,10异常
- 预测集:2000正常,10异常
1 算法评估
算法可调整的参数有特征与阈值 ε ,用于改善系统性能,其改善的方法遵循迭代的规则:
-
评估指标
- 预测准确率
- 召回率/查准率
- F1 值
异常检测 vs. 监督学习
在异常检测系统设计中,给定的数据是存在标签的(正常:异常?1:0),那么,这是不是意味着异常检测等同于监督学习呢?
特征选择
特征选择是为了希望异常值检测更加准确。
- 特征的分布近似为高斯分布,更有利于算法。我们通过数值运算将原有的特征分布由非高斯分布逼近于高斯分布。
- 增加一些有效的特征,有利于异常检测,方法包含增加新特征、从原有特征衍生的特征。
多元高斯分布
多元高斯分布能检测到更多有利于异常检测的信息。
多元高斯分布
有时候,一元的高斯分布去除了特征间的关联性,会导致异常值也属于正常范围内,而多元高斯分布很好的保留了各个特征两两间的关联性,这里,我们用协方差来表示2个变量间的独立性,即关联程度,可称之为相关系数。
- 变量: x∈Rn,p(x)
- 参数: μ∈Rn,Σ∈Rn×n
- 模型:
p(x;μ,Σ)=12π−−√|Σ|12e(−12(x−μ)TΣ−1(x−μ))
其中, |Σ| 为协方差矩阵 Σ 的行列式值。
使用多元高斯分布的异常检测
多元高斯分布与一元高斯分布的区别在于参数 μ 与 Σ 的估计方法。
我们可以发现,当协方差矩阵 Σ 为对角矩阵的时候,多元高斯分布又变成了一元高斯分布,其中对角线上的值为各个特征的方程 σ2i 。
下面,我们对一元高斯分布于多元高斯分布做一个简单的对比,
推荐系统
本模块涉及的知识包含协同过滤算法与低秩矩阵分解。
预测电影评分
问题制定
预测电影评分的问题有如下定义:
- nu 为用户数;
- nm 为电影数;
-
r(i,j)=1
,即用户
j
对电影
i 评分过; -
y(i,j)
,当
r(i,j)=1
时,用户
j
对电影
i 的评分。
基于内容的推荐
问题的描述:
- 参数
x(i) :电影 i 的特征向量;
θ(j) :用户 j 的参数向量, ;
n :特征 (x1,x2,…,xn) 的数量;
m(j) :用户 j 评分过的电影数;
(θ(j))T(x(i)) :用户 j 对电影i 的评分。 - 目标方程(类似最小二乘问题)
子目标: θ(i)
minθ(j) 12m(j)∑i:r(i,j)=1((θ(j))T(x(i))−y(i,j))2+λ2m(j)∑k=1n(θ(j)k)2
优化目标: θ(1),⋯,θ(nu)
minθ(1),⋯,θ(nu)12∑j=1nu∑i:r(i,j)=1((θ(j))T(x(i))−y(i,j))2+λ2∑j=1nu∑k=1n(θ(j)k)2
梯度:
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪∂∂θ(j)kJ=∑i:r(i,j)=1((θ(j))T(x(i))−y(i,j))x(i)k,k=0∂∂θ(j)kJ=∑i:r(i,j)=1((θ(j))T(x(i))−y(i,j))x(i)k+λθ(j)k,k≠0
值得注意的事,电影数量与用户数量决定了优化的搜索空间;另外,基于内容的推荐系统,特征值的提取,需要了解电影的成分(即爱情、动作等成分)。
协同过滤
协同过滤
协同过滤的实质是自行学习所要使用的特征,即 x(i) 是未知的,需要通过算法求解。有一个巧妙的思路是已知 θ(j) 去学习 x(i) ,即定义如下目标方程:
- 子目标:
x(i)
minx(i)12∑j:r(i,j)=1((θ(j))T(x(i))−y(i,j))2+λ2∑k=1n(x(i)k)2 - 优化目标:
x(1),⋯,x(nm)
minx(1),⋯,x(nm)12∑i=1nm∑j:r(i,j)=1((θ(j))T(x(i))−y(i,j))2+λ2∑i=1nm∑k=1n(x(i)k)2
值得注意的是,这里的参数 θ(j) 给定的。
1 简单的协同过滤算法
- 给定 x(1),⋯,x(nm) ,估计 θ(1),⋯,θ(nu) ;
- 给定 θ(1),⋯,θ(nu) ,估计 x(1),⋯,x(nm) ;
-
基本的协同过滤算法:
协同过滤算法
协同过滤算法并不是
x
与
优化算法的目标为
其中,
x∈Rn,θ∈Rn
,此处
x
中不包含
这里的代价函数 J 为
1 协同过滤的算法
- x(1),⋯,x(nm),θ(1),⋯,θ(nu) 随机初始化
- 优化算法求解 minJ 得到 x(1),⋯,x(nm),θ(1),⋯,θ(nu)
- 预测用户
j
对电影
i 的评分 (θ(j))T(x(i))
低秩矩阵分解
矢量化:低秩矩阵分解
矢量化的表达方式为 Y=XΘT
1 寻找相似的电影
电影
i
,其特征
即电影
j
是相似于电影
实施细节:均值归一化
对于未对任何电影做过评分的用户,均值归一化的预处理方法会非常的有效(但不等同有理)。而均值归一化之后的评分的计算方法为 (θ(j))Tx(i)+μi 。
相关检索
欺诈检测:http://code.csdn.net/news/2824689
推荐系统:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/
协同过滤算法:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/
极大似然估计:http://blog.csdn.net/bingduanlbd/article/details/24384771
均值归一化:http://blog.csdn.net/acdreamers/article/details/44664205