Coursera_Stanford_ML_ex8_异常检测与推荐系统 作业记录

来源:互联网 发布:直播刷屏软件 编辑:程序博客网 时间:2024/05/16 13:02

Programming Exercise 8: Anomaly Detection and Recommender Systems

这周总结一下Week9的作业,第一部分需要利用高斯分布进行异常检测,第二部分需要利用协同过滤算法搭建一个电影推荐系统。

首先看一下作业要求。



有三个文件需要我们完成,难度均不大。

一.ex8

              简单介绍一下异常检测的思想,所谓异常检测,既是将与大部分正例在特征距离上相差较大的例子检测出来。可以应用在大量服务器工作中少量机器出现异常情况的发现,产品的质量检测等。

很自然的我们就会想如何判断一个例子的偏差的大小?这里就涉及一个阀值,需要通过搜索来找到使预测精度达到最大的阀值。因为异常数据较少,会出现数据偏斜的问题,所以这里需要用F值来替代预测精度。

estimateGaussian.m需要返回数据X均值和方差,无难度。

mu=mean(X);sigma2=sum(X.^2)/m-mu.^2;
      selectThreshold.m在用高斯分布算出距离后,选择合适的阀值。

predictions=(pval<epsilon);tp=size(intersect(find(predictions==1),find(yval==1)),1);fp=size(intersect(find(predictions==1),find(yval==0)),1);fn=size(intersect(find(predictions==0),find(yval==1)),1);prec=tp/(tp+fp);rec=tp/(tp+fn);F1=2*prec*rec/(prec+rec);

     结果如下:

二.ex8_cofi

  根据以往用户对电影评分数据根据新用户的喜好,为他推荐电影。首先分析一下数据,电影特征为所含不同类型镜头的数量,用户特征为其对   不同类型电影的评分。R为标记矩阵,R(i,j)=1表示第i部电影被第j名用户评分。

      cofiCostFunc.m误差函数与梯度函数:



J=J+sum(sum((R.*(X*Theta'-Y).^2)))/2+lambda/2*sum(sum(Theta.^2))+...    lambda/2*sum(sum(X.^2));for i=1:size(X,1)    idx = find(R(i,:)==1);    Thetatemp = Theta(idx,:);    Ytemp = Y(i,idx);    X_grad(i,:)=(X(i,:)*Thetatemp'-Ytemp)*Thetatemp+lambda*X(i,:);endfor j=1:size(Theta,1)    idx = find(R(:,j)==1);    Xtemp = X(idx,:);    Ytemp = Y(idx,j);   Theta_grad(j,:)=(Xtemp*Theta(j,:)'-Ytemp)'*Xtemp+lambda*Theta(j,:);end

  总结一下,推荐系统这里电影特征和用户特征的梯度矩阵需要好好琢磨一下,然后别的基本没什么要说的了。这是最后一次编程作业,贵在坚   持,加油吧。


0 0
原创粉丝点击