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.尝试获得更多的特征 ...
随机推荐
- div模拟输入框input/textarea
//html<!--填写信息--> <div class="info-wrap"> <form class="formToCheck&quo ...
- 【算法】RMQ LCA 讲课杂记
4月4日,应学弟要求去了次学校给小同学们讲了一堂课,其实讲的挺内容挺杂的,但是目的是引出LCA算法. 现在整理一下当天讲课的主要内容: 开始并没有直接引出LCA问题,而是讲了RMQ(Range Min ...
- IT软件开发中常用的英语词汇
Aabstract 抽象的abstract base class (ABC)抽象基类abstract class 抽象类abstraction 抽象.抽象物.抽象性access 存取.访问access ...
- Python数据处理——numpy_1
python中数据处理最基础的一个包--numpy.它能很好的进行数据准备,类似与R语言中的数据框(DataFrame)一样.今天,就来从最基础的开始学习. import numpy as npdat ...
- Java程序i学习中各阶段的建议
第一部分:对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学. 一.Java基础 首先去找一个Java的基础教程学一下,这里可以推荐一个地址,或者你也可以参照这个地址上去找相应 ...
- hdu5145 NPY and girls
人生中第一道莫队,本来以为是一道水题的.. 首先这题只有区间查询,没有修改操作,使用莫队比较明显,但统计答案有点麻烦.. 根据题意,在n个人里选m个不相同种类的人,设第i种人数量为ai,总方案为c(n ...
- 关于在"a"标签中添加点击事件的一些问题
昨天做修改页面跳转时遇到一个问题,如果a标签的"href"属性为空的话,比如这样<a href="" onclick="roleupdate() ...
- System.Data.SqlClient.SqlException (0x80131904): EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。 EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配。上一计数 = 1,当前计数 = 0。
EF使用ExecuteSqlCommand(db.Database.ExecuteSqlCommand("exec proc_DeleteCaseInfo_Output @caseID&qu ...
- C# 创建压缩文件
在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用.如果是生成用户可以下载的文件,还可以极大的减少网络流量并提升下载速度.最近在一个 C# 项目中用到了创建压缩文 ...
- C# Webclient 和 Httpclient如何通过iis authentication 身份验证。
前言: 该博客产生的背景是客户那边有部署网站的方法是iis windows authentication身份验证,而系统中使用Webclient来调用别的系统的方法.在此情况下,原本可以使用的功能,都 ...