矩阵法求解线性回归

由于梯度下降算法需要多次迭代,并且需要指定下降速率,如果下降速度过快则可能错过最优点,如果过慢则需要迭代多次,因此还可选用矩阵法求解。

首先给出一些基本数学知识:

矩阵的迹trace为矩阵主对角线元素之和:

  

tr(a)=a ,如果a为实数

以下是关于矩阵迹的一些性质:

  

对于多元线性回归,将所有训练数据作为一个矩阵,多元线性回归,也就是多个自变量的线性方程,类似y=a1x1+a2x2+a3x3...:

将y值也作为一个矩阵:

则可得

则误差为:

转变为平方后:

其中转变为平方主要为了统一为正值,前面乘以1/2是方便求导后的计算。

对J(θ)求导,

其中用到上面的求迹公式,以及求导公式,

令上式为0,

则可求出最优的系数,矩阵方求解相对简单,不需要多次迭代,但当数据量过大时,即设计矩阵X过大时,对矩阵的乘法即求逆有很大计算复杂度,因此此方法适用于小规模数据。另外,用矩阵法时不需要对输入特征数据中心化。

时间: 2024-09-30 11:20:16

矩阵法求解线性回归的相关文章

用矩阵方式求解线性回归的最优θ

1.假设回归的目标函数式为 (其中x0为1) 当 n = 1时表示一元函数,对一元函数进行回归分析 2.将误差记为:ε 要使得ε最小,然后样本真实值 y 和模型训练预测的值之间是有误差 ε ,再假设训练样本的数据量很大的时候,根据中心极限定律可以得到   ∑ε   满足 (u ,δ2)高斯分布的:由于方程有截距项 ,故使用可以 u =0; 故满足(0,δ2)的高斯分布: 如上面可知,对于每一个样本 x ,代入到 p (y |x ;θ) 都会得到一个y 的概率:又因为设定样本是独立同分布的:对其求

非负矩阵分解(3):拉格朗日乘子法求解

作者:桂. 时间:2017-04-07  07:11:54 链接:http://www.cnblogs.com/xingshansi/p/6679325.html 声明:欢迎被转载,不过记得注明出处哦~ 前言 最近发这类文章,动不动就被管理员从首页摘除,如果你觉得这个文章还说得过去,麻烦帮忙点个赞吧,这样移除的概率小一些.... 本文为非负矩阵分解系列第三篇,在第二篇中介绍了不同准则下乘法算法的推导及代码实现,这里不免有一个疑问:明明是一个约束的优化问题,虽然乘法算法巧妙地将其变为一个无约束优化

梯度下降法求解线性回归

梯度下降法 梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法. 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索.如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点:这个过程则被称为梯度上升法. 梯度下降的形象解释 现在有一个山谷,你想要到达山谷的最低端,你此时在A点,那么此时就可以利用梯度下降来找到最低点.你每次以你当前的方向为基准.选择一个最陡峭的方向,朝着山下

利用回溯法求解背包问题

最近看完了利用回溯法求八皇后问题,最后成功求解到92种解法,然后在看利用贪心求解背包问题,突然想到其实也可以利用回溯法求解背包问题,本质上回溯法是一个穷举的方式在求. 回溯法求解出的结果肯定是正确的,这也可以验证自己所写的贪心算法的正确性. 问题描诉: 设定Wmax为最大重量,W[](0~n-1)为编号0~n-1的货物重量,V[](0~n-1)为其价值,x[]为其中解, 在wn=ΣXi*Wi<Wmax的条件下,求Vmax=ΣXi*Vi. 代码如下: //全局变量最大价值int maxvalue=

梯度上升法求解Logistic回归

回顾上次内容:http://blog.csdn.net/acdreamers/article/details/27365941 经过上次对Logistic回归理论的学习,我们已经推导出取对数后的似然函数为 现在我们的目的是求一个向量,使得最大.其中 对这个似然函数求偏导后得到 根据梯度上升算法有 进一步得到 我们可以初始化向量为0,或者随机值,然后进行迭代达到指定的精度为止. 现在就来用C++一步一步实现Logistic回归,我们对文章末尾列出的数据进行训练. 首先,我们要对文本进行读取,在训练

回溯法求解数独算法(C语言)

没有对输入的待解数独进行一般性验证(同一行.一列以及同一个小九宫格都不能出现重复数字) 算法利用回溯的思想: 从第一个空白处开始,找到其候选解(排除同行.同列以及同一小九宫格的所有出现过的数字,剩下未出现的数字都是候选解)的第一个值填入数独. 对第二个空白执行第一步(前面所填入的数字对此空白处有影响). 当出现某个空白的候选解个数为0时,就开始回溯,找到第一个候选解多于一个的,将其在使用的候选解设为不可取(本程序取值为-1),找到其下一个候选解,继续上面的步骤! 直到所有空白处填满,运算完成,输

Graham&#39;s Scan法求解凸包问题

概念 凸包(Convex Hull)是一个计算几何(图形学)中的概念.用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有点的.严谨的定义和相关概念参见维基百科:凸包. 这个算法是由数学大师葛立恒(Graham)发明的,他曾经是美国数学学会(AMS)主席.AT&T首席科学家以及国际杂技师协会(IJA)主席.(太汗了,这位大牛还会玩杂技~) 问题 给定平面上的二维点集,求解其凸包. 过程 1. 在所有点中选取y坐标最小的一点H,当作基点.如果存在多

回溯法——求解0-1背包问题

以前研究过一个简单的N皇后问题,对回溯法也有了个模糊的认识,大致理解就是:先一直做某件事,当完成某个条件时或者是触犯某个条件时,再返回到最近的一个类似还原点的地方. 在用回溯法求解0-1背包问题的时候,主要遇到三个相对难解决的问题:1,什么是界限函数:2,什么时候用它:3,回溯到哪儿. 什么是界限函数? 如下图: 当我们身在一棵搜索空间树中,站在一个K点举棋不定的时候,我们可以用它估算如果我们继续向下走,我们走完本段路会获得的总价值.假设我们现在有一个最大解,当我用界限函数算出一个价值后和我当前

贪心法求解背包问题

#include<stdio.h> struct A{ double w; double v; double xingjiabi; }a[100],p; void QuickSort(A a[],int numsize) { int i=0,j=numsize-1; A p=a[0]; if(numsize>1) { while(i<j) { for(;j>i;j--) if(a[j].xingjiabi<p.xingjiabi) { a[i]=a[j]; break;