前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单易学的机器学习算法——线性回归(2)

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

作者头像
felixzhao
发布2019-02-13 18:03:27
8370
发布2019-02-13 18:03:27
举报
文章被收录于专栏:null的专栏null的专栏null的专栏

一、基本线性回归模型的抽象

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

在上一篇中我们是构建平方误差函数使得误差函数取得最小值得方法求得回归系数

。换种思考,对于这样的一个线性方程组的求解我们有其他的方式,这里我们提到了广义逆。

二、广义逆

    1、广义逆的概念

        广义逆的形式很多,并且广义逆有很好的性质。在众多的广义逆中,有一种称为Moore-Penrose广义逆,其要求比较严格,这里就不再具体说明。对于一个方阵

,如果这个矩阵的行列式

,则矩阵

的逆

存在,即对于满秩矩阵

,其逆矩阵存在。如果矩阵

不是方阵,此时

并没有逆的概念,但是我们可以求矩阵

的Moore-Penrose广义逆

    2、Moore-Penrose广义逆的性质

定理:Moore-Penrose广义逆存在而且唯一。

    3、Moore-Penrose广义逆的求法

        可以通过奇异值分解SVD的方式求解广义逆,具体如下:

  • 奇异值分解:

,其中

为对角阵

  • 计算广义逆

这里,假设

,则

三、线性回归的求解

    对于上面的线性方程组

,利用Moore-Penrose广义逆,我们可以求得回归系数为:

四、实验

    我们同样采用简单易学的机器学习算法——线性回归(1)中的实验数据,我们得到以下的实验结果:

原始数据

最佳拟合直线

MATLAB实验源码

主函数

%% 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

求线性回归系数

function [ ws ] = pinvRegres( X, Y )
    [m,n] = size(X);
    ws = zeros(m,1);
    ws = pinv(X)*Y;
end

实验数据下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年05月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、基本线性回归模型的抽象
  • 二、广义逆
    •     1、广义逆的概念
      •     2、Moore-Penrose广义逆的性质
        •     3、Moore-Penrose广义逆的求法
        • 三、线性回归的求解
        • 四、实验
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档