分享

机器学习笔记(九)异常检测与推荐系统

 印度阿三17 2019-10-29

Anomaly detection(异常检测)

1、问题定义:假设数据集{x(1), x(2), ..., x(3)}表示的数据都是正常的,则判断xtest是否异常。

若概率值 p(xtest) < ε,则表示异常;若 p(xtest) ≥ ε ,则表示正常。

 

2、Gaussian Distribution(高斯分布 / 正态分布):

(1)分布:X ~ N(μ,σ²)   μ为均值,σ²为方差.

 

(2)Parameter estimation(参数估计):

给定数据集,估算出 μ 和 σ 的值. 

 

3、应用高斯分布实现异常检测算法:

训练集:{x(1), x(2), ..., x(m)},每一个数据都是 n 维向量.

建立模型:p(x) = p(x1; μ1, σ1²) p(x2; μ2, σ2²) p(x3; μ3, σ3²) ... p(xn; μn, σn²)

算法流程:

 

4、开发异常检测系统:

(1)使用带标签的数据集,y = 0表示正常,y = 1表示异常,即:

(2)训练集表示所有正常的样本集合(视为不带标签),设置交叉验证集和测试集:

举例:如果一共10000个正常数据,20个异常数据:

可以通过交叉验证集选择较好的 ε 参数. 选择算法评估结果最好的(F1-score最高).

(3)算法评估:

由于异常的数据占极少数,因此是倾斜类的情况,不能仅仅通过计算预测的准确率来评估系统。需要计算 precision、recall,并计算F1-score.

 

5、异常检测与监督学习的区别:

既然异常检测也带有便签,为什么不直接用逻辑回归等方法进行分类预测呢?

异常检测 y = 1 的样本极少,而 y = 0 的样本极多.
异常的种类很多,可能在以往的数据中都没有出现过.
应用于:欺诈检测、生产次品检测、监测数据中心等.
监督学习 大量的正负样本.
有足够的样本让算法感知到不同种类的特征.
应用于:垃圾邮件检测、天气预测、分类等.

 

6、特征量的选择:

(1)特征量的调整:

在对特征向量建模时,需要使得 xi 服从正态分布,或者接近于正态分布,如下图所示:

若不服从正态分布,则需要进行修正,如下图所示:

 

 

(2)误差分析:

当某一个数据处于异常,但是系统并没有检测出,即 p(x) 取值仍然较大,则可能原因是特征较少。

如下图所示,当只有一个特征量时,p(x) 值较高,但拓展特征量后,发现它处在了高斯分布的外围区域.

 

7、Multivariate gaussian distribution(多元高斯分布):

(1)问题背景:

在监测数据中心的例子中,有两个特征 x1 和 x2,当出现一个异常的样本,它有较低的CPU load和较高的Memory Use,在 x1 和 x2的正态分布图中可以看出,该样本含有较高的 p(x1) 和 p(x2),也就是有较高的 p(x),并不会被判定为异常.

原因分析:我们倾向于认为两个特征所构成的区域具有较为均匀的概率分布.

 

(2)算法改进:

X的协方差矩阵,第 i 行第 j 列表示 xi 和 xj 的协方差,

举例:

 

(3)应用多元高斯分布:

① 计算参数,拟合模型:

② 对于新样本计算 p(x):

 若 p(x) 小于阈值,则判定为异常点.

 

(4)多元高斯分布模型与常规高斯分布模型的联系:

常规高斯分布模型对应多元高斯分布模型的情况:Σ 非对角线元素全为0.

 对于误差情况,一种方法是增加特征量(上文已阐述),另一种方法是使用多元高斯模型自动捕捉不同特征量之间的相关性.

常规高斯分布

Original model

计算量小,n 较大的情况也适用.
即时样本数 m 较少也适用.

多元高斯分布

Multivariate gaussian

Σ 计算量大,适用于 n 较小的情况.

必须满足 m > n,否则 Σ 不可逆. 

要求 m >> n.

 Σ 不可逆的两种情况:① 不满足 m > n; ② 有冗余的特征量.

 

Recommender systems(推荐系统)

1、以电影推荐系统举例:一共编号1 2 3 4四个人,5部电影(前3部为爱情类,后2部为动作类),评分由0-5,可见编号1、2更喜欢爱情类电影,编号3、4更喜欢动作类电影。

符号定义:

nu:用户的数量;

nm:电影的数量;

r(i, j):如果用户 j 已经对电影 i 进行评分,那么 r(i, j) = 1,否则 r(i, j) = 0;

y(i, j):用户 j 对电影 i 的评分(仅对 r(i, j) = 1的定义).

推荐系统的原理:根据已知的数据,预测出带问号的空缺数据的可能值.

 

2、基于内容的推荐系统:

(1)原理:

使用两种特征量,x1表示爱情电影的程度,x2表示动作电影的程度.

设 x0 = 1,第 i 部电影设为 x(i),例如 x(1) = [1  0.9  0]T. 用 n 表示特征数量,即 n = 2. 第 j 个用户评价过的电影数量为 m(j).

若观众的打分预测是独立的线性回归问题,则每一个用户 j 都有特征参数 θ(j),其为 n 1 维向量. 对于电影 i 的打分为 (θ(j))Tx(i).

现对第1个用户的第3部电影的评分进行预测:

x(3) = [1  0.99  0]T

θ(1) = [0  5  0]T

value = (θ(1))Tx(3) = 4.95

 

(2)参数 θ 的训练:(本来求和公式前的常数是 1/(2m(j)),但为了计算方面,将 m(j) 去除,不影响结果)

 

3、Collaborative filtering(协同过滤):

又名 Low rank matrix factorization (低秩矩阵分解)

(1)问题描述:

假设不知道电影的各个指数(如爱情电影指数、动作电影指数等),仅仅使用上述的方法,无法进行预测. 但若已知用户对各类电影的喜好程度,即已知 θ,则可以预测出各类电影的指数.

 

(2)目标描述:

利用 θ 和 x 的重复计算和迭代,收敛到一组合适的电影特征. 

简化问题,可以定义新的代价函数 J,将问题转换为:

   

(3)算法流程:

① 初始化 x(1), ..., x(nm) 和 θ(1), ..., θ(nu),初始值设置为一个较小的随机数(类似于神经网络,使得各个参数初始化值不一样);

② 使用梯度下降法,最小化 J(这里没有考虑 x0、θ0,即 k 从1开始):

③ 若对一个用户进行预测,给出了参数 θ 或者电影的指数 x,则可以使用 θTx 进行预测评分.

 

(4)电影推荐的向量化实现:

① 将打分数据转为矩阵 Y:

一般化预测评分矩阵:

 

② 电影特征矩阵:x(i) 表示第 i 部电影的特征向量,是一列,(x(i))T 将列向量转为行向量.

X = [ (x(1))T  (x(2))T  ...  (x(nm))T]T 

每一个用户的参数 θ 同理构成矩阵 Θ,θ(j) 表示第 j 个用户,是一列,(θ(j))T 将列向量转为行向量.

Θ = [(θ(1))T  (θ(2))T  ...  (θ(nu))T]T   (结构类似 X )

③ 在使用协同过滤算法求得 X 和 Θ 后,预测评分矩阵为 XΘT.

由于 XΘ有低秩属性,因此命名:低秩矩阵分解算法.

④ 寻找电影 i 的相关电影,即寻找若干个电影 j ,使得最小化

 

4、推荐系统的实现细节:均值归一化:

(1)问题背景:当第五个用户对于数据中的电影一部都没看过,即下图的情况:

那么当计算 θ(5) 时,根据目标函数的定义:

目标函数转为最小化 λ/2 * [(θ1(5))² (θ2(5))²],

有此会得出解 θ(5) = [0  0]T

最后的预测结果是把所有电影评分为 0.

 

(2)解决方法:均值归一化

对于原矩阵 Y,减去均值 μ,将得到的新 Y 矩阵作为样本数据进行学习,得到 Θ 和 X,在进行预测. 在预测结果加上μ,即 XΘT μ. 如下图:

含义:一无所知的新用户,把电影的平均评分作为预测评分进行推荐.

来源:https://www./content-4-534201.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多