线性回归

线性回归

回归和分类: 两者都是通过一堆数据训练模型,如果数据是连续性的则是回归问题,如果数据是离散性的则是分类问题。

回归: 通过一堆点,找一条尽可能再所有点中间的线

线性: 直线 (y=ax+b,参数: a和b)
\(y= \theta_1x_1 + \theta_2x_2+...+\theta_nx_n=\theta^Tx\)

线性回归: 通过图像上的散点,找一条尽可能在所有点中间的直线方程来拟合数据,以达到预测未来的趋势的目的。
直线的位置由参数决定,所有找直线的过程也就是“求参数”的过程。

学习方式: 使真实值和预测值距离最小(损失最小)。使用梯度下降法使损失函数值达到最小,即损失函数收敛了,目标直线就求出来了。

误差

误差\(\epsilon^{(i)}\)服从独立同分布,并且服从均值为0方差位\(\theta^2\)的高斯分布。
高斯分布: 又称正态分布,测量误差总是在真值附近分布,距离真值越远,观测事例就越稀少。

误差计算:

  • 预测值与误差: \(y^{(i)}=\theta^Tx^{(i)}+\epsilon^{(i)}\) ,其中\(\epsilon\) 是误差

  • 由于误差服从高斯分布: \(p(\epsilon^{(i)})=\frac{1}{\sqrt{2\pi}\epsilon}exp(-\frac{(\epsilon^{(i)}-\mu)^2}{2\epsilon^2})\)
    -将(1)式带入(2)式: \(p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\epsilon}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)}-\mu)^2}{2\epsilon^2})\)

  • 似然函数: $L(\theta)=\Pi_{i=1}{m}\frac{1}{\sqrt{2\pi}\epsilon}exp(-\frac{(y-\thetaTx-\mu)2}{2\epsilon2}) $
    解释:什么样的参数跟我们的数据组合后恰好是真实值 => 求极值点。

  • 对数似然: $log(L(\theta))=log \Pi_{i=1}{m}\frac{1}{\sqrt{2\pi}\epsilon}exp(-\frac{(y-\thetaTx-\mu)2}{2\epsilon2}) $
    解释:乘法难解,加法就容易了,对数里面乘法可以转换成加法。

  • 展开简化: \(\Sigma_{i=1}^m log\frac{1}{\sqrt{2\pi}\epsilon}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)}-\mu)^2}{2\epsilon^2})=m log \frac{1}{\sqrt{2\pi}\epsilon}-\frac{1}{\epsilon^2} \cdot \frac{1}{2}\Sigma_{i=1}^m(y^{(i)}-\theta^Tx^{(i)}-\mu)^2\)

  • 目标: 让似然函数(对数变换后也一样)越大越好, 则\(J(\theta\)越小越好
    \(J(\theta)=\frac{1}{2}\Sigma_{i=1}^m(y^{(i)}-\theta^Tx^{(i)}-\mu)^2\)
    (最小二乘法)

  • 目标函数: \(J(\theta)=\frac{1}{2}\Sigma_{i=1}^m(h_\theta(x^{(i)})-\theta^Tx^{(i)}-\mu)^2 = \frac{1}{2}(X\theta-y)^T(X\theta -y)\)(矩阵平方项=转置乘自身)

  • 求偏导:

\(d_\theta J(\theta)=d_\theta(\frac{1}{2}(X\theta-y)^T(X\theta-y))\)

\(=d_\theta(\frac{1}{2}(\theta^TX^T-y^T)(X\theta-y))\)

\(=d_\theta(\frac{1}{2}(\theta^TX^TX\theta-\theta^TX^Ty-yTX\theta + y^Ty))\)

\(=\frac{1}{2}(2X^TX\theta -XTy-(y^TX)^T)=X^TX\theta=X^Ty\)

  • 偏导=0: \(\theta=(X^TX)^{-1}X^Ty\)

梯度下降

当我们得到了一个目标函数后,如何进行求解?

常规套路: 机器学习的套路就是我给机器一堆数据,然后告诉机器什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做。

如何优化: 可以理解为下山的过程,每一步都沿着切线的方向下降是最快的,即沿着梯度下降。但如果步子太大,按照切线方向移动就会脱离目标函数太远,所以需要小步,每走一步求一个梯度前进一步,每次优化一点点,直到损失值不会再大幅度变化为之。

posted @ 2022-11-12 14:55  沐沐mu  阅读(23)  评论(0编辑  收藏  举报