normal equation(正规方程)

  • 正规方程是通过求解下面的方程来找出使得代价函数最小的参数的:

\[\frac{\partial}{\partial\theta_j}J\left(\theta\right)=0
\]

  • 假设我们的训练集特征矩阵为 \(X\)(包含了\(x_0=1\))并且我们的训练集结果为向量 \(y\),则利用正规方程解出向量:

\[\theta ={{\left( {X^T} X \right)}^{-1}}{X^T}y
\]

  • 梯度下降与正规方程的比较:

    • 梯度下降:需要选择学习率\(\alpha\);需要多次迭代;当特征数量n大时也能较好适用,适用于各种类型的模型;
    • 正规方程:不需要选择学习率\(\alpha\);不需要迭代,一次运算就可以得出\(\theta\)的最优解;需要计算\({\left( {X^T} X \right)}^{-1}\);如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为\(O(n^3)\),通常来说当n小于10000时还是可以接受的,只适用于线性模型,不适合逻辑回归模型等其他模型。

编程实现

编程作业1.1:单变量线性回归的基础上实现:

# 正规方程
def normalEqn(X, y):
theta = np.linalg.inv(X.T@X)@X.T@y #X.T@X等价于X.T.dot(X);np.linalg.inv():矩阵求逆
return theta
final_theta2=normalEqn(X, y)#感觉和批量梯度下降的theta的值有点差距
final_theta2

在之前运行完梯度下降算法之后,我们输出\(\theta\)的值如下:

可以看出两种方法求出的\(\theta\)值基本相似。

最新文章

  1. Oracle常用命令大全(很有用,做笔记)
  2. 【原】iOS学习之苹果开发者账号的相关操作
  3. SQL排序
  4. C#指定时间和当前时间的相差的月份、天数
  5. 1025WHERE执行顺序以及MySQL查询优化器
  6. js获取当前时间&js 页面时钟
  7. Android中FragmentPagerAdapter对Fragment的缓存(一)
  8. px和em之间的转换
  9. web.xml中listener作用及使用
  10. MVC通过递归+部分视图实现评论
  11. James Munkres《拓扑学》笔记前言
  12. 关于解决Missing Number之类的算法问题
  13. linux学习笔记 less命令
  14. Ajax事件,方法
  15. Python实例--12306的抢票功能
  16. OpenStack API部分高可用配置(二)
  17. iOS 项目一直在后台执行
  18. hadoop环境搭建与測试
  19. MyEclipse WebSphere开发教程:安装和更新WebSphere 6.1, JAX-WS, EJB 3.0(三)
  20. MVC技术的面试问题

热门文章

  1. EBP寻址
  2. 【转】JS字符(字母)与ASCII码转换方法
  3. 前端安全之 XSS攻击
  4. 新手学Java,有哪些入门知识点?
  5. benchmark与gem5-gpu交互
  6. ArryList的使用方法(基础使用-将来会不断添加)
  7. jquery特效 - 网站水波纹
  8. 大二暑假第六周总结--开始学习Hadoop基础(五)
  9. WebSocket实现简易聊天室
  10. 关于jquery js读取excel文件内容 xls xlsx格式 纯前端