线性回归
线性回归
回归和分类: 两者都是通过一堆数据训练模型,如果数据是连续性的则是回归问题,如果数据是离散性的则是分类问题。
回归: 通过一堆点,找一条尽可能再所有点中间的线
线性: 直线 (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\)
梯度下降
当我们得到了一个目标函数后,如何进行求解?
常规套路: 机器学习的套路就是我给机器一堆数据,然后告诉机器什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做。
如何优化: 可以理解为下山的过程,每一步都沿着切线的方向下降是最快的,即沿着梯度下降。但如果步子太大,按照切线方向移动就会脱离目标函数太远,所以需要小步,每走一步求一个梯度前进一步,每次优化一点点,直到损失值不会再大幅度变化为之。