正规方程 Normal Equation
2016-04-01 15:27
246 查看
正规方程 Normal Equation
前几篇博客介绍了一些梯度下降的实用技巧,特征缩放(详见http://blog.csdn.net/u012328159/article/details/51030366)和学习率(详见http://blog.csdn.net/u012328159/article/details/51030961)。在线性回归中,为了求得参数的最优值,一般采用梯度下降和本文将要介绍的正规方程(normal
equation)。相比较梯度下降采用多次迭代逼近的方式,normal equation采用矩阵运算可以直接求解出参数
。先介绍下什么是normal equation,假设一个数据集X有m个样本,n个特征。则假设函数为:
,数据集X的特征向量表示为:
表示第i个训练样本,
表示第i个训练样本的第j个特征。之所以在X中加了第一列全为1,是为了让
,若希望假设函数能够拟合Y,则
。又因为
,所以可以通过矩阵运算求出参数
。
熟悉线性代数的同学应该知道怎么求出参数
,但是前提是矩阵X存在逆矩阵
。但只有方阵才有可能存在逆矩阵(不熟悉定理的同学建议去补补线性代数),因此可以通过左乘
使等式变成
,因此
,有同学可能会有疑问
不一定存在啊,确实是,但是
极少不存在,后面会介绍
不存在的处理方法,先别着急。现在你只需要明白为什么
就可以了,并且记住。
介绍完normal equation求解参数
,我们已经知道了两种求解参数
的方法,normal
equation和梯度下降,现在来对比下这两种方法的优缺点以及什么场景选择什么方法。具体见下表吧:
回到上面说的
不一定存在,这种情况是极少存在的。如果
不可逆了,一般要考虑一下两者情况:
(1) 移除冗余特征,一些特征存在线性依赖。
(2) 特征太多时,要删除一些特征。例如(m<n),对于小样本数据使用正则化。
相关文章推荐
- static的作用
- 面对自己:如何让自己成为真正的程序员
- Andrid进阶_Ksoap2访问WebService出现错误SoapFault
- Html+CSS 文本的强制换行
- Android ADB中使用find命令
- adb shell中设置android系统内部环境变量!
- Linux 同步方法剖析--内核原子,自旋锁和互斥锁
- (原创)socket学习实验(一)——利用C 语言socket抓取一个网页内容
- linux内核——进程管理
- iOS开发-UIView之动画效果的实现方法
- .js文件中写ajax请求
- dpdk初识
- Django Nginx+uwsgi 安装配置
- 模板---函数模板,类模板等
- mysql主库清理数据,从库保留
- apache RewriteRule
- Android —— Android应用程序真机调试(图文详解)
- Ubuntu安装磁共振处理软件Fsl步骤
- 【格灵深瞳】电话面试
- Linux进程间通信——消息队列: