简单易学的机器学习算法——线性回归(2)
时间:2022-06-17
本文章向大家介绍简单易学的机器学习算法——线性回归(2),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、基本线性回归模型的抽象
在基本的线性回归中(可见简单易学的机器学习算法——线性回归(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
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【回溯算法】N叉树相关技巧
- 【回溯算法】回溯,从入门到入土,七道试题精选、精讲、精练
- 数据结构练手小项目(AVL树、哈希表、循环链表、MySQL数据库)
- 【LeetCode】每日一题(8.2)二叉树展开为链表
- 【小技巧】argc和argv的用法
- 全面分析redis持久化机制
- 【奇技淫巧】-- 接雨水
- 【奇技淫巧】-- 最长连续序列
- 【redis】跟我一起动手玩玩redis主从复制和哨兵模式
- 【C++】八大排序算法 :GIF + 亲测代码 +专项练习平台
- 【C++】勉强能看的线程池详解
- 国密SSL协议之Java编程
- 7. Jackson用树模型处理JSON是必备技能,不信你看
- epoll,求知者离我近点
- SOCKET网络编程 (通俗易懂入门篇)