怎么得到的最小二乘法?
方程如下:y为真实值,θx为预测值,ε为误差值。θ为要计算的参数,ε为误差,θ、ε是未知量
我们希望误差ε越小越好,而预测值θx应该和真实值y越接近越好
每个样本都有误差,误差应服从均值为0方差为θ的平方的正态(高斯)分布
正态分布的表达式如下
为了求得θ,将第一个方程y-θx=ε带入正态分布表达式得到:
这样就得到似然函数(似然函数是指在给定的参数值比如θ的条件下,观测数据x出现的概率,因此让似然函数越大越好)
因为这是连乘,不好计算,因此对它取对数,得到对数似然,利用log(ab)=log(a)+log(b)转为加法
取对数后虽然会改变极值L(θ)的值,但极值点θ是不会变的,我们只要求得极值点θ就行,因此可以进行取对数操作,这样我们就能化简得到(连乘化为求和)
不含θ的都是常数项,为了让它越大越好,就让后面这一项越小越好,如下我们就得到了最小二乘法(损失函数),可以把二分之一也去掉。最小是令其值最小,二乘就是平方的意思
怎么求解最小二乘法?
方法一(常规方法):(真实值-预测值)的平方求和,平方可以防止正负误差值相互抵消,让其最小。真实值和预测值谁在前谁在后无所谓,反正平方完都一样
预测值的直线方程如下
那么就可以写成如下形式,为了让它最小,就令其导数等于0。因为有两个未知数a、b,所以分别对a、b求偏导。
具体的,假如我们有两个数据点为(1,1)和(2,2),那么就得到如下式子,求出来一个多项式后分别对a、b求偏导令其等于0,得到两个方程两个未知数,就可以求得a和b的值。
如果有更多数据点,这个方法计算量就会变得很大
方法二(矩阵方法):将数据点写成矩阵形式如下
因此误差可以表示成Y-Xβ,但我们需要的是误差的平方,而这个矩阵并不是方阵,不能直接进行平方操作
为了得到,我们将e的转置乘上e:,这样就得到了求和之后的
X、Y都已知了,对β矩阵求导数令其等于0(矩阵求导)
最后化简可以得到:
(不能用去左乘,因为只有方阵才会有逆矩阵)
但是我们可以保证为方阵,因此用它去左乘,得到:
方程右边都是已知,这样就把β求出来了,即求出了a和b的值。
补充
机器学习重在学习二字,如果这样只根据X和Y往结论里代入就能够求出答案,那么只体现了机器,并没有体现学习。并且这里还要保证方阵可逆,而实际情况并不是所有方阵都可逆,因此我们要去找其他方法(梯度下降法)。