最优化方法与机器学习工具集

1.最小二乘法

  注:这里假定你了解向量的求导公式,并且知道正态分布和中心极限定律(不知道的可以去数学知识索引翻翻)

  (线性)最小二乘回归解法:

  

  损失函数:平方损失,这里的误差可能是多种独立因素加和造成的,所以我们假定其符合均值为0的高斯分布,继而可以推出平方损失。参考Andrew Ng机器学习公开课笔记 -- 线性回归和梯度下降Probabilistic interpretation,概率解释 部分

  适用场合:

  优缺点:维数过高时,求逆效率过低

2.梯度下降法

  这是一种迭代方法,先随意选取初始θ,然后不断的以梯度的方向修正θ,最终使J(θ)收敛到最小,当然梯度下降找到的最优是局部最优,也就是说选取不同的初值,可能会找到不同的局部最优点

  常见的3终梯度下降算法:

  1.批梯度下降(BGD)算法:

  

  2.随机梯度下降(SGD)算法:

  

  3.mini-batch随机梯度下降

  

  同样可以参照Andrew Ng机器学习公开课笔记 -- 线性回归和梯度下降的梯度下降(gradient descent)部分

3.最大(对数)似然估计(MLE)

  参照:数理统计与参数估计杂记

4.最大后验估计(MAP)

  引入了先验分布对参数做规范化,其参数估计是对贝叶斯后验概率求极值,而预测过程和最大似然估计一样

5.期望最大化算法(EM)

  K-Means聚类和EM算法复习总结

6.拟牛顿迭代(BFGS)

  同时利用梯度和二阶导数做优化,相当于在当前点处进行二阶的泰勒展开,并找到二次曲面的极小值点。

  迭代公式为:

实际的优化问题中很难保证每一点的Hessian矩阵(二阶导数对应的矩阵)都正定(可逆),而拟牛顿法构造了一个不太精确,但是可以保证正定的矩阵

  Hessian矩阵的逆的更新公式是:

当学习速率满足Wolfe条件时,可以保证找到比现有函数更优的一个点;

  Wolfe条件:

  

  

时间: 2024-10-03 04:20:04

最优化方法与机器学习工具集的相关文章

机器学习工具

机器学习工具 参考网站: https://www.zhihu.com/question/20472776(知乎:学习机器学习有哪些好工具推荐?) http://blog.csdn.net/myarrow/article/details/50608334(CSDN:机器学习工具汇总) 平台VS库 机器学习平台 机器学习平台提供了从头到尾完成一个机器学习项目的功能.也就是,数据分析,数据准备,建模和算法评估及选择. 机器学习平台的特征有: 它们提供了机器学习项目中每一个过程所需要的功能. 界面可以是

你不得不看的Python机器学习工具

IEEE Spectrum排行榜第一,Skill UP排名第一的开发工具,Stack Overflow年度调查中程序员最感兴趣的选择,Stack Overflow 6月份访问量最多的编程语言......没错,这些盛誉都指向了一个编程语言--Python. Python在科学计算中用途广泛:计算机视觉.人工智能.数学.天文等.它同样适用于机器学习也是意料之中的事.这里将列举并描述Python的最有用的机器学习工具和库. 另外,尽管有些模块可以用于多种机器学习任务,在这里只列出主要焦点在机器学习的库

IBM Rational-完整的软件工程解决方案工具集

IBM,即国际商业机器公司,1911年创立于美国,是全球最大的信息技术和业务解决方案公司,其业务遍及全球170多个国家和地区.IBM软件分为五个部分,其中Rational系列是专门针对软件工程的软件工具系列.IBM提供业内最佳工具集,使整个软件开发生命周期管理自动化并支持最佳实践.IBM Rational系列不但有工具的支持,更有理论方法的支持,通过优化开发过程的每个阶段,IBM的工具充分提高数据透明度.协同工作和验证能力,确保客户更快.更好地开发出软件和系统. 产品介绍 1. IBM Rati

解决 vs2010问题 error MSB8008: 指定的平台工具集(v110)未安装或无效

在VC++编译程序时,出现如下图所示的问题: >------ 已启动生成: 项目: PhotoStore, 配置: Debug Win32 ------ 1>生成启动时间为 2013-01-15 18:10:34. 1>C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(511,5): error MSB8008: 指定的平台工具集(v110)未安装或无效.请确保选

binutils工具集之---addr2line

addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号. 在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器,读者通常可以找到arm-rtems-addr2line ,arm-rtems-objdump等相应名称的工具,这是GNU工具集的一种命名惯例. 本文并不是binutils工具集的完整参考手册,当需要得到更为详细的帮助信息时,可以参照对应工具的man和info信息.另一个更为简单的方法时运行相应的工

工具集

好用的工具集 转:http://www.yimingzhi.com/2015/03/lao-yi-de-kai-fa-gong-ju-he-lei-ku-ji-2014-ban Visual Studio 2013 扩展 Visual Studio 2013 Update 4:是目前微软发布的最新版开发工具升级包,高效而且强大.下面的扩展都是该版本的Visual Studio下的,老版本可以根据名字自行查找安装. CodeMaid: 可快速整理代码文件,清理不必要的代码和杂乱的格式.并在开发时实

Apache Commons 工具集

一.Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 使用示例:功能有很多,网站上有详细介绍.一个比较常用的功能是Bean Copy,也就是copy bean的属性.如果做分层架构开发的话就会用到,比如从PO(Persistent Object)拷贝数据到VO(Value O

[原创译书] JS函数式编程 2.3 函数式程序员的工具集

?? Functional Programming in Javascript 主目录第二章 函数式编程基础上一节 与函数共舞 函数式程序员的工具集 如果你仔细看了到目前为止出现过的示例代码,你会发现这里面的一些方法不太熟悉. 它们是map().filter()和reduce()函数,它们对任何语言的函数式编程都至关重要. 它们可以让你不必使用循环和语句,写出更简洁的代码. map().filter()和reduce()函数组成了函数式程序员工具集的核心部分,这个工具集包括一系列纯的. 高阶的函

Linux开发工具集

最近工作学了不少linux下的新东西,下面这些工具主要针对c/c++,以后慢慢补充一些好用的工具. 编辑器 vim emacs kate(KDE下一个功能强大的编辑器) IDE(集成开发环境) eclipse+cdt clion qt cteator 编译器 gcc g++ clang 调试器 gdb 构建工具 cmake make 内存工具 Purify Valgrind工具集 KCachegrind 剖析工具 gprof开源剖析工具,通常作为gcc编译器的一部分. Quantify是IBM的