有监督学习分为回归和分类:
- **回归:**通过数据最终预测出来一个值(例如,去银行贷款,银行根据你的年龄与工资预测出可以给你贷款多少钱)
- **分类:**通过数据最终预测出来类别(例如,去银行贷款,银行根据你的年龄与工资判断能否给你贷款)
而线性回归是找到最合适的一条线(想象一个高维)来最好的拟合数据点。
举个例子,现有贷款人工资与年龄数据,还有与之对应的银行贷款金额,需要预测银行会贷款给自己多少钱。
工资 | 年龄 | 额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
我们可以把问题抽象成如何找到最合适的一条线来最好的拟合数据点,如下图, X 1 , X 2 X_1,X_2 X1,X2是两个特征(工资与年龄), Y Y Y是银行的贷款额度。
假设 θ 1 \theta_1 θ1是年龄参数, θ 2 \theta_2 θ2是工资参数,则拟合的平面可以表示为:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(x)=\theta_0 + \theta_1x_1+\theta_2x_2 hθ(x)=θ0+θ1x1+θ2x2
其中 θ 0 \theta_0 θ0是偏置项,为了便于计算,通常将其整合成矩阵形式,添加一列 x 0 x_0 x0属性,全部置为1,使得等式成立:
h θ ( x ) = ∑ i = 0 n θ i x i = θ T x h_\theta(x) =\sum_{i=0} ^ {n} \theta_ix_i = \theta^Tx hθ(x)=i=0∑nθixi=θTx
平面的表达式有了,但是我们不能保证每一个数据点都在这个平面上吧,所以真实值和预测值之间肯定是要存在差异的(用 ε \varepsilon ε来表示误差),对每一个样本就存在:
y ( i ) = θ T x ( i ) + ε ( i ) y^{(i)}=\theta^Tx^{(i)}+\varepsilon^{(i)} y(i)=θTx(i)+ε(i)
【假设】每一个样本的误差 ε ( i ) \varepsilon^{(i)} ε(i)都是独立并且具有相同的分布,并且服从均值为0方差为 θ 2 \theta^2 θ2的高斯分布
解释
-
独立:张三和李四一起来贷款,他俩没关系
-
同分布:他俩都来的是相同的一家银行
-
高斯分布:银行可能会多给,也可能会少给,但是绝大多数情况这个浮动不会太大,极小情况下浮动会比较大,符合正常情况
由于误差服从均值为0的高斯分布,可得公式:
p ( ε ( i ) ) = 1 2 π σ e x p ( − ( ε ( i ) ) 2 2 σ 2 ) p(\varepsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(\varepsilon^{(i)})^2}{2\sigma^2}) p(ε(i))=2πσ1exp(−2σ2(ε(i))2)
将 y ( i ) = θ T x ( i ) + ε ( i ) y^{(i)}=\theta^Tx^{(i)}+\varepsilon^{(i)} y(i)=θTx(i)+ε(i) 带入此公式可得:
p ( y ( i ) ∣ x ( i ) ; θ ) = 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) p(y(i)∣x(i);θ)=2πσ1exp(−2σ2(y(i)−θTx(i))2)
**似然函数:**根据样本估计参数值,什么样的参数跟我们的数据组合后成为真实值的可能性最大,预测值成为真实值的概率越大越好。
L ( θ ) = ∏ i = 1 m p ( y ( i ) ∣ x ( i ) ; θ ) = ∏ i = 1 m 1 2 π σ e x p ( − ( y ( i ) − θ T x ( i ) ) 2 2 σ 2 ) L(\theta)=\prod_ {i=1}^m p(y^{(i)}|x^{(i)};\theta) = \prod_ {i=1}^m \frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}) L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2πσ1exp(−2σ2(y(i)−θTx(i))2)
似然函数中的乘法难解,所以将其转换为对数似然,变成加法更容易解出。
KaTeX parse error: No such environment: align* at position 7: \begin{̲a̲l̲i̲g̲n̲*̲}̲ log L(\theta) …
我们的目标是让似然函数越大越好,上式中,被减数是恒正的,所以要让减数越小越好,可得目标函数(最小二乘法):
KaTeX parse error: No such environment: align* at position 7: \begin{̲a̲l̲i̲g̲n̲*̲}̲ J(\theta)&=\fr…
现在的任务是让目标函数越小越好,那么 θ \theta θ取什么的时候目标函数最小呢? θ \theta θ应该是极小值或最小值点,所以对目标函数进行求偏导,使偏导等于0。那为什么一定是极小值点呢,这涉及到凸优化的概念,普遍认为我们的函数都是凸函数。
\begin{align*}
\nabla_\Theta J(\Theta)&=\nabla_\Theta\lgroup\frac{1}{2}(X\theta -y)^T(X\theta -y)\rgroup
=\nabla_\Theta\lgroup\frac{1}{2}(\thetaTXT)(X\theta -y)\rgroup \
&=\nabla_\Theta\lgroup\frac{1}{2}(\thetaTXTX\theta-\thetaTXTy-yTX\theta+yTy)(X\theta -y)\rgroup \
&=\frac{1}{2}(2XTX\theta-XTy-(yTX)T)\&=XTX\theta-XTy
\end{align*}
另偏导为零,可得下面的公式,这时基于数据可以计算出 θ \theta θ值。
θ = ( X T X ) − 1 X T y \theta = (X^TX)^{-1}X^Ty θ=(XTX)−1XTy
评估方法
最常用的评估项 R 2 R^2 R2:
1 − ∑ i = 1 m ( y i ^ − y i ) 2 ∑ i = 1 m ( y i − y ˉ ) 2 1-\frac{\sum_{i=1}^{m}(\hat{y_i}-y_i)^2}{\sum_{i=1}^{m}(y_i-\bar{y})^2} 1−∑i=1m(yi−yˉ)2∑i=1m(yi^−yi)2
分子为残差平方和,分母为类似方差项, R 2 R^2 R2的取值越接近于1模型拟合的越好