登录
首页精彩阅读简单易学的机器学习算法—线性回归(2)
简单易学的机器学习算法—线性回归(2)
2017-03-24
收藏

简单易学的机器学习算法—线性回归(2)

一、基本线性回归模型的抽象
    在基本的线性回归中(可见简单易学的机器学习算法—线性回归(1)),对于一个线性回归为题,我们得到一个线性方程组:

在上一篇中我们是构建平方误差函数使得误差函数取得最小值得方法求得回归系数。换种思考,对于这样的一个线性方程组的求解我们有其他的方式,这里我们提到了广义逆。
二、广义逆
    1、广义逆的概念
        广义逆的形式很多,并且广义逆有很好的性质。在众多的广义逆中,有一种称为Moore-Penrose广义逆,其要求比较严格,这里就不再具体说明。对于一个方阵A,如果这个矩阵的行列式,则矩阵A的逆存在,即对于满秩矩阵A,其逆矩阵存在。如果矩阵A不是方阵,此时A并没有逆的概念,但是我们可以求矩阵A的Moore-Penrose广义逆。
    2、Moore-Penrose广义逆的性质
        定理:Moore-Penrose广义逆存在而且唯一。
    3、Moore-Penrose广义逆的求法
        可以通过奇异值分解SVD的方式求解广义逆,具体如下:
奇异值分解:,其中M为对角阵
计算广义逆
这里,假设,则
三、线性回归的求解
    对于上面的线性方程组,利用Moore-Penrose广义逆,我们可以求得回归系数为:
四、实验
    我们同样采用简单易学的机器学习算法—线性回归(1)中的实验数据,我们得到以下的实验结果:

原始数据

最佳拟合直线
MATLAB实验源码
主函数
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
%% load Data  
A = load('ex0.txt');  
 
X = A(:,1:2);%读取x  
Y = A(:,3);  
 
ws = pinvRegres(X,Y);  
 
%% plot the regression function  
x = 0:1;  
y = ws(1,:)+ws(2,:)*x;  
hold on  
xlabel x;  
ylabel y;  
plot(X(:,2),Y(:,1),'.');  
plot(x,y);  
hold off  

线性回归系数
[plain] view plain copy 在CODE上查看代码片派生到我的代码片
function [ ws ] = pinvRegres( X, Y )  
    [m,n] = size(X);  
    ws = zeros(m,1);  
    ws = pinv(X)*Y;  
end 

数据分析咨询请扫描二维码

客服在线
立即咨询