本周主要讲异常检测和协同过滤算法。
异常检测
Motivation
异常检测主要的motivation是我们可能有很多正常的样本,异常样本很少,然而异常样本才是业务中感兴趣的正样本,这个时候我们无法使用分类。一方面是因为正样本太少了,另一方面,其实我们也不知道异常样本到底都有那些类,在这种情况下,我们就会使用异常检测这种方式进行。
主要思路
主要思路就是负样本有一个分布,一般假设成高斯的,然后估计出高斯的均值和方差,然后新样本就直接在这个分布下计算概率密度或者概率,如果足够小,就判别为异常。
流程
数据集划分
异常检测和监督学习的对比
一些其他事项
非高斯可以尝试取个对数,或者是开根号啥的
另外很可能找到的feature上显示异常和正常值的feature的概率在一个量级,那么这个时候解决的办法是复合一下其中的一些feature,比方说x1/x2,或者再去挑选能够表征异常的的feature。
另外一个是协方差不为0的高维高斯,参数估计方法如下:
推荐系统
推荐系统这里使用的是协同过滤的方法。
简要来说就是使用线性回归对用户对目标产品的评分进行回归估计。
以一个例子来说明:
在我们直到Movie的特征的情况下,比方说是爱情元素还是动作元素,在这种情况下,相当于特征我们是知道的,那么可以直接对参数
θ
θ
进行估计。
只要使用梯度下降法就可以了:
协同滤波
但是问题是,我们其实很难直接给出一个电影究竟浪漫元素分值是多少,在这种情况下,x的值也是不知道的:
在这种情况下,我们有两种方法解,一种是随机初始化
x
x
和,然后分别迭代优化,另外一种就是用一个cost function,一起优化
x
x
和,也就是协同滤波的含义。
算法如下:
在这种情况下,其实就显出来,需要随机初始化
x
x
和了,否则无法symmetric break。这个和神经网络是一个道理。
另外有一个实现上的问题,mean normalization: