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、异常检测与监督学习的区别: 既然异常检测也带有便签,为什么不直接用逻辑回归等方法进行分类预测呢?
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. 对于误差情况,一种方法是增加特征量(上文已阐述),另一种方法是使用多元高斯模型自动捕捉不同特征量之间的相关性.
Σ 不可逆的两种情况:① 不满足 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ΘT 有低秩属性,因此命名:低秩矩阵分解算法. ④ 寻找电影 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 |
|