Coursera 机器学习笔记(七)
主要为第九周内容:异常检测、推荐系统
(一)异常检测(DENSITY ESTIMATION)
核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非参数检验方法之一。密度估计是指给定数据集 x(1),x(2),..,x(m),我们假使数据集是正常的,我们希望知道新的数据 x(test)是不是异常的,即这个测试数据不属于该组数据的几率如何。我们所构建的模型应该能根据该测试数据的位置告诉我们其属于一组数据的可能性 p(x)。
通过密度估计之后,选择一个概率阈值进行判断是否是异常,这也是异常检测中常用的方法。如:
- 高斯分布
高斯核函数是核密度估计中常用的核函数。其中一元高斯概率密度函数为:
的计算方法如下:
多元高斯分布的概率密度函数为:
如果训练集不是太大,并且没有太多的特征,我们可以使用多元高斯分布模型。
注:机器学习中对于方差我们通常只除以 m 而非统计学中的(m-1)。
- 异常检测
首先,选择好训练的特征,对于异常检测算法,我们使用的特征是至关重要的,异常检测假设特征符合高斯分布,如果数据的分布不是高斯分布,异常检测算法也能够工作,但是最好还是将数据转换成高斯分布。,例如使用对数函数x = log(x+c)或者指数函数x=x^c。
选定好特征之后,一般的高斯分布模型中,对于给定的数据集 x(1),x(2),...,x(m) ,我们要针对每一个特征计算μ和σ2的估计值,根据模型计算 p(x):
如下图所示:
对于多元高斯分布模型,首先计算所有特征的平均值,然后再计算协方差矩阵,最后我们计算多元高斯分布的 p(x):
选择一个ε,将 p(x)=ε作为我们的判定边界,当 p(x)>ε时预测数据为正常数据,否则为异常。
- 构建系统
1.获得大量标记的数据(异常或正常),然后选择其中一部分正常数据用于构建训练集,用剩下的正常数据和异常数据混合的数据构成交叉检验集和测试集。
2.根据训练集数据,我们估计特征的平均值和方差并构建 p(x)函数
3.对交叉检验集,我们尝试使用不同的ε值作为阀值,并预测数据是否异常,根据 F1 值或者查准率与查全率的比例来选择ε
4.选出ε后,针对测试集进行预测,计算异常检验系统的 F1 值或者查准率与查全率之比
4.对比
(二)推荐系统
推荐系统在生活中,无处不在。如电影有豆瓣电影、NetFilx,音乐平台网易云音乐、豆瓣FM、虾米等,网购淘宝、京东等等。
有 5 部电影和 4 个用户,我们要求用户为电影打分。前三部电影是爱情片,后两部则是动作片,我们可以看出 Alice 和 Bob 似乎更倾向与爱情片,而 Carol 和 Dave 似乎更倾向与动作片。并且没有一个用户给所有的电影都打过分。我们希望构建一个算法来预测他们每个人可能会给他们没看过的电影打多少分,并以此作为推荐的依据。
标记:nu代表用户的数量nm 代表电影的数量;
r(i,j)如果用户 i 给电影 j 评过分则 r(i,j)=1;y(i,j)代表用户 i 给电影 j 的评分;mj 代表用户; j 评过分的电影的总数。
- 基于内容
基于内容的推荐(content-based recommendation)是指根据用户选择的对象,推荐其他类似属性的对象作为推荐,不需要依据其他用户对对象的评价意见。
对象内容特征(Content(s))的选取也是重要研究。在之前,例子中,我们选取电影的两个特征: x1代表电影的浪漫程度,x2代表电影的动作程度。
基于这些特征来构建一个推荐系统算法,采用线性回归模型,我们可以针对每一个用户都训练一个线性回归模型。对于用户 j 和电影 i,我们预测评分为:(θ(j))T(x(i)),其中θ(j)用户 j 的参数向量,x(i)电影 i 的特征向量。相应的j用户的模型的代价函数是:
对于所有用户的代价函数为:
可以通过梯度下降法来求解最优解。
当然可以定义其他的参数模型,运用其他的机器学习方法。
- 基于协同过滤
在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到推荐系统中来,即基于其他用户对某一内容的评价向目标用户进行推荐。
协同过滤算法可以同时学习用户的参数和电影的特征,对应的代价函数即优化目标为:
利用梯度下降法最小化代价函数
在进行训练算法前,需要对结果Y矩阵进行均值归一化,如下图:
然后利用这个新的Y矩阵来训练算法。最后预测值为预测(θ(j))T(x(i))+μi 。对于归一化的新模型,认为新用户对电影的评分都是电影的平均分。
参考:
[1].许海玲, 吴潇, 李晓东, 等. 互联网推荐系统比较研究[J]. 软件学报, 2009, 20(2): 350-362.
[2]. 李存华, 孙志挥, 陈耿, 等. 核密度估计及其在聚类算法构造中的应用[J]. 计算机研究与发展, 2004, 41(10): 1712-1719.
[3].博客:一维数据可视化:核密度估计http://www.lifelaf.com/blog/?p=723
Coursera 机器学习笔记(七)的更多相关文章
- coursera机器学习笔记-建议,系统设计
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- coursera机器学习笔记-神经网络,学习篇
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- coursera机器学习笔记-神经网络,初识篇
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- coursera机器学习笔记-多元线性回归,normal equation
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- coursera机器学习笔记-机器学习概论,梯度下降法
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- Coursera 机器学习笔记(八)
主要为第十周内容:大规模机器学习.案例.总结 (一)随机梯度下降法 如果有一个大规模的训练集,普通的批量梯度下降法需要计算整个训练集的误差的平方和,如果学习方法需要迭代20次,这已经是非常大的计算代价 ...
- Coursera 机器学习笔记(六)
主要为第八周内容:聚类(Clustering).降维 聚类是非监督学习中的重要的一类算法.相比之前监督学习中的有标签数据,非监督学习中的是无标签数据.非监督学习的任务是对这些无标签数据根据特征找到内在 ...
- Coursera 机器学习笔记(五)
主要第七周的内容:支持向量机 可以参考JerryLeed 的支持向量机SVM系列博客http://www.cnblogs.com/jerrylead 以及 pluskid的支持向量机系列博客http: ...
- Coursera 机器学习笔记(四)
主要为第六周内容机器学习应用建议以及系统设计. 下一步做什么 当训练好一个模型,预测未知数据,发现结果不如人意,该如何提高呢? 1.获得更多的训练实例 2.尝试减少特征的数量 3.尝试获得更多的特征 ...
随机推荐
- [JavaWeb]SpringSecurity-OAuth2.0 统一认证、资源分离的配置,用于分布式架构、模块化开发的认证体系
前言 关于 OAuth2.0的认证体系,翻阅了好多资料,RCF 文档太多,看了一半就看不下去了,毕竟全英文的文档看起来,是有一点让我烦躁,但也对 OAuth2.0的认证流程有了一个基本的概念,之前用 ...
- ASP.NET MVC4 微信公众号开发之网页授权(二):通过公众号AppID(应用ID)和AppSecret(应用密钥)取得网页授权openid
ASP.NET MVC4 微信公众号开发之网页授权(一):搭建基础环境 通过了上一篇文章我们已经搭建好了基础开发大环境,现在打开开发环境这里我用的是 vs2013,通过如下方式: 拼接请求链接重定向到 ...
- const常量类型
1.定义:const常量类型表示一个”常值变量“,其值是不能被修改的变量.即一旦变量被声明为const类型,编译器将禁止任何试图修改该变量的操作. 2.声明:const <声明数据类型> ...
- Linux-进程描述(4)之进程优先级与进程创建执行
进程优先级 进程cpu资源分配就是指进程的优先权(priority).优先权高的进程有优先执行权利. 权限与优先级.权限(privilege)是指在多用户计算机系统的管理中,某个特定的用户具有特定的系 ...
- LeetCode 207. Course Schedule(拓扑排序)
题目 There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have p ...
- 多说评论一次导回 Typecho 本地数据库
一.追忆往昔 第一次接触社交化评论类产品大概是在2012年左右,当时国内知名度较高的有多说.友言等,国际上比较有名的有Disqus,这类产品的优点在此就不多说了. 用过几款产品后,被多说漂亮的页面和体 ...
- Angular回到顶部按钮指令
之前的分页代码指令化在线下测试没有问题,到服务器上就不运行了,所以那个先放一放. 今天来把"回到顶部"按钮指令化.首先是页面html: <!--回弹按钮--> < ...
- 虚幻UE4中移动端水材质的设置
内容: *概述 *纹理文件 *基本颜色 *法线的设置 *标量参数和材质属性 *场景设置 *最终效果 概述 本教程由52VR翻译自unrealengine官方,在本教程中,我们将教您如何创建可以在移动设 ...
- 使用CSS和JQuery实现表格单元格内容超出时部分隐藏,隐藏部分以...显示
1.使用CSS实现,给此单元格添加一个Class: width:130px; display:block; overflow:hidden; word-break:keep-all; white-sp ...
- miller_rabin算法检测生成大素数的RSA算法实现
import math from functools import reduce #用于合并字符 from os import urandom #系统随机的字符 import binascii # ...