简单易学的机器学习算法——线性回归(2)
2014-05-22 20:16
225 查看
一、基本线性回归模型的抽象
在基本的线性回归中(可见简单易学的机器学习算法——线性回归(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
实验数据下载
相关文章推荐
- 简单易学的机器学习算法——线性回归(1)
- 简单易学的机器学习算法——Logistic回归
- 简单易学的机器学习算法——Softmax Regression
- 简单易学的机器学习算法——谱聚类(Spectal Clustering)
- 简单易学的机器学习算法——在线顺序极限学习机OS-ELM
- 简单易学的机器学习算法——极限学习机(ELM)
- 简单易学的机器学习算法——协同过滤推荐算法(1)
- 简单易学的机器学习算法——Rosenblatt感知机的对偶解法
- 简单易学的机器学习算法——基于密度的聚类算法DBSCAN
- 简单易学的机器学习算法——集成方法(Ensemble Method)
- 简单易学的机器学习算法——SVD奇异值分解
- 简单易学的机器学习算法——决策树之ID3算法
- 简单易学的机器学习算法——协同过滤推荐算法(2)
- 简单易学的机器学习算法——lasso
- 简单易学的机器学习算法——线性可分支持向量机
- 简单易学的机器学习算法——Rosenblatt感知机
- 简单易学的机器学习算法——协同过滤推荐算法(1)
- 简单易学的机器学习算法——神经网络之BP神经网络
- 简单易学的机器学习算法——lasso
- 简单易学的机器学习算法——AdaBoost