1. 举个例子
数据:工资和年龄(2个特征)
目标:预测银行可以给我贷款多少钱(标签)
考虑:工资和年龄都会影响银行贷款的结果,那么它们各自的影响有多大呢?(参数)
1.1数据
工资 | 年龄 | 贷款额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 50000 |
12000 | 40 | 85000 |
这份数据有两个特征x1:工资
和x2:年龄
,最终要预测一个具体的值y
,这就需要回归模型,而非分类算法。
目的是如何找到这个曲面函数。
1.2 假设
拟合平面,目标函数:hθ(x)=θ0+θ1x1+θ2x2h_\theta(x)=\theta_0+\theta_1x_1 +\theta_2x_2hθ(x)=θ0+θ1x1+θ2x2 这里的θ0\theta_0θ0是偏置项,也就是上下的参数浮动,θ0\theta_0θ0与数据无关,而θ1\theta_1θ1和θ2\theta_2θ2是权重参数,对最终结果产生较大的影响,偏置参数θ0\theta_0θ0对结果产生较小影响。
一般的,如果参数增多了,那么我们写做:hθ(x)=∑i=0nθixi=θTxh_\theta(x)=\sum_{i=0}^n \theta_ix_i=\theta^Txhθ(x)=∑i=0nθixi=θTx,那么这里的展开式中就会多出一个θ0x0\theta_0x_0θ0x0,我们可以在数据特征中增加一列x0x_0x0并且这一列数据的值都为111
为什么要将数据转为hθ(x)=∑i=0nθixi=θTxh_\theta(x)=\sum_{i=0}^n \theta_ix_i=\theta^Txhθ(x)=∑i=0nθixi=θTx这种形式?因为我们在计算的过程中复杂度是非常高的,而使用矩阵进行计算时非常方便的。
1.3 误差
一般情况下,真实值和预测值之间是会存在差异的(用ε\varepsilonε表示)例如上图中的红色点表示真实值,而预测值在一个平面上。
因此实际上的目标函数为公式1:y(i)=θTx(i)+ε(i)y^{(i)}=\theta^Tx^{(i)}+\varepsilon^{(i)}y(i)=θTx(i)+ε(i),每一个样本都有各自所对应的误差,每一个误差ε(i)\varepsilon^{(i)}ε(i)都是独立并且具有相同的分布,并且服从均值为0方差为θ2\theta^2θ2的高斯分布。
- 独立:张三和李四一起来贷款,他们俩之间没有关系。算法对待两个样本是公平的。
- 同分布:他俩都来的是我们假定的这家银行
- 高斯分布:银行可能会多给,也可能会少给,但是绝大多数情况下,这个浮动不会太大,极小情况下浮动会比较大,符合正常情况。
由于误差服从高斯分布公式2:p(ε(i))=12πσe−(ε(i))22σ2p(\varepsilon^{(i)})=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\varepsilon{(i)})^2}{2\sigma^2}}p(ε(i))=2πσ1e−2σ2(ε(i))2 ,这里有一个假设:均值μ=0\mu=0μ=0。
将公式1带入公式2中,得到:
p(y(i)∣x(i);θ)=12πσe−(y(i)−θTx(i))22σ2 p(y^{(i)}|x^{(i)};\theta)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}} p(y(i)∣x(i);θ)=2πσ1e−2σ2(y(i)−θTx(i))2
1.4 似然函数
似然函数式根据样本去估计参数值。
L(θ)=∏i=1mp(y(i)∣x(i);θ)=∏i=1m12πσe−(y(i)−θTx(i))22σ2
L(\theta) = \prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta) = \prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}
L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2πσ1e−2σ2(y(i)−θTx(i))2
目标也就是什么样的参数跟我们的数据组合后恰好是真实值,或者是真实值的可能性越大越好。最大似然函数和极大似然估计就是这样的方法。
1.5 对数似然
logL(θ)=log∏i=1mp(y(i)∣x(i);θ)=log∏i=1m12πσe−(y(i)−θTx(i))22σ2
\log L(\theta) =\log {\prod_{i=1}^m p(y^{(i)}|x^{(i)};\theta)} =\log { \prod_{i=1}^m \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}}
logL(θ)=logi=1∏mp(y(i)∣x(i);θ)=logi=1∏m2πσ1e−2σ2(y(i)−θTx(i))2
因为乘法难以计算,加法就容易了,对数似然就是将对数里面的乘法转化成加法。化简之后的结果:
∑i=1mlog12πσe−(y(i)−θTx(i))22σ2=mlog12πσ−1σ2⋅12⋅∑i=1m(y(i)−θTx(i))2
\begin{matrix} \sum_{i=1}^m \log { \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(y^{(i)}-\theta^Tx^{(i)})^2}{2\sigma^2}}} \end{matrix} = m\log \frac{1}{\sqrt{2\pi}\sigma} - \frac{1}{\sigma ^ 2} \cdot \frac{1}{2} \cdot \sum_{i=1}^m {(y^{(i)}-\theta^Tx^{(i)})^2}
∑i=1mlog2πσ1e−2σ2(y(i)−θTx(i))2=mlog2πσ1−σ21⋅21⋅i=1∑m(y(i)−θTx(i))2
其中 mlog12πσ>0m\log \frac{1}{\sqrt{2\pi}\sigma}>0mlog2πσ1>0,因此要让似然函数(对数变换后也一样)越大越好,那么就需要让目标函数J(θ)=12⋅∑i=1m(y(i)−θTx(i))2J(\theta)=\frac{1}{2} \cdot \sum_{i=1}^m {(y^{(i)}-\theta^Tx^{(i)})^2}J(θ)=21⋅∑i=1m(y(i)−θTx(i))2(最小二乘法)越小越好。
将公式J(θ)J(\theta)J(θ)进行展开,得到公式:
J(θ)=12⋅∑i=1m(y(i)−θTx(i))2=12(Xθ−y)T(Xθ−y)=12(θTXT−yT)(Xθ−y)=12(θTXTXθ−θTXy−yTXθ+yTy)
J(\theta)=\frac{1}{2} \cdot \sum_{i=1}^m {(y^{(i)}-\theta^Tx^{(i)})^2}=\frac{1}{2}(X\theta-y)^T(X\theta-y )=\frac{1}{2}(\theta^TX^T-y^T)(X\theta -y) =\frac{1}{2}(\theta^TX^TX\theta - \theta^TX^y-y^TX\theta+y^Ty)
J(θ)=21⋅i=1∑m(y(i)−θTx(i))2=21(Xθ−y)T(Xθ−y)=21(θTXT−yT)(Xθ−y)=21(θTXTXθ−θTXy−yTXθ+yTy)
然后对J(θ)J(\theta)J(θ)求极值,也就是对θ\thetaθ求偏导,可得:
∇θJ(θ)=∇θ(12(θTXTXθ−θTXy−yTXθ+yTy))=12(2XTXθ−XTy−(yTX)T)=XTXθ−XTy
\nabla_\theta J(\theta) = \nabla_\theta (\frac{1}{2}(\theta^TX^TX\theta - \theta^TX^y-y^TX\theta+y^Ty))=\frac{1}{2}(2X^TX\theta -X^Ty-(y^TX)^T)=X^TX\theta-X^Ty
∇θJ(θ)=∇θ(21(θTXTXθ−θTXy−yTXθ+yTy))=21(2XTXθ−XTy−(yTX)T)=XTXθ−XTy
偏导数为0:
θ=(XTX)(−1)XTy\theta=(X^TX)^{(-1)}X^Tyθ=(XTX)(−1)XTy
为什么求出的偏导是极小值点呢?
一般情况下我们认为目标函数都是凸函数,有时候要求最大值时,往往也是求极小值。
到目前为止,θ\thetaθ是可以求出一个解的,但是在很多问题上θ\thetaθ是没法进行求解的,往往是通过优化的思想进行计算,而不是简单的求解。
1.6 评估方法
目前最常用的评估的方法是R2R^2R2方法:1−∑i=1m(yi^−yi)2(残差平方和)∑i=1m(yi−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(残差平方和)
残差平方和指的是预测值和真实值的差异,R2R^2R2的取值越接近1我们认为模型拟合的越好。