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

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

本文会讲到:

(1)线性回归的定义

(2)单变量线性回归

(3)cost function:评价线性回归是否拟合训练集的方法

(4)梯度下降:解决线性回归的方法之一

(5)feature scaling:加快梯度下降执行速度的方法

(6)多变量线性回归

 

Linear Regression

注意一句话:多变量线性回归之前必须要Feature Scaling!

方法:线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可;

注意:

(1)因为是线性回归,所以学习到的函数为线性函数,即直线函数;

(2)因为是单变量,因此只有一个x;

我们能够给出单变量线性回归的模型:

我们常称x为feature,h(x)为hypothesis;

从上面“方法”中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?

我们需要使用到Cost Function(代价函数),代价函数越小,说明线性回归地越好(和训练集拟合地越好),当然最小就是0,即完全拟合;


举个实际的例子:

我们想要根据房子的大小,预测房子的价格,给定如下数据集:

根据以上的数据集画在图上,如下图所示:

我们需要根据这些点拟合出一条直线,使得cost Function最小;

虽然我们现在还不知道Cost Function内部到底是什么样的,但是我们的目标是:给定输入向量x,输出向量y,theta向量,输出Cost值;

以上我们对单变量线性回归的大致过程进行了描述;

Cost Function

Cost Function的用途:对假设的函数进行评价,cost function越小的函数,说明拟合训练数据拟合的越好;

下图详细说明了当cost function为黑盒的时候,cost function 的作用;

但是我们肯定想知道cost Function的内部构造是什么?因此我们下面给出公式:

其中:

表示向量x中的第i个元素;

表示向量y中的第i个元素;

表示已知的假设函数;

m为训练集的数量;


比如给定数据集(1,1)、(2,2)、(3,3)
则x = [1;2;3],y = [1;2;3]     (此处的语法为Octave语言的语法,表示3*1的矩阵)
如果我们预测theta0 = 0,theta1 = 1,则h(x) = x,则cost function:
J(0,1) = 1/(2*3) * [(h(1)-1)^2+(h(2)-2)^2+(h(3)-3)^2] = 0;
如果我们预测theta0 = 0,theta1 = 0.5,则h(x) = 0.5x,则cost function:
J(0,0.5) = 1/(2*3) * [(h(1)-1)^2+(h(2)-2)^2+(h(3)-3)^2] = 0.58;

如果theta0 一直为 0, 则theta1与J的函数为:

如果有theta0与theta1都不固定,则theta0、theta1、J 的函数为:

当然我们也能够用二维的图来表示,即等高线图;

注意:如果是线性回归,则costfunctionJ与的函数一定是碗状的,即只有一个最小点;

以上我们讲解了cost function 的定义、公式;

Gradient Descent(梯度下降)

但是又一个问题引出了,虽然给定一个函数,我们能够根据cost function知道这个函数拟合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?

因此我们引出了梯度下降:能够找出cost function函数的最小值;

梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;

当然解决问题的方法有很多,梯度下降只是其中一个,还有一种方法叫Normal Equation;

方法

(1)先确定向下一步的步伐大小,我们称为Learning rate;

(2)任意给定一个初始值:;

(3)确定一个向下的方向,并向下走预先规定的步伐,并更新;

(4)当下降的高度小于某个定义的值,则停止下降;

算法

特点

(1)初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;

(2)越接近最小值时,下降速度越慢;

问题:如果初始值就在local minimum的位置,则会如何变化?

答:因为已经在local minimum位置,所以derivative 肯定是0,因此不会变化;

如果取到一个正确的值,则cost function应该越来越小;

问题:怎么取值?

答:随时观察值,如果cost function变小了,则ok,反之,则再取一个更小的值;

下图就详细的说明了梯度下降的过程:

从上面的图可以看出:初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;

注意:下降的步伐大小非常重要,因为如果太小,则找到函数最小值的速度就很慢,如果太大,则可能会出现overshoot the minimum的现象;

下图就是overshoot minimum现象:

如果Learning rate取值后发现J function 增长了,则需要减小Learning rate的值;

Integrating with Gradient Descent & Linear Regression

梯度下降能够求出一个函数的最小值;

线性回归需要求出,使得cost function的最小;

因此我们能够对cost function运用梯度下降,即将梯度下降和线性回归进行整合,如下图所示:

梯度下降是通过不停的迭代,而我们比较关注迭代的次数,因为这关系到梯度下降的执行速度,为了减少迭代次数,因此引入了Feature Scaling;

Feature Scaling

此种方法应用于梯度下降,为了加快梯度下降的执行速度

思想:将各个feature的值标准化,使得取值范围大致都在-1<=x<=1之间;

常用的方法是Mean Normalization,即

或者:

[X-mean(X)]/std(X);


举个实际的例子,

有两个Feature:

(1)size,取值范围0~2000;

(2)#bedroom,取值范围0~5;

则通过feature scaling后,

练习题

我们想要通过期中开始成绩预测期末考试成绩,我们希望得到的方程为:

给定以下训练集:

midterm exam (midterm exam)2 final exam
89 7921 96
72 5184 74
94 8836 87
69 4761 78

我们想对(midterm exam)^2进行feature scaling,则经过feature scaling后的值为多少?

max = 8836,min=4761,mean=6675.5,则x=(4761-6675.5)/(8836-4761) = -0.47;

多变量线性回归

前面我们只介绍了单变量的线性回归,即只有一个输入变量,现实世界不可能这么简单,因此此处我们要介绍多变量的线性回归;

举个例子:

房价其实由很多因素决定,比如size、number of bedrooms、number of floors、age of home等,这里我们假设房价由4个因素决定,如下图所示:

我们前面定义过单变量线性回归的模型:

这里我们可以定义出多变量线性回归的模型:

Cost function如下:

如果我们要用梯度下降解决多变量的线性回归,则我们还是可以用传统的梯度下降算法进行计算:

总练习题:

 

1.我们想要根据一个学生第一年的成绩预测第二年的成绩,x为第一年得到A的数量,y为第二年得到A的数量,给定以下数据集:

x y
3 4
2 1
4 3
0 1

(1)训练集的个数是多少?  4个;

(2)J(0,1)的结果是多少?

J(0,1) = 1/(2*4)*[(3-4)^2+(2-1)^2+(4-3)^2+(0-1)^2] = 1/8*(1+1+1+1) = 1/2 = 0.5;

我们也可以通过vectorization的方法快速算出J(0,1):

时间: 2024-12-24 11:04:58

机器学习入门:线性回归及梯度下降的相关文章

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

线性回归 即线性拟合,给定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相应价格.如今想

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

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

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

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

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

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

Andrew Ng机器学习入门——线性回归

本人从2017年起,开始涉猎机器学习.作为入门,首先学习的是斯坦福大学Andrew Ng(吴恩达)教授的Coursera课程 2 单变量线性回归 线性回归属于监督学习(Supervise Learning),就是Right answer is given. 课程中,举了一个估计房产价格的例子,在此,我就直接使用两组数据去作为例子使用线性回归,拟合出效果最好的曲线. 2.1 单变量线性回归算法的思路 根据数据的分布,确定模型其中,h(x)是假设函数(Hypothesis Fuction),θ1和θ

机器学习-监督学习应用:梯度下降

回归与梯度下降: 回归在数学上来说是给定一个点集,能够用一条曲线去拟合之,如果这个曲线是一条直线,那就被称为线性回归,如果曲线是一条二次曲线,就被称为二次回归,回归还有很多的变种,如locally weighted回归,logistic回归,等等,这个将在后面去讲. 用一个很简单的例子来说明回归,这个例子来自很多的地方,也在很多的open source的软件中看到,比如说weka.大概就是,做一个房屋价值的评估系统,一个房屋的价值来自很多地方,比如说面积.房间的数量(几室几厅).地 段.朝向等等

线性回归和梯度下降代码demo

线性回归 决定系数越接近一那么预测效果越好 对于多元线性回归和一元线性回归推导理论是一致的,只不过参数是多个参数而已 梯度下降 梯度下降法存在局部最小值 太小迭代次数多,太大将无法迭代到最优质 梯度下降发容易到达局部最小值 凸函数使用局部下降法一定可以到全部最小值,所以不存在局部最小值才可以 下面两个demo是一元函数的拟合 1使用梯度下降法的数学公式进行的机器学习代码 1 import numpy as np 2 from matplotlib import pyplot as plt 3 #

线性回归的梯度下降和正规方程组求解

1 # coding:utf-8 2 import matplotlib.pyplot as plt 3 import numpy as np 4 5 def dataN(length): 6 x = np.zeros(shape = (length,2)) 7 y = np.zeros(shape = length) 8 for i in range(0,length): 9 x[i][0] = 1 10 x[i][1] = i 11 y[i] = (i + 25) + np.random.u