Machine Learning by Andrew Ng 学习笔记(2)
Linear regression with one variable 单变量线性回归
假设你有个盆友要卖房子,你现在知道一些房子的面积和价钱,要帮你朋友预测他的房子能卖多少钱;
这个问题如何解决呢?
这个问题属于机器学习中的监督学习中的预测问题.这个问题的模型是:
traning set –> algrithm –> hypothese function
其中 hypothese function 就是 一个拟合函数,通过训练不断的调整它的参数,从而用它来逼近训练集的真实值 features –> hypothese function –> predicitons
线性回归的概念
在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合.
回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。
拟合的概念
所谓拟合是指已知某函数的若干离散函数值{f1,f2,…,fn},通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别(最小二乘意义)最小。如果待定函数是线性,就叫线性拟合或者线性回归(主要在统计中),否则叫作非线性拟合或者非线性回归。表达式也可以是分段函数,这种情况下叫作样条拟合。
一组观测结果的数字统计与相应数值组的吻合。形象的说,拟合就是把平面上一系列的点,用一条光滑的曲线连接起来。因为这条曲线有无数种可能,从而有各种拟合方法。拟合的曲线一般可以用函数表示。根据这个函数的不同有不同的拟合名字。
在这个例子中 只有一个自变量就是 房屋面积size, 只有一个因变量是房屋的价钱 price,所以这是一元线性回归问题.
假设 拟合方程为:
$$ h_θ(x) = θ_0+θ_1x $$
#####现在要做的就是训练这个方程,即调整该方程中的待定系数 $θ_0$,$θ_1$,使得该函数的函数值与已知点集的差别最小.
那么如何表示这个差别 呢? 这里用一种方法叫 “最小二乘法“
来表达这个差别,下面这个方程叫做 Cost Function:
$$ J(\theta_0,\theta1) = \frac{1}{2m}\sum{i=1}^{m}(h_\theta(x^i)-y^i)^2 $$
现在就是要求上面方程的最小值,minimise $J(\theta_0,\theta_1)$ is our goal!
当该方程最小时,h(x)和已知点集的差别最小.
怎样求得 J(θ) 的最小值呢,这里我们用到一个算法 梯度下降 算法:
梯度下降算法简介
Gradient Desent 梯度下降方法 : 可用来最小化很多函数
方法大略为:1. Start with some $\theta_0,\theta_1$ (we can say $θ_0$ = 0 $θ_1$ = 0) 2. Keep changing ** $θ_0,θ_1$ ** to reduce J($\theta_0,\theta_1$) untill we hopefully end up at a minimum.
Gradient Desent Algorthm:
repeat untill convergence{
$$
\theta_j := \theta_j - \alpha \frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1)
$$
// for(j=0;j<=1;++j)
// 这里要注意 θ_0 和 θ_1 要同步更新
}
其中 $\alpha$ 叫做 学习速率( learning rate) .相当于 梯度下降的速率(即每一步减少多少)也就是步长(foot step length)
而 $\frac{\partial}{\partial \theta}J(\theta_0,\theta_1)$ 是該costfunction的斜率,乘以$\alpha$就是$\theta_i$每次减少的值.
可见 $\alpha$的选择很重要
$\alpha$太大会让$\theta_i$每次减少太多从而永远到不了最低点.
$\alpha$ 太小会让$\theta_i$每次减少的太少从而下降速度太慢.
梯度下降会趋向于一个局部极小值,即使学习速率是固定的.
因为当靠近极小值时,斜率 $\frac{\partial}{\partial \theta}J(\theta_0,\theta_1)$会变小, gradient descent会自动的take smaller steps,所以不必改变$\alpha$的值
有了gradient descent ,我们就能用他来求线性回归了.
用梯度下降法求cost function 的最小值
$$
J(\theta_0,\theta1) = \frac{1}{2m}\sum{i=1}^{m}(h\theta(x^i)-y^i)^2
$$
$$
hθ(x) = θ_0+θ_1x
$$
核心是求出 $\frac{\partial}{\partial \theta_0} J(\theta_0,\theta_1)$ 和 $\frac{\partial}{\partial \theta_1} J(\theta_0,\theta_1)$
$$
\frac{\partial}{\partial \theta_0} J(\theta_0,\theta_1)=\frac{\partial}{\partial \theta0} (\frac{1}{2m} \sum{i=1}^m(\theta_0+\theta1x-y^i)^2)\
=\frac{1}{m}\sum{i=1}^m(\theta_0+\theta_1x-y^i)
$$
$$
\frac{\partial}{\partial \theta_1} J(\theta_0,\theta_1)=\frac{\partial}{\partial \theta1} (\frac{1}{2m} \sum{i=1}^m(\theta_0+\theta1x-y^i)^2)\
=\frac{1}{m}\sum{i=1}^m(\theta_0+\theta_1x-y^i)x_i
$$
于是代入算法:
repeat untill convergence($\theta不再改变$) {
$$
temp_1:= \theta0-\alpha\frac{1}{m}\sum{i=1}^m(\theta_0+\theta_1x-y^i)\
temp_2:= \theta1 -\alpha\frac{1}{m}\sum{i=1}^m(\theta_0+\theta_1x-y^i)x_i\
\theta_0 := temp_1\
\theta_1 := temp_2
$$
//这两个要同步更新(用temp存起来然后更新)
}
这样当$\theta不再改变$时就跳出循环我们就的到了$$ h_θ(x) = θ_0+θ_1x $$这个拟合函数,就可以用它来预测房价了,这个过程就是
通过调整该函数中若干待定系数f(λ1, λ2,…,λn),使得该函数与已知点集的差别(最小二乘意义)最小
上面这种梯度下降叫做 Batch gradient descent
“batch”: Each step of gradient descent uses all the training examples.
上面这种梯度下降批处理梯度下降,因为每一步都用到了所有训练数据.
下一节将 多变量线性回归