赞
踩
线性回归主要处理以连续型特征为主的数据集,线性回归函数为f(X) = bX+a,对于损失函数的建立主要使用的是最小二乘法,使用梯度下降法拟合线性模型,基本原理如下:
函数模型(model):
假设有训练数据
我们写成矩阵的形式为;
对于损失函数(cost)
现在我们需要根据给定的X求解W的值,这里采用最小二乘法, 何为最小二乘法,其实很简单。我们有很多的给定点,这时候我们需要找出一条线去拟合它,那么我先假设这个线的方程,然后把数据点代入假设的方程得到观测值,求使得实际值与观测值相减的平方和最小的参数。对变量求偏导联立便可求。
因此损失代价函数为:
梯度下降算法求解:
现在我们的目的就是求解出一个使得代价函数最小的W:
a.矩阵满秩可求解时(求导等于0)
b.矩阵不满秩时(梯度下降):
梯度下降算法是一种求局部最优解的方法,对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向,具体参考wikipedia。 原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;注意:当变量之间大小相差很大时,应该先将他们做处理,使得他们的值在同一个范围,这样比较准确。
1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。描述一下梯度减少的过程,对于我们的函数J(θ)求偏导J;
假设有数据集D时:
对损失函数求偏导如下:
使用矩阵表示(方便计算)
基本上每个模型都会有一个对应的目标函数,可以通过不同的最优化求解方法(梯度下降)对这些对应的目标函数进行求解。线性回归模型,我们知道实际上是通过多个自变量对自变量进行曲线拟合。我们希望找到一条可以较好拟合的曲线。
代码实现如下
1、首先使用线性回归算法最小二乘法实现预测
导入需要的python库
import numpy as np
import pandas as pd
import pylab
建立computer_error函数,构造误差函数 ∑_(i=1)^n▒〖(y-f(x))^2〗 使用最小二乘法求所有样本的离差值。代码如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。