【Stanford Open Courses】Machine Learning:Linear Regression with One Variable (Week 1)

从Ⅱ到Ⅳ都在讲的是线性回归,其中第Ⅱ章讲得是简单线性回归(simple linear regression, SLR)(单变量),第Ⅲ章讲的是线代基础,第Ⅳ章讲的是多元回归(大于一个自变量)。

本文的目的主要是对Ⅱ章中出现的一些算法进行实现,适合的人群为已经看完本章节Stanford课程的学者。本人只是一名初学者,尽可能以白话的方式来说明问题。不足之处,还请指正。

在开始讨论具体步骤之前,首先给出简要的思维路线:

1.拥有一个点集,为了得到一条最佳拟合的直线;

2.通过“最小二乘法”来衡量拟合程度,得到代价方程;

3.利用“梯度下降算法”使得代价方程取得极小值点;


首先,介绍几个概念:

回归在数学上来说是给定一个点集,能够用一条曲线去拟合之。如果这个曲线是一条直线,那就被称为线性回归;如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如locally weighted回归,logistic回归等等。

课程中得到的h就是线性回归方程:



下面,首先来介绍一下单变量的线性回归:

问题是这样的:给定一个点集,找出一条直线去拟合,要求拟合的效果达到最佳(最佳拟合)。

既然是直线,我们先假设直线的方程为:

如图:

点集有了,直线方程有了,接下来,我们要做的就是计算出,使得拟合效果达到最佳(最佳拟合)。

那么,拟合效果的评判标准是什么呢?换句话说,我们需要知道一种对拟合效果的度量。

在这里,我们提出“最小二乘法”:(以下摘自wiki)

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。

利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

对于“最小二乘法”就不再展开讨论,只要知道他是一个度量标准,我们可以用它来评判计算出的直线方程是否达到了最佳拟合就够了。

那么,回到问题上来,在单变量的线性回归中,这个拟合效果的表达式是利用最小二乘法将未知量残差平方和最小化

结合课程,定义了一个成本函数:

其实,到这里,要是把点集的具体数值代入到成本函数中,就已经完全抽象出了一个高等数学问题(解一个二元函数的最小值问题)。

其中,a,b,c,d,e,f均为已知。

课程中介绍了一种叫“Gradient descent”的方法——梯度下降算法

两张图说明算法的基本思想:

所谓梯度下降算法(一种求局部最优解的方法),举个例子就好比你现在在一座山上,你想要尽快地到达山底(极小值点),这是一个下降的过程,这里就涉及到了两个问题:1)你下山的时候,跨多大的步子(当然,肯定不是越大越好,因为有一种可能就是你一步跨地太大,正好错过了极小的位置);2)你朝哪个方向跨步(注意,这个方向是不断变化的,你每到一个新的位置,要判断一下下一步朝那个方向走才是最好的,但是有一点可以肯定的是,要想尽快到达最低点,应从最陡的地方下山)。

那么,什么时候算是你到了一个极小点呢,显然,当你所处的位置发生的变化不断减小,直至收敛于某一位置,就说明那个位置就是一个极小值点。

so,我们来看的变化,则我们需要让求偏导,倒数代表变化率。也就是要朝着对陡的地方下山(因为沿着最陡显然比较快),就得到了的变化情况:

简化之后:

步长不宜过大或过小

梯度下降法是按下面的流程进行的:(转自:http://blog.sina.com.cn/s/blog_62339a2401015jyq.html

1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。

2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。

为了方便大家的理解,首先给出单变量的例子:

eg:求的最小值。(注:

java代码如下:

·

package OneVariable;

public class OneVariable{
    public static void main(String[] args){
    double e=0.00001;//定义迭代精度
    double alpha=0.5;//定义迭代步长
    double x=0;            //初始化x
    double y0=2*x*x+3*x+1;//与初始化x对应的y值
    double y1=0;//定义变量,用于保存当前值
    while (true)
    {
        x=x-alpha*(4.0*x+3.0);
        y1=2*x*x+3*x+1;
        if (Math.abs(y1-y0)<e)//如果2次迭代的结果变化很小,结束迭代
        {
            break;
        }
        y0=y1;//更新迭代的结果
    }
    System.out.println("Min(f(x))="+y0);
    System.out.println("minx="+x);
    }
}

//输出
Min(f(x))=1.0
minx=-1.5

两个变量的时候,为了更清楚,给出下面的图:

这是一个表示参数θ与误差函数J(θ)的关系图,红色的部分是表示J(θ)有着比较高的取值,我们需要的是,能够让J(θ)的值尽量的低。也就是深蓝色的部分。θ0,θ1表示θ向量的两个维度。

在上面提到梯度下降法的第一步是给θ给一个初值,假设随机给的初值是在图上的十字点。

然后我们将θ按照梯度下降的方向进行调整,就会使得J(θ)往更低的方向进行变化,如图所示,算法的结束将是在θ下降到无法继续下降为止。

当然,可能梯度下降的最终点并非是全局最小点,可能是一个局部最小点,可能是下面的情况:

上面这张图就是描述的一个局部最小点,这是我们重新选择了一个初始点得到的,看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点

一个很重要的地方值得注意的是,梯度是有方向的,对于一个向量θ,每一维分量θi都可以求出一个梯度的方向,我们就可以找到一个整体的方向,在变化的时候,我们就朝着下降最多的方向进行变化就可以达到一个最小点,不管它是局部的还是全局的。



理论的知识就讲到这,下面,我们就用java去实现这个算法:

梯度下降有两种:批量梯度下降和随机梯度下降。详见:http://blog.csdn.net/lilyth_lilyth/article/details/8973972

测试数据就用课后题中的数据(ex1data1.txt),用matlab打开作图得到:

【Stanford Open Courses】Machine Learning:Linear Regression with One Variable (Week 1)

时间: 2024-10-06 22:05:21

【Stanford Open Courses】Machine Learning:Linear Regression with One Variable (Week 1)的相关文章

Machine Learning:Linear Regression With One Variable

Machine Learning:Linear Regression With One Variable 机器学习可以应用于计算机视觉,自然语言处理,数据挖掘等领域,可以分为监督学习(Supervised Learning),无监督学习(Unsupervised Learning),强化学习(Reinforcement Learning)等. 首先我们从一个简单的监督学习入手:假如给我们一组训练集(在这里就是Size和Price),我们如何才能建立一个可以预测房价的模型呢? 这里(x,y)称为一

Machine Learning - II. Linear Regression with One Variable (Week 1)

http://blog.csdn.net/pipisorry/article/details/43115525 机器学习Machine Learning - Andrew NG courses学习笔记 单变量线性回归Linear regression with one variable 模型表示Model representation 例子: 这是Regression Problem(one of supervised learning)并且是Univariate linear regressi

Machine Learning:Linear Regression With Multiple Variables

Machine Learning:Linear Regression With Multiple Variables 接着上次预测房子售价的例子,引出多变量的线性回归. 在这里我们用向量的表示方法使表达式更加简洁. 变量梯度下降跟单变量一样需同步更新所有的theta值. 进行feature scaling的原因是为了使gradient descent算法收敛速度加快.如下图所示,左图theta2与theta1的量级相差太大,这样导致Cost Function的等高图为一个细高的椭圆形状,可以看到

CheeseZH: Stanford University: Machine Learning Ex1:Linear Regression

(1) How to comput the Cost function in Univirate/Multivariate Linear Regression; (2) How to comput the Batch Gradient Descent function in Univirate/Multivariate Linear Regression; (3) How to scale features by mean value and standard deviation; (4) Ho

Machine Learning - IV. Linear Regression with Multiple Variables (Week 2)

http://blog.csdn.net/pipisorry/article/details/43529845 机器学习Machine Learning - Andrew NG courses学习笔记 multivariate linear regression多变量线性规划 (linear regression works with multiple variables or with multiple features) Multiple Features(variables)多特征(变量)

【Course】Machine learning:Week 2-Lecture1-Gradient Descent For Multiple Variables

Gradient Descent For Multiple Variables 问题提出:Week2的梯度下降问题由单一变量转变成了多变量: 相应的公式如下: 梯度下降算法 \[ \begin{array}{l}{\text { repeat until convergence: }\{} \\ {\theta_{j}:=\theta_{j}-\alpha \frac{1}{m} \sum_{i=1}^{m}\left(h \theta\left(x^{(i)}\right)-y^{(i)}\r

【MATLAB】Machine Learning (Coursera Courses Outline &amp; Schedule)

课程涉及技术: 梯度下降.线性回归.监督/非监督学习.分类/逻辑回归.正则化.神经网络.梯度检验/数值计算.模型选择/诊断.学习曲线.评估度量.SVM.K-Means聚类.PCA.Map Reduce & Data Parallelism 等- 课程涉及应用: 邮件分类.肿瘤诊断.手写识别.自动驾驶.模型优化.OCR等- Coursera machine learning course materials, including problem sets and my solutions (usi

【coursera笔记】Machine Learning(Week6)

发现自己不写总结真是件很恶劣的事情,好多学的东西没有自己总结都忘记了.所以决定从今天开始,学东西的时候一定跟上总结. 我写的东西大多数是自己通俗的总结,不太喜欢写严格的定义或者证明,写了也记不住,欢迎指正. 1. High Bias vs. High Variance High Bias:通常是因为模型过于简单,使得不能成功拟合数据.比如说一些有二次曲线特性的数据,如果用一次直线去拟合就会出现这个问题,所以它对应了Underfitting问题.另外,从泛化角度来说,这样的模型泛化程度更高. Hi

【PPT详解】曹欢欢:今日头条算法原理

[PPT详解]曹欢欢:今日头条算法原理 悟空智能科技 4月8日 公众号后台回复:"区块链",获取区块链报告 公众号后台回复:"sq",进入区块链分享社群 热文推荐: 1000位专家推荐,20本区块链必读书籍(附PDF) 中国首个区块链标准<区块链参考架构>发布 今天,算法分发已经是信息平台.搜索引擎.浏览器.社交软件等几乎所有软件的标配,但同时,算法也开始面临质疑.挑战和误解.今日头条的推荐算法,从2012年9月第一版开发运行至今,已经经过四次大的调整和