1.概述
如 下图,我门已知一些正确的数据:对于房子的大小和对应的价格,我们用图表来表示(画×的地方表示一个数据)我们怎么用一条直线来表示该分布?
我们都知道直线的的方程为 f(x)=a*x+b,关键就是怎么样得出这个方程的假设,然后对应我们的一个输入(比如房子的大小),输出对应的结果(房子的售价)
2.代价函数(Cost Funtion)
对于我们假设的方程 h(x)=θ1*x+θ0 (其实就是直线方程的一般形式),我们怎么找出 θ0,θ1,舍得代价函数(看下图)最小? x^i 表示第几个训练集数据,m是训练集大小
我们想找一个直线模型用来拟合我们的数据,选择不同的θ0,θ1会得到不同的拟合。我们的目标就是找出代价函数的最小值。其对应的参数则可以成为我们建立假设函数的参数
如果有三维图形来表示的话,代价函数类似下图:
3.梯度下降(Gradient Descent)
梯度下降是很常用的算法,不仅是线性回归,其他机器学习领域中也得到广泛应用。
对于已有的一个函数 J(θ0,θ1,....,,) 我们想找出 minJ(θ0,θ1,....,,),就可以用到梯度下降算法,简化起见,我们就用2个参数
算法的思想是:
1.给定参数的初始值
2.通过不断改变参数值,使代价方程的值不断减小,知道我们找到最小值或者说是局部最小值
可以想象成我们在一个丘陵地段,我们怎么找到附近最低的地方? 我们可以一直朝下坡的地方前行,直到我们走到一个周围都比现在的位置高的地方就停下。
数学的定义为:通过不断的计算θ0和θ1的值,直到收敛。
α表示学习速率,可以理解为我们下坡时候的步子迈多大,如果α太小,可能导致梯度下降的速率慢,或者说计算的次数多,太大可能会错过最小值,甚至不能收敛。
α后面那个式子是偏导数,随着越来越最小值,该值会越来越小(在二维空间可以理解为某点切点的斜率)
:=表示赋值语句
这里需要同步更新,而不是计算了θ0,就赋值,然后用新的θ0去计算θ1
4.在线性回归问题中使用梯度下降
得出结果:
5.多元线性回归
上面的例子房子的价格例子中,只用了一个特征,即房子的大小,如果我们再加入3个特征,房子卧室数目,层数,房子使用了多久,这样就有多个特征值,这样用一个数来表示就不行了,就必须使用矩阵(特征向量)。如下图:
那用假设函数怎么用矩阵表示多个特征呢,如下图
6.多元线性回归梯度下降
6.1 梯度下降的缩放
6.2 收敛判断
6.3 学习速率α
7.多元线性回归的正规方程解法
7.1 正规方程解法(Normal Equation)