线性回归(Linear Regression)
数理统计中回归分析,用来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,其表达形式为$y=wx+e$,e为误差服从均值为0的正态分布,其中只有一个自变量的情况称为简单回归,多个自变量的情况叫多元回归。
注意,统计学中的回归并非如线性回归非与严格直线函数完全能拟合,所以我们统计中称之为回归用以与其直线函数区别。
下面看个例子:
数据:工资和年龄(2个特征)
目标:预测银行会贷款给我多少钱(标签)
考虑:工资和年龄都会影响最终银行贷款的结果那么它们各自有多大的影响呢?(参数)
工资 | 年龄 | 额度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 50000 |
这个表格表示的是可贷款的金额 与 工资 和 年龄之间的关系,其中 工资 和 年龄 为 特征,可贷款金额为目标函数值。 那么根据线性函数可得到以下公式:
上面的这个式子是当一个模型只有两个特征(x1,x2)的时候的线性回归式子。 正常情况下,现金贷中可贷款的额度和用户的很多特征相关联,并不只是简单的这两个特征。所以我们需要把这个式子进行通用化。 假如有n个特征的话,那么式子就会变成下面的样子:
利用矩阵的知识对线性公式进行整合
因为机器学习中基本上都是用矩阵的方式来表示参数的,也就是说我们需要把这个多项求和的式子用矩阵的方式表达出来,这样才方便后续的计算。
我们把权重参数和特征参数,都看成是1行n列的矩阵(或者是行向量)。那么就可以根据矩阵乘法的相关知识,把上述多项求和的式子,转换成矩阵的乘法的表达式。 由此我们就把多项求和化简称了 。
误差
真实值和预测值之间肯定是存在误差的,我们用来表示该误差
所以回归函数变为:
我们根据实际情况,假设认为这个误差项是满足以下几个条件的:
- 误差是独立的。
- 具有相同的分布。
- 服从均值为0方差为的高斯分布。
然后我们回到刚开始的现金贷产品的贷款额度问题上面:
- 独立:张三和李四一起使用这款产品,可贷款额互不影响
- 同分布:张三和李四是使用的是同一款产品
- 高斯分布:绝大多数的情况下,在一个的空间内浮动不大
似然函数
由前面两步,我们已经把线性回归模型,推导成下面的这个式子:
$y_{(i)}=\theta^Tx_i+\varepsilon_i$ (1)
因为误差项是符合高斯分布的,所以误差项的概率值:
$P(\varepsilon_i)=\frac{1}{\sqrt{2\pi}\sigma}e^{-(\frac{(\varepsilon_i)^2}{2\sigma^2})}$ (2)
将 (1) 式代入 (2) 式:
$P(y_i|x_i,\theta)=\frac{1}{\sqrt{2\pi}\sigma}e^{-(\frac{(y_i-\theta^Tx_i)^2}{2\sigma^2})}$
由于是误差值,所以是越小越好,所以我们接下来就是讨论什么样的特征值和特征组合能够让误差值最小,似然函数的作用就是要根据样本求什么样的参数和特征的组成能够接近真实值,越接近真实值则误差就越小。
引入似然函数(似然函数就是求能让真实值和预测值相等的那个参数 ):
$\prod$表示各元素相乘
上面的式子是多个参数的乘积的形式,很难进行计算,所以我们又采用了对数的一个小技巧,把多个数相乘,转化成多个数相加的形式。
因为对数的性质:
$logA\cdot B = logA+logB$
根据上面的这种换算关系,我们就把似然函数的式子换算成下面的这个。 (因为似然函数是越大越好,似然函数的值和对数似然函数的值是成正比的,对值求对数,并不会影响到最后求极限的值。所以才敢进行对数处理。)
$l(\theta) = logL(\theta) = log\prod_{i=1}^{N}\frac{1}{\sqrt{2\pi}\sigma}e^{-(\frac{(y_i-\theta^Tx_i)^2}{2\sigma^2})}$
对上式进行整理:
$l(\theta) = logL(\theta) = \sum_{i=1}^{N}log\frac{1}{\sqrt{2\pi}\sigma}e^{-(\frac{(y_i-\theta^Tx_i)^2}{2\sigma^2})}$
$= \sum_{i=1}^{N}(log\frac{1}{\sqrt{2\pi}\sigma}+loge^{-(\frac{(y_i-\theta^Tx_i)^2}{2\sigma^2})})$
$= Nlog\frac{1}{\sqrt{2\pi}\sigma}-\frac{1}{2\sigma^2}\sum_{i=1}^{N}(y_i-\theta^Tx_i)^2$
因为:
$Nlog\frac{1}{\sqrt{2\pi}\sigma}$和$-\frac{1}{2\sigma^2}$是一个定值
似然函数是要越大越好
所以:
$l(\theta) = \sum_{i=1}^{N}(y_i-\theta^Tx_i)^2$
$\sum_{i=1}^{N}(y_i-\theta^Tx_i)^2$越小越好——最小二乘法(损失函数)
最小二乘法
上述代价函数中使用的均方误差,其实对应了我们常用的欧几里得的距离(欧式距离,Euclidean Distance), 基于均方误差最小化进行模型求解的方法称为“最小二乘法”(least square method),即通过最小化误差的平方和寻找数据的最佳函数匹配;
当函数子变量为一维时,最小二乘法就蜕变成寻找一条直线;
然后我们把得到的损失函数推广到n维,转换成矩阵形式(参考前面利用矩阵的知识对线性公式进行整合):
$J(\theta)=\sum_{i=1}^{N}(y_i-\theta^Tx_i)^2$(损失函数)
其对应的均方误差表示为如下矩阵:
$J(\theta) = {(y-X\theta)^T(y-X\theta)}$
其中X:
对$θ$求导:
$J(\theta) = {(y-X\theta)^T(y-X\theta)}=y^Ty-y^Tx\theta-\theta^Tx^Ty+\theta^Tx^Tx\theta$
$\frac{\partial J(\theta)}{\partial(\theta)} = \frac{\partial y^Ty}{\partial(\theta)} - \frac{\partial y^Tx\theta}{\partial(\theta)} - \frac{\partial \theta^Tx^Ty}{\partial(\theta)} + \frac{\partial \theta^Tx^Tx\theta}{\partial(\theta)}$
$\frac{\partial J(\theta)}{\partial(\theta)} = 0-x^Ty-x^Ty+2x^Tx\theta$
$\frac{\partial J(\theta)}{\partial(\theta)} =2x^T(x\theta-y)$
根据导数的性质,该值在导数为0时为最小
所以:
根据微积分定理,令上式等于零,可以得到 θ 最优的闭式解。当$2(x^Ty-x^Tx\theta)=0$时取得最小
最终:
$\theta = (x^Tx)^{-1}x^Ty$
X和Y都是已知的,那么得到了最终的参数值。