监督学习的线性回归算法

假设(基于二维)

训练集
[1x11x1n1x21x2n1xm1xmn][θ0θ1θn]=[y1y2yn] \begin{bmatrix} 1&x_{11}&{\cdots}&x_{1n}\\ 1&x_{21}&{\cdots}&x_{2n}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ 1&x_{m1}&{\cdots}&x_{mn}\\ \end{bmatrix}* \begin{bmatrix} \theta_{0}\\ \theta_{1}\\ {\vdots}\\ \theta_{n}\\ \end{bmatrix}= \begin{bmatrix} y_{1}\\ y_{2}\\ {\vdots}\\ y_{n}\\ \end{bmatrix}
表达式
hθ(x)=θ0+θ1x1+...+θnxn...xh_\theta(x)=\theta_0+\theta_1x_1+...+\theta_nx_n...x为向量

定义代价函数

Jθ(θ0,θ1,θ2,...,θn)=12mi=1m(hθ(xi)y(xi))2J_\theta(\theta_0,\theta_1,\theta_2,...,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}({h_\theta(x^i)-y(x^i)})^2

梯度下降法

minθ0...θnJ(θ0,θ1,θ2,...,θn)min_{\theta_0...\theta_n}J(\theta_0,\theta_1,\theta_2,...,\theta_n)
θj=θjαθjJ(θ0,θ1,θ2,...,θn)...α\theta_j=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,\theta_2,...,\theta_n)...\alpha为学习率


θjJ(θ0,θ1,θ2,...,θn)=1mi=1m(hθ(xi)y(xi))xi\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,\theta_2,...,\theta_n)=\frac{1}{m}\sum_{i=1}^{m}({h_\theta(x^i)-y(x^i)})x^i
带入得
θj=θjα1mi=1m(hθ(xi)y(xi))xi\theta_j=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}({h_\theta(x^i)-y(x^i)})x^i

梯度下降法实现

定义精度为P
θjnθjn1<=P当\theta_j^n-\theta_j^{n-1}<=P时递归停止
初始化
(θ0,θ1,θ2,...,θn)(0,0,0,...,0)(\theta_0,\theta_1,\theta_2,...,\theta_n)为(0,0,0,...,0)或者其他
执行递归
θjJ(θ)\theta_j一步一步变化直到达到J(\theta)最小值
为什么可以实现?
监督学习的线性回归算法
该图为取(θ0...θj1,θj+1...θn)J(θ)(\theta_0...\theta_{j-1},\theta_{j+1}...\theta_n)为固定值时J(\theta)的切片

θj=x1θjJ(θ)<0θjhP\theta_j=x_1时\frac{\partial}{\partial\theta_j}J(\theta)<0故\theta_j增加逐渐靠近h,同时精度P决定递归是否停止
θj=x2\theta_j=x_2时同理

学习率α\alpha

过大导致可能不收敛
监督学习的线性回归算法
过小导致收敛太慢
故多次实验,取合适的α\alpha
α=[0.0010.010.1110]\alpha=\begin{bmatrix}0.001&0.01&0.1&1&10\\\end{bmatrix}

特征缩放

[x1ix2ixni]=[100010011020]>1000[1.0001.0011.020]\begin{bmatrix}x_{1i}\\x_{2i}\\{\vdots}\\x_{ni}\\\end{bmatrix}=\begin{bmatrix}1000\\1001\\{\vdots}\\1020\\\end{bmatrix}->1000*\begin{bmatrix}1.000\\1.001\\{\vdots}\\1.020\\\end{bmatrix}

hθ=θ0+θ1x12+θ1x23+...h_\theta=\theta_0+\theta_1x_1^2+\theta_1x_2^3+...

可令x12=t1,x23=t2...x_1^2=t_1,x_2^3=t_2... 即可实现

正则方程实现

θ=(XTX)1XTY...(XTXX1X)\theta=(X^TX)^{-1}X^TY...(X^T为X的转置,X^{-1}为X的逆)

相关文章:

  • 2021-12-15
  • 2021-05-10
  • 2022-01-03
  • 2021-08-28
  • 2021-08-31
  • 2021-12-27
  • 2021-10-12
  • 2021-09-20
猜你喜欢
  • 2021-04-12
  • 2021-11-30
  • 2021-07-26
  • 2022-12-23
  • 2021-07-06
  • 2021-12-13
  • 2021-07-07
相关资源
相似解决方案