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

异常检测

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

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


密度估计

问题动机

密度估计

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

  1. 特征 x(i)
  2. 于数据中建立模型 p(x)
  3. 定义异常值,根据 p(x)<ε

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

高斯分布

高斯分布

xN(μ,σ2)=12πσe((xμ)22σ2)p(x;μ,σ2)μ=1mi=1mx(i),σ2=1mi=1m(x(i)μ)2

算法

1 密度估计

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

p(x)=p(x1;μ1,σ21)p(x2;μ2,σ22)p(xn;μn,σ2n)=i=1np(xi;μi,σ2i)xRn;x1N(μ1,σ21),,xnN(μn,σ2n)

2 算法流程
  1. 选择能作为指出异常例子的特征 xi
  2. 参数估计 μi,σ2i
    μi=1mj=1mx(j)i,σ2i=1mj=1m(x(j)iμi)2
  3. 给定新的例子 x ,计算 p(x)
    p(x)=j=1np(xj;μj,σ2j)=j=1n12πσje(xjμj)22σ2j
  4. 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 算法评估

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

xtrainp(x)xCV: ε p(x)best  p(x)xtest

评估指标
预测准确率
召回率/查准率
F1 值
异常检测 vs. 监督学习

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

表11
表12

特征选择

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

  1. 特征的分布近似为高斯分布,更有利于算法。我们通过数值运算将原有的特征分布由非高斯分布逼近于高斯分布
  2. 增加一些有效的特征,有利于异常检测,方法包含增加新特征、从原有特征衍生的特征。

多元高斯分布

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

多元高斯分布

多元高斯分布

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

  1. 变量: xRn,p(x)
  2. 参数: μRn,ΣRn×n
  3. 模型:
    p(x;μ,Σ)=12π|Σ|12e(12(xμ)TΣ1(xμ))

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

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

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

μ=1mmi=1x(i),Σ=1mmi=1(x(i)μ)(x(i)μ)T

我们可以发现,当协方差矩阵 Σ 对角矩阵的时候,多元高斯分布又变成了一元高斯分布,其中对角线上的值为各个特征的方程 σ2i

下面,我们对一元高斯分布于多元高斯分布做一个简单的对比,

一元/多元高斯分布对比


推荐系统

本模块涉及的知识包含协同过滤算法与低秩矩阵分解。


预测电影评分

问题制定

预测电影评分的问题有如下定义:

  1. nu 为用户数;
  2. nm 为电影数;
  3. r(i,j)=1 ,即用户 j 对电影 i 评分过;
  4. y(i,j) ,当 r(i,j)=1 时,用户 j 对电影 i 的评分。

问题制定

基于内容的推荐

内容推荐

问题的描述:

  1. 参数
    x(i) :电影 i 的特征向量;
    θ(j) :用户 j 的参数向量, ;
    n :特征 (x1,x2,,xn) 的数量;
    m(j) :用户 j 评分过的电影数;
    (θ(j))T(x(i)) :用户 j 对电影 i 的评分。
  2. 目标方程(类似最小二乘问题)
    子目标: θ(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)12j=1nui:r(i,j)=1((θ(j))T(x(i))y(i,j))2+λ2j=1nuk=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,k0

值得注意的事,电影数量与用户数量决定了优化的搜索空间;另外,基于内容的推荐系统,特征值的提取,需要了解电影的成分(即爱情、动作等成分)。


协同过滤

协同过滤

协同过滤的实质是自行学习所要使用的特征,即 x(i) 是未知的,需要通过算法求解。有一个巧妙的思路是已知 θ(j) 去学习 x(i) ,即定义如下目标方程:

  1. 子目标: x(i)
    minx(i)12j:r(i,j)=1((θ(j))T(x(i))y(i,j))2+λ2k=1n(x(i)k)2
  2. 优化目标: x(1),,x(nm)
    minx(1),,x(nm)12i=1nmj:r(i,j)=1((θ(j))T(x(i))y(i,j))2+λ2i=1nmk=1n(x(i)k)2

值得注意的是,这里的参数 θ(j) 给定的。

1 简单的协同过滤算法
  1. 给定 x(1),,x(nm) ,估计 θ(1),,θ(nu)
  2. 给定 θ(1),,θ(nu) ,估计 x(1),,x(nm)
基本的协同过滤算法:
简单的协同过滤算法

协同过滤算法

协同过滤算法并不是 x θ 分开计算的迭代过程,而是以 x θ 为学习参数的迭代过程。

优化算法的目标为

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

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

这里的代价函数 J

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

1 协同过滤的算法
  1. x(1),,x(nm),θ(1),,θ(nu) 随机初始化
  2. 优化算法求解 minJ 得到 x(1),,x(nm),θ(1),,θ(nu)
  3. 预测用户 j 对电影 i 的评分 (θ(j))T(x(i))

低秩矩阵分解

矢量化:低秩矩阵分解

矢量化1

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.25Y=Yμ2.52.5?2.251.252.5?22.251.252.5?22.753.752.52.5?1.751.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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值