您的位置:首页 > 其它

异常检测与推荐系统 机器学习基础(8)

2016-03-01 14:51 495 查看

异常检测

异常检测被广泛应用于欺诈检测(例如信用卡被偷事件)。给定大量数据,指出与均值有巨大差异的点。例如,在制造业中检测缺陷与异常。高斯分布对数据建模往往会很有用。

本模块涉及“推荐系统”(Amazon, Netflix, Apple 等公司用它来向用户推荐产品)。推荐系统(Recommender systems)寻找用户与产品间的交互模式从而生成推荐建议。该课程介绍了推荐算法,例如协同过滤算法与低秩矩阵分解。

密度估计

问题动机



异常检测的案例:(欺诈/不正常行为)

特征 x(i)

于数据中建立模型 p(x)

定义异常值,根据 p(x)<ε

当然,参数 ε 是决定异常的关键。

高斯分布



x∼N(μ,σ2)=12π−−√σe(−(x−μ)22σ2)p(x;μ,σ2)μ=1m∑i=1mx(i),σ2=1m∑i=1m(x(i)−μ)2

算法

1 密度估计

类似《数理统计》中的极大似然估计方法。

p(x)=p(x1;μ1,σ21)p(x2;μ2,σ22)⋯p(xn;μn,σ2n)=∏i=1np(xi;μi,σ2i)x∈Rn;x1∼N(μ1,σ21),⋯,xn∼N(μn,σ2n)

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 算法评估

算法可调整的参数有特征与阈值 ε,用于改善系统性能,其改善的方法遵循迭代的规则:

xtrain−→−p(x)xCV参数: 特征,ε值反复评估,迭代至最好的 p(x)−→−−−−best p(x)xtest→结果

评估指标
预测准确率

召回率/查准率

F1 值

异常检测 vs. 监督学习

在异常检测系统设计中,给定的数据是存在标签的(正常:异常?1:0),那么,这是不是意味着异常检测等同于监督学习呢?





特征选择

特征选择是为了希望异常值检测更加准确。

特征的分布近似为高斯分布,更有利于算法。我们通过数值运算将原有的特征分布由非高斯分布逼近于高斯分布

增加一些有效的特征,有利于异常检测,方法包含增加新特征、从原有特征衍生的特征。

多元高斯分布

多元高斯分布能检测到更多有利于异常检测的信息。

多元高斯分布



有时候,一元的高斯分布去除了特征间的关联性,会导致异常值也属于正常范围内,而多元高斯分布很好的保留了各个特征两两间的关联性,这里,我们用协方差来表示2个变量间的独立性,即关联程度,可称之为相关系数。

变量: x∈Rn,p(x)

参数: μ∈Rn,Σ∈Rn×n

模型:

p(x;μ,Σ)=12π−−√|Σ|12e(−12(x−μ)TΣ−1(x−μ))

其中,|Σ| 为协方差矩阵 Σ 的行列式值。

使用多元高斯分布的异常检测

多元高斯分布与一元高斯分布的区别在于参数 μ 与 Σ 的估计方法。

μ=1m∑mi=1x(i),Σ=1m∑mi=1(x(i)−μ)(x(i)−μ)T

我们可以发现,当协方差矩阵 Σ 为对角矩阵的时候,多元高斯分布又变成了一元高斯分布,其中对角线上的值为各个特征的方程 σ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 与 θ 为学习参数的迭代过程。

优化算法的目标为

minx(1),⋯,x(nm)θ(1),⋯,θ(nu)J(x(1),⋯,x(nm),θ(1),⋯,θ(nu))

其中,x∈Rn,θ∈Rn,此处 x 中不包含 x0 。值得注意的事,该优化问题的维度是 nm×n+nu×n 。

这里的代价函数 J 为

J(x(1),⋯,x(nm),θ(1),⋯,θ(nu))=12∑(i,j):r(i,j)=1+λ2∑i=1nm∑k=1n(x(i)k)2+λ2∑j=1nu∑k=1n(x(j)k)2((θ(j))T(x(i))−y(i,j))2

1 协同过滤的算法

x(1),⋯,x(nm),θ(1),⋯,θ(nu) 随机初始化

优化算法求解 minJ 得到 x(1),⋯,x(nm),θ(1),⋯,θ(nu)

预测用户 j 对电影 i 的评分 (θ(j))T(x(i))

低秩矩阵分解

矢量化:低秩矩阵分解



⇒Y=⎡⎣⎢⎢⎢⎢⎢⎢55?005?4000?05500?4?⎤⎦⎥⎥⎥⎥⎥⎥−→−−−−−−−−−−−orY(i,j)=(x(i))Tθ(j)Y(i,j)=(θ(j))Tx(i)⎡⎣⎢⎢⎢⎢⎢⎢⎢(θ(1))Tx(1)(θ(1))Tx(2)⋮(θ(1))Tx(nm)(θ(2))Tx(1)(θ(2))Tx(2)⋮(θ(2))Tx(nm)⋯⋯⋱⋯(θ(nu))Tx(1)(θ(nu))Tx(2)⋮(θ(nu))Tx(nm)⎤⎦⎥⎥⎥⎥⎥⎥⎥

矢量化的表达方式为 Y=XΘT

X = ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢−(x(1))T−−(x(2))T−⋮−(x(nm))T−⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥,Θ=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢−(θ(1))T−−(θ(2))T−⋮−(θ(nu))T−⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥

1 寻找相似的电影

电影 i,其特征 x(i)∈Rn,寻找相似的电影 j,其 x(j) 满足

∥∥x(i)−x(j)∥∥→small

即电影 j 是相似于电影 i 的。

实施细节:均值归一化

Y=⎡⎣⎢⎢⎢⎢⎢⎢55?005?4000?05500?40?????⎤⎦⎥⎥⎥⎥⎥⎥⇒μ=⎡⎣⎢⎢⎢⎢⎢⎢2.52.522.251.25⎤⎦⎥⎥⎥⎥⎥⎥−→−−−−Y′=Y−μ⎡⎣⎢⎢⎢⎢⎢⎢2.52.5?−2.25−1.252.5?2−2.25−1.25−2.5?−22.753.75−2.5−2.5?1.75−1.25?????⎤⎦⎥⎥⎥⎥⎥⎥

对于未对任何电影做过评分的用户,均值归一化的预处理方法会非常的有效(但不等同有理)。而均值归一化之后的评分的计算方法为 (θ(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息