一、梯度下降法
- 概述
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。梯度下降法是一个最优化算法,常用于机器学习和人工智能当中用来递归性地逼近最小偏差模型。梯度下降法的计算过程就是沿梯度下降的方向求解极小值.
- 梯度下降的相关概念
1.步长):步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度。用上面下山的例子,步长就是在当前这一步所在位置沿着最陡峭最易下山的位置走的那一步的长度。
2.特征):指的是样本中输入部分,比如2个单特征的样本(x(0),y(0)),(x(1),y(1)),则第一个样本特征为x(0),第一个样本输出为y(0)。
3.梯度:在数学上,梯度是多变量微分的一般化,梯度是一个向量,向量包括大小和方向,所以梯度的方向就指出了函数在给定点的上升最快的方向,而梯度的反方向就是函数在给定点下降最快的方向。
4.假设函数:在监督学习中,为了拟合输入样本,而使用的假设函数,记为hθ(x)。比如对于单个特征的m个样本(x(i),y(i))(i=1,2,…m),可以采用拟合函数如下: hθ(x)=θ0+θ1x。
5.损失函数:为了评估模型拟合的好坏,通常用损失函数来度量拟合的程度。损失函数极小化,意味着拟合程度最好,对应的模型参数即为最优参数。在线性回归中,损失函数通常为样本输出和假设函数的差取平方。比如对于m个样本(xi,yi)(i=1,2,…m),采用线性回归,损失函数为: J(θ0,θ1)=∑i=1m(hθ(xi)−yi)2
- 求解步骤
参考文章:
梯度下降(Gradient Descent)小结
梯度下降
机器学习算法:梯度下降法——原理篇
二、梯度下降法求解极值
题目如下:
1. 手工求解
2. Excel求解
∂z/∂x=4∗(x−1)
∂z/∂y=2y
Δx=η *(∂z/∂x)
Δy=η *(∂z/∂y)
z=2(x-1)^2 + y^2
三、线性回归问题求解
1.最小二乘法
代码如下
from sklearn import linear_model
#可以调用sklearn中的linear_model模块进行线性回归
import seaborn as sns
# 定义数据集的大小 即20个数据点
m = 20
# x的坐标以及对应的矩阵
X0 = ones((m, 1)) # 生成一个m行1列的向量,其值全是1
X1 = arange(1, m+1).reshape(m, 1) # 生成一个m行1列的向量,也就是x1,从1到m
X = hstack((X0, X1)) # 按照列堆叠形成数组,其实就是样本数据
# 对应的y坐标
Y = np.array([
3, 4, 5, 5, 2, 4, 7, 8, 11,