机器学习推导笔记1--机器学习的任务、步骤、线性回归、误差、梯度下降

前段时间放假在家的时候,总算是看完了斯坦福的机器学习公开课(Andrew NG)的监督学习,这项计划持续了将近一个学期。无监督学习和强化学习部分暂时还不太想看,目前来说监督学习与我现在的情况更契合一些。看完监督学习部分,对机器学习的了解又深了一些,加上之前帮师兄做实验,从工程角度和理论角度共同推进,感觉还是挺好的。

为了巩固学习成果,在刷题之余,准备写一系列笔记,自己推导一遍机器学习里比较重要的几个算法,并附上自己的理解。我一直认为能讲出来的东西,才是自己的。写笔记有助于我自己理清思路,当然也希望对后来人能有所帮助。

准备细致推导的主要有以下几个算法,争取在9月开学前完成:

  1.梯度下降

  2.Logistic Regression

  3.Naive Bayes

  4.SVM

  5.学习理论

==================================

1.机器学习的任务

机器学习的任务是比较明确的,我的理解是:通过一些算法(模型),去挖掘出数据中的潜在规律(特征),并能对未知数据进行合理的推测(预测)。举一个简单的例子来说明这个问题。

一个在美国波特兰的房主想卖掉自己的房子,他不知道他的房子能值多少钱。他找到了一些房屋交易数据,想做一下参考。数据如下

这里主要有房屋面积大小和售价的关系,发现符合我的直觉:房子越大,卖的越贵。但事实真的是这样吗?我们以面积大小为X轴,售价为Y轴,将这些数据画出来,如下图

嗯,基本符合我们的预期,房屋的售价与面积大小是成正相关的。以上的这个过程都很make sense,其实我们在不经意间遵循了一个流程,如下图:

图中,Trainging Set是数据集的意思,就是这个美国人找的的之前房屋交易的数据(房屋面积-售价)。Learning algorithm就是学习的过程,他通过直观推理和画图的方式,得出了“面积越大,售价越高”的市场价格规律,就是那个h,即hypothsis。然后他量了一下自己的房屋面积x,根据得到的市场规律,去预估自己的房子值多少钱,就是最后的那个y。于是,一个机器学习的问题就产生了。

现在我们回过头来,还看这个房屋面积和售价的例子,参照我个人对机器学习的理解:通过一些算法(模型),去挖掘出数据中的潜在规律(特征),并能对未知数据进行合理的推测(预测)。这里其实是包含两个步骤的:

步骤1:根据已有的房屋交易数据,去获得一个市场价格规律;

步骤2:根据这个市场价格规律,和自己房屋的面积,来预测自己的房屋价值。

这两个步骤就是一个机器学习问题的一般步骤,我们接着往下看。

2.Linear Regression线性回归

可是我们都知道,一个房子的售价并不仅仅受面积大小影响,像卧室数量、地理位置、采光、车库、新房还是二手房等等这些因素都会左右售价。那么我们这里再考虑进一个简单的因素:卧室数量。还是老样子,先拿到一些数据:

然后该画图找规律了,但是我们发现这里的图不太好画,因为这是三维的,画出的是立体的,并不直观。那这样的数据怎样分析比较好呢?我们可以用数学的方法。在二维情况下(房屋面积-售价),我们得到的市场价格规律是正相关的。这里加了一个新特征(卧室数量),我们直观上理解,应该也是卧室数量越多,售价越高,也是正相关。这样一来,房屋面积和卧室数量,这二者和房价的关系应该也是正相关的,因为现实情况就是这样,三室两厅的房子就是比一室一厅的要贵。

为了简化问题,我们暂且用线性关系来表示这个正相关,即房屋面积、卧室数量与房价之间的关系是线性的。在数学上如何来定义这个问题呢?

我们学过,一条直线可以用f(x)=ax+b来表示,这里我们采取同样的办法,用下式来表示房价:

可以认为就是那个的ax,就是那个b,而就是房价。x1是第一个特征,即房屋大小;x2是第二个特征,即卧室数量。这里的变量有三个,是theta, theta1和theta2。这里我们发现没有x0,那就假设x0为1,可以将上面公式整理成下面的样子:

,这里theta和x都是一个矩阵。

我们上面说了,机器学习有两个步骤。具体到这个公式里,两个步骤做了以下工作:

步骤一,是通过数据(x)学习规律(theta),得到f(x)=ax+b中的a和b,假设a=2,b=3,f(x)=2x+3。

步骤二,自己房屋面积x=150,那么售价的预测值就是f(150)=2*150+3=330。

在这个例子中,我们主要阐述了机器学习的两个常规步骤,即模型学习和结果预测。至于线性回归,我个人的理解是:特征值与结果间的关系是线性的,以此线性模型来进行预测,达到的效果是使得预测值与真实值尽可能的接近。当然越接近,说明我们的预测越准确,我们的模型效果越好。

那么问题来了,如何让我们预测的准确呢?其实从公式中我们就可以知道,我们所说的模型,具体而言就是theta值。如何让theta值更准,就是我们下一步的主要工作。

3.Least Mean Square 最小均方法

如何在数学上定义”预测的准“这样的说法?当然是预测值和真实值之间的差别了,即误差=|真实值-预测值|。但是实际情况中,我们并不这样简单粗暴的用差值来表示误差,往往会加以包装,主要是为了方便后续的计算,在这里我们用最小均方法来定义误差:

,让我们来仔细看这个公式。表示的就是第i个训练数据的真实值与预测值的误差,加个平方是消除正负,前面加个1/2是为了方便计算。从1到m加和后,表示的就是整个数据集的误差。我们要使这个值最小(LSE的目的),就说明在整个数据集上,我们对每一个的数据预测都挺准,换句话说,我们的模型就很好。

那么好了,我们的目的就是选择合适的theta,让J(theta)最小,那么要采用什么方法呢?这就是今天我主要想记录的重点——梯度下降。

4.Gradient Descent 梯度下降

我先说一个场景吧,有助于我们理解梯度下降。我们在开车的时候,根据路况,心里都会有一个觉得合适的速度。如果比这个速度慢,我们就会踩油门提速,慢的越多,油门踩的越深;如果有点快,就会踩刹车或者遛一会儿让车速降下来。

在这里,如果我们说心中合适的速度是真实值,而实际的速度是预测值,二者相差的多少就是误差。当误差越大,我们的油门猜的就越深,车就能尽快的到达我们心中那个合适的速度。这就是一个梯度上升的例子:当误差较大的时候,参数theta要产生巨大的变化,使得预测值的输出改变较多,从而减小误差;当误差较小的时候,参数theta要保证微调,使得预测值更加接近真实值。

以上所述就是梯度下降/上升的原理,公式如下:

能看明白吗?我们主要看偏微分那部分。J(theta)是误差,对它求偏微分,得到的就是当前车速和心中理想车速差的有多大,是斜率。alpha是步长,可以理解为踩油门的单位长度。举例来说,alpha步长是1厘米,即每次踩1厘米,而偏微分得到的值为10,还需要再往下踩10个1厘米。再来看减号左边的theta(j),它表示的是当前的油门深度,假设为5。5+10=15,即我们的theta要从5变成15,油门要踩的更深些,才能让车速更快些,让误差更小些。这样一来,我们就更新了一次theta。

Ok理解了吗?公式是梯度下降的公式,是减号。而我说的场景是梯度上升,是加号,即往下再踩油门,让速度提升,尽快减小当前车速与我预期车速的差距。

好的理解了梯度的思路以后,我们就明白可以通过梯度下降的方法,去更新theta值,从而优化模型,提高准确率。这里我们可以看到,更新theta的源泉是误差,是预测值与实际值的误差。这里我们相当于是拿实际值作为参考,不断的来修正模型,这叫做监督学习。监督就体现在,“我知道正确的答案(实际值),你现在模型的输出(预测值)不对,还差得远,需要再修改,回去改去吧。”那么无监督学习是什么样子呢?就是“本身没有正确答案,我也不知道对不对。只要你尽力按照你的思路做了,那么你觉得对就对。”强化学习,我也了解的不太多,是另一种形式的监督学习,做的好了给奖励,做的不好打脸,应该比梯度方法更新参数更狠一些吧,不懂我也就不乱说。

好了,算是把梯度的方法给说清楚了,那么开始推导几种形式吧。公式总是不好看的,把他分的细一点,带入J(theta),会成什么样子呢?

首先我们先考虑最简单的场景,即只有一个训练数据(x,y),那么就变成一下样子

,这个推导过程不多说了,很清楚。有意思的是我们要关注最后结果,alpha*误差*训练输入值xj,就是xj对应的theta(j),就是油门应该再往下踩多深。这样一来,一切都是已知的了,是不是很爽。

当然啦,我们的数据怎么可能有一个呢,当然有很多行x和y啦,那就这样:

,有问题吗?可能不太好理解这里的xj(i)。这里x(i)是第i行数据的意思,其中这行数据中有x1,x2..xn个特征。第j个特征,就是xj(i)。ok啦?那为啥theta(j)不是thetaj(i)呢?让我们来看看thetaj是什么,theta是特征值的权重,就是通过很多数据来训练一个theta,使得这个theta尽可能满足所有训练数据的需求,让整体的误差最小。

我们可以看到,决定theta大小的主要有两个因素。一个是步长alpha,一个是误差。当误差越来越小的时候,梯度(偏微分,或者叫斜率)就越来越小,这样需要往下踩油门的深度也就越来越小,所带来的速度改变也越来越小,几乎达到我们心里的速度。这样,我们就叫算法收敛了,即达到了我们想要的速度,也就是说误差最小,我们的模型训练成功了。

这种梯度下降叫做批梯度下降Batch Gradient Descend,批的意思就是所有数据。

不知道有没有发现一个问题,就是我们用BSD时,需要遍历全部的数据,才能得到一组theta值。这样的结果当然是最准的,但是效率很低,当训练数据特别大时,可能好久也出不来结果。所以我们又给出了一个改进算法,叫随机梯度下降Stochastic gradient descent。

这是什么意思呢,我们可以看出,循环内是单个(x,y)的公式,这个过程进行了m次。也就是说,每一次迭代,都会产生一组theta,而不像BGD那样,便利完所有的数据,才能有一组theta。这样的好处是如果发现算法收敛了,就可以退出了,大大节省了时间。但是精度可能会稍微差一些,但从实际效果来看,效果也蛮好的。

OK总结一下。我今天先是理了理机器学习的任务:算法、挖掘和预测;以及机器学习的步骤:找参数、做预测;然后就是如何去评估一个算法的好坏:LMS与误差;以及如何改进一个模型:梯度方法。

还是有必要写出来的,像写梯度的时候,那个油门的例子是我现想的,觉得挺有意思。写完之后我也纠正了自己许多认识,比如我也没想过theta(j)为啥不是thetaj(i),自己再想一下,嗯是呀,那是权重嘛,要学的就是这个嘛,只不过通过大量数据去学这一组参数就是了。一天有点成果,总是很开心的。面包加油喽~~

时间: 2024-10-11 19:50:58

机器学习推导笔记1--机器学习的任务、步骤、线性回归、误差、梯度下降的相关文章

机器学习实战笔记1(机器学习基础)

1:如何选择合适的算法 2:python简介 (1)   python的优势:相对于matlab,matlab单个软件授权就要花费数千美元,也没有一个有影响力的大型开源项目.相对于c++/c/java,完成简单的操作就需要编写大量的代码:而如今我们应该花费更多的时间去处理数据内在的含义,而无需花费太多精力解决计算机如何得到数据结果(python简洁) (2)   python具有numpy科学函数库,它是一个使运算更容易.执行更迅速的库:另外还有matplotlib绘图工具. 3:python语

机器学习入门:线性回归及梯度下降

机器学习入门:线性回归及梯度下降 本文会讲到: (1)线性回归的定义 (2)单变量线性回归 (3)cost function:评价线性回归是否拟合训练集的方法 (4)梯度下降:解决线性回归的方法之一 (5)feature scaling:加快梯度下降执行速度的方法 (6)多变量线性回归   Linear Regression 注意一句话:多变量线性回归之前必须要Feature Scaling! 方法:线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个

机器学习 LR中的参数迭代公式推导——极大似然和梯度下降

机器学习 LR中的参数迭代公式推导--极大似然和梯度下降 Logistic本质上是一个基于条件概率的判别模型(DiscriminativeModel). 函数图像为: 通过sigma函数计算出最终结果,以0.5为分界线,最终结果大于0.5则属于正类(类别值为1),反之属于负类(类别值为0). 如果将上面的函数扩展到多维空间,并且加上参数,则函数变成: 接下来问题来了,如何得到合适的参数向量θ呢? 由于sigma函数的特性,我们可作出如下的假设: 上式即为在已知样本X和参数θ的情况下,样本X属性正

机器学习笔记02:多元线性回归、梯度下降和Normal equation

在<机器学习笔记01>中已经讲了关于单变量的线性回归以及梯度下降法.今天这篇文章作为之前的扩展,讨论多变量(特征)的线性回归问题.多变量梯度下降.Normal equation(矩阵方程法),以及其中需要注意的问题. 单元线性回归 首先来回顾一下单变量线性回归的假设函数: Size(feet2) Price($1000) 2104 460 1416 232 1534 315 852 178 - - 我们的假设函数为 hθ(x)=θ0+θ1x 多元线性回归 下面介绍多元线性回归(Linear R

线性回归、梯度下降 - Andrew Ng机器学习公开课笔记1.1

实例 首先举个样例.如果我们有一个二手房交易记录的数据集.已知房屋面积.卧室数量和房屋的交易价格,例如以下表: 假如有一个房子要卖,我们希望通过上表中的数据估算这个房子的价格. 这个问题就是典型的回归问题,这边文章主要讲回归中的线性回归问题. 线性回归(Linear Regression) 首先要明确什么是回归. 回归的目的是通过几个已知数据来预測还有一个数值型数据的目标值. 如果特征和结果满足线性关系,即满足一个计算公式h(x).这个公式的自变量就是已知的数据x,函数值h(x)就是要预測的目标

机器学习:单变量线性回归及梯度下降

******************************************************************************* 注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的<机器学习>课程笔记.博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客.本系列博客包括线性回归.逻辑回归.神经网络.机器学习的应用和系统设计.支持向量机.聚类.将维.异常检测.推荐系统及大规模机器学习等内容. *******

【机器学习详解】线性回归、梯度下降、最小二乘的几何和概率解释

线性回归 即线性拟合,给定N个样本数据(x1,y1),(x2,y2)....(xN,yN)其中xi为输入向量,yi表示目标值,即想要预测的值.采用曲线拟合方式,找到最佳的函数曲线来逼近原始数据.通过使得代价函数最小来决定函数参数值. 采用斯坦福大学公开课的例子:假如一套房子的价格只考虑由房屋面积(Living area)与卧室数目(bedrooms)两个因素决定,现在拿到手有m个样本,如下图所示.此例中,输入x=(x1,x2)为2维向量,分别对应房屋面积和卧室数目,y对应价格.现在想根据上述样本

【机器学习具体解释】线性回归、梯度下降、最小二乘的几何和概率解释

线性回归 即线性拟合,给定N个样本数据(x1,y1),(x2,y2)....(xN,yN)当中xi为输入向量,yi表示目标值,即想要预測的值.採用曲线拟合方式,找到最佳的函数曲线来逼近原始数据.通过使得代价函数最小来决定函数參数值. 採用斯坦福大学公开课的样例:假如一套房子的价格仅仅考虑由房屋面积(Living area)与卧室数目(bedrooms)两个因素决定,如今拿到手有m个样本,例如以下图所看到的. 此例中.输入x=(x1,x2)为2维向量.分别相应房屋面积和卧室数目,y相应价格.如今想

Stanford大学机器学习公开课(二):监督学习应用与梯度下降

本课内容: 1.线性回归 2.梯度下降 3.正规方程组 监督学习:告诉算法每个样本的正确答案,学习后的算法对新的输入也能输入正确的答案 1.线性回归 问题引入:假设有一房屋销售的数据如下: 引入通用符号: m =训练样本数 x =输入变量(特征) y =输出变量(目标变量) (x,y)—一个样本 ith—第i个训练样本=(x(i),y(i)) 本例中:m:数据个数,x:房屋大小,y:价格 监督学习过程: 1) 将训练样本提供给学习算法 2) 算法生成一个输出函数(一般用h表示,成为假设) 3)