Coursera机器学习week9 笔记

Anomaly detection(异常检测)

Problem motivation

给定数据集,先假设它们都是正常的,若是有一新的数据,想知道是否是异常,即这个测试数据不属于该组数据的概率如何。算法

在上图中,在蓝色圈内的数据属于该组数据的可能性较高,而越是偏远的数据,其属于该组数据的可能性就越低。函数

这种方法称为密度估计学习

Gaussian distribution

用高数函数来检测是否异常,通常正常的数据都会集中在某个范围,若是一个数据出如今密度很疏密的地方,那么就有很大的概率是异常的。测试

相似与高中学的正态分布,但又有所不一样。高数分布图:优化

Algorithm

它的实现首先须要算出平均值和方差,一旦得到了这两个参数,那么就能够判断新的数据是不是异常的几率了。lua

例如:spa

Developing and evaluating an anomaly detection system

异常检测算法是一个非监督学习算法,意味着咱们没法根据结果变量 y 的值来告诉咱们数据是否真的是异常的。orm

咱们须要另外一种方法来帮助检验算法是否有效。当咱们开发一个异常检测系 统时,咱们从带标记(异常或正常)的数据着手,咱们从其中选择一部分正常数据用于构建训 练集,而后用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。开发

 

例如:咱们有 10000 台正常引擎的数据,有 20 台异常引擎的数据。 咱们这样分配数据:
6000 台正常引擎的数据做为训练集
2000 台正常引擎和 10 台异常引擎的数据做为交叉检验集
2000 台正常引擎和 10 台异常引擎的数据做为测试集
it

具体的评价方法以下:
一、根据测试集数据,咱们估计特征的平均值和方差并构建 p(x)函数 

二、对交叉检验集,咱们尝试使用不一样的 ε 值做为阀值,并预测数据是否异常,根据 F1值或者查准率与查全率的比例来选择 ε

三、选出 ε 后,针对测试集进行预测,计算异常检验系统的 F1 值,或者查准率与查全率之比 

 

Anomaly detection vs. supervised learning

 

Choosing what features to use

对于异常检测算法,咱们使用的特征是相当重要的,下面谈谈如何选择特征: 

异常检测假设特征符合高斯分布,若是数据的分布不是高斯分布,异常检测算法也可以工做,可是最好仍是将数据转换成高斯分布,例如使用对数函数:x = log(x+c),其中 c 为非
负常数; 或者 x=xc,c 为 0-1 之间的一个分数,等方法。

 

偏差分析: 

一个常见的问题是一些异常的数据可能也会有较高的 p(x)值,于是被算法认为是正常的。这种状况下偏差分析可以帮助咱们,咱们能够分析那些被算法错误预测为正常的数据,观察
可否找出一些问题。咱们可能能从问题中发现咱们须要增长一些新的特征,增长这些新特征后得到的新算法可以帮助咱们更好地进行异常检测。

 

Multivariate Gaussian distribution

假使咱们有两个相关的特征,并且这两个特征的值域范围比较宽,这种状况下,通常的高斯分布模型可能不能很好地识别异常数据。其缘由在于,通常的高斯分布模型尝试的是去
同时抓住两个特征的误差,所以创造出一个比较大的断定边界。

 

咱们首先计算全部特征的平均值,而后再计算协方差矩阵:

注:其中 μ 是一个向量,其每个单元都是原特征矩阵中一行数据的均值。最后咱们计算多元高斯分布的 p(x):

其中: |Σ|是定矩阵,在 Octave 中用 det(sigma)计算

例如:

Anomaly detection using the multivariate Gaussian distribution

多元高斯分布和多元正态分布: 

我有一组样本{x(1),x(2),...,x(m)}是一个 n 维向量,我想个人样原本自一个多元高斯分布。我如未尝试估计个人参数μ和Σ以及标准公式?
估计他们是你设置μ是你的训练样本的平均值。

并设置Σ: 

这其实只是当咱们使用 PCA 算法时候,有Σ时写出来。

Recommender Systems(推荐系统)

Problem formulation

好比电影推荐系统,根据人的不一样喜好而推荐不一样的电影

符号定义:
nu 表明用户的数量
nm 表明电影的数量
r(i,j)若是用户 i 给电影 j 评过度则 r(i,j)=1
y(i,j)表明用户 i 给电影 j 的评分
mj 表明用户 j 评过度的电影的总数

 

Content-­based recommendations

在咱们的例子中,咱们能够假设每部电影都有两个特征,如 x1表明电影的浪漫程度,x2 表明电影的动做程度。

下面咱们要基于这些特征来构建一个推荐系统算法。 假设咱们采用线性回归模型,咱们能够针对每个用户都训练一个线性回归模型,如 θ(1)是第一个用户的模型的参数。 于
是,咱们有:
θ(j)用户 j 的参数向量
x(i)电影 i 的特征向量

对于用户 j 和电影 i,咱们预测评分为:(θ(j))Tx(i)
代价函数以下:

上面的代价函数只是针对一个用户的,为了学习全部用户,咱们将全部用户的代价函数求和:

若是咱们要用梯度降低法来求解最优解,咱们计算代价函数的偏导数后获得梯度降低的更新公式为:

Collaborative filtering  

在以前的基于内容的推荐系统中,对于每一部电影,咱们都掌握了可用的特征,使用这些特征训练出了每个用户的参数。相反地,若是咱们拥有用户的参数,咱们能够学习得出
电影的特征。

可是若是咱们既没有用户的参数,也没有电影的特征,这两种方法都不可行了。协同过滤算法能够同时学习这二者。
咱们的优化目标便改成同时针对 x 和 θ 进行。

对代价函数求偏导数的结果以下: 

注:在协同过滤从算法中,咱们一般不使用方差项,若是须要的话,算法会自动学得。协同过滤算法使用步骤以下:

一、初始 x(1),x(2),...,x(nm),θ(1)(2),...,θ(nu)为一些随机小值
二、使用梯度降低算法最小化代价函数
三、在训练完算法后,咱们预测(θ(j))Tx(i)为用户 j 给电影 i 的评分

Collaborative filtering algorithm

Vectorization: Low rank matrix factorization

协同过滤

Implementational detail: Mean normalization  

相关文章
相关标签/搜索