机器学习的算法和普通《算法导论》里的算法有什么本质上的异同
机器学习的算法和普通《算法导论》里的算法有什么本质上的异同?
本人非计算机专业出身,对这些方向感兴趣,所以有此一问。曾经问过一些人,说是机器学习全是数学,是用数学的方式试图去描述和理解我们的世界,而《算法导论》里的这些算法主要是如何用计算机的思维去处理一些实际的问题。我似懂非懂,还是没能抓住最根源上的东西。希望能有一些专业的,通俗的回答,谢谢了
- 相同点:算法是用来求解优化模型,《算法导论》和机器学习在这一点上是一回事。
- 区别:《算法导论》里几乎都是组合优化;而机器学习里主要是连续的问题,凸优化较多,也有很多非凸优化。机器学习算法自然大都是梯度下降、坐标下降、蒙特卡洛 这样的算法,与《算法导论》里的算法长得很不像。
- 是机器学习里也有组合优化,比如聚类、比如概率图模型。在这一点上,跟算法导论区别不大。
为什么《算法导论》里大多是组合优化?我拿排序问题举个栗子。
- 排序问题就是个组合优化。给定n个实数,要求按降序排列。
- 目标函数:常数(没有目标函数)
- 可行域是n维空间一个子集,集合的元素都是向量a,满足:.
- 为了求解这样一个组合优化模型,可以有很多算法,比如快排、堆排、冒泡。
如果你能理解排序是个组合优化问题,你肯定能理解 网络流、最短路 等等问题都是组合优化。
拿机器学习里常用的最小二乘回归对比一下。
- 最小二乘是个凸优化问题。
- 目标函数:
- 可行域:整个空间
- 为了求解这个凸优化模型,可以用梯度下降、共轭梯度、坐标下降等算法。
- 你也可以用概率模型描述这个问题:y是的线性函数 + 高斯噪声。然后可以用蒙特卡洛算法来求。
机器学习里也有组合优化,比如k-means。
- k-means要求把集合{1, ..., n}划分成k个子集,使得对应的向量离cluster中心的平均距离最短。
- k-means有具体的组合优化模型,我不写了。对应的组合优化模型被证明是NP hard。
- 有很多近似算法求解k-means,最常用的是Lloyd Algorithm。
==========
注意,method和algorithm是两个东西。例如,
- k-means是method,有几种优化问题model,有很多求解的algorithms。你们最常用的那种迭代算法是Lloyd Algorithm。
- LDA是method也是model(这种method就一种model),这个model的求解是个NP Hard的问题(我记得Arora文章里证明过)。有很多种算法求解LDA,比如variational inference、MCMC、tensor decomposition。
- word2vec是method,用来解决NLP的一些问题;有很多models,比如skip-gram、深度学习;每种model都有很多算法求解。
把method和algorithm混为一谈是典型的“野路子”从业人员的特征。比如,很多人喜欢把Lloyd算法称为kmeans。
经提醒,method和model有区别,但是界限不明,很多时候可以混用。但是algorithm和method绝对不能混用。
五大常用算法之一:分治算法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741370.html
五大常用算法之二:动态规划算法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741374.html
五大常用算法之三:贪心算法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741375.html
http://blog.csdn.net/qq_32400847/article/details/51336300
https://baike.baidu.com/item/%E8%B4%AA%E5%BF%83%E7%AE%97%E6%B3%95/5411800?fr=aladdin
五大常用算法之四:回溯法
五大常用算法之五:分支限界法
机器学习的算法和普通《算法导论》里的算法有什么本质上的异同相关推荐
- 克鲁斯卡尔算法(Kruskai)和普里姆算法(Prim)
动画参考视频:最小生成树(Kruskal(克鲁斯卡尔)和Prim(普里姆))算法动画演示_哔哩哔哩_bilibili 克鲁斯卡尔算法(Kruskai) 克鲁斯卡尔算法,从边的角度求网的最小生成树,时间 ...
- 图论基础知识--最小生成树算法kruskal(克鲁斯克尔)和普里姆算法(Prim算法);最短路径算法Dijkstra(迪杰斯特拉)和Floyd(弗洛伊德)
一.基础知识 有向图 无向图 以无向图为例: 邻接矩阵: 度矩阵(对角矩阵): 二.最小生成树 应用:将网络顶点看着城市,边看着城市之间通讯网,边的权重看着成本,根据最小生成树可以构建城市之间 ...
- JAVA-数据结构与算法-修路问题(普里姆算法)和公交站问题(克鲁斯卡尔算法)
修路问题(普里姆算法) 最小生成树,给定一个带权的无向连通图,如何选择一颗生成树,使树上所有边上权的总和为最小:N个顶点,N-1条边 普里姆算法,在包含n个顶点的连通图中,找出只有n-1条边,包含所有 ...
- 最小生成树普里姆算法c语言代码,普里姆算法生成最小生成树-C语言描述.doc
PAGE JIN JINGCHU UNIVERSITY OF TECHNOLOGY <数据结构(C语言描述)> 课程设计 学 院 计算机工程学院 班 级 12级软件技术1班 学 号 201 ...
- 最小生成树(普里姆算法【Prim】与克鲁斯卡尔算法【Kruskal】)
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- Java用普里姆算法(prim)解决修路最短路径问题
14.6 普里姆算法 14.6.1 应用场景-修路问题 看一个应用场景和问题: 有胜利乡有 7 个村庄(A, B, C, D, E, F, G) ,现在需要修路把 7 个村庄连通 各个村庄的距离用边线 ...
- 最小生成树(详解普里姆算法)
首先,我们来看一下图的一些基本知识点: 图:图 G=(V,E) 由顶点集 V 和边集 E 组成.每条边对应一个点对 (v,w),其中 v,w 属于 V .如果图中的点对是有序的,那么该图就是有向图,反 ...
- (数据结构)图的最小生成树 普里姆算法(Prim)
假设要在n个城市之间建立通信联络网,每两个城市之间建立线路都需要花费不同大小的经费,则连通n个城市只需要n-1个条线路,最小生成树解决的问题就是:如何在最节省经费的前提下建立这个通信网 也可以理解为: ...
- 机器学习(八)——在线学习、K-Means算法、混合高斯模型和EM算法
http://antkillerfarm.github.io/ 贝叶斯统计和规则化(续) p(θ|S)p(\theta\vert S)可由前面的公式得到. 假若我们要求期望值的话,那么套用求期望的公式 ...
最新文章
- JMH和Arthas定位问题的案例分享
- hihocoder1718 最长一次上升子序列
- OpenCV 使用方向梯度直方图估计图像旋转角度
- ios 如何在cell中去掉_经典问题:代码中如何去掉烦人的“!=nullquot;判空语句
- 前端参数无法转为后端实体内部类_Spring Boot返回前端Long型丢失精度
- 用C#快速往Excel写数据
- 软件工程之四则运算开发感悟与收获
- 数据库-聚合函数-count-sum
- 华为手机的分类有何区别_“鸿蒙”系统能不能玩安卓游戏?如果能,它跟安卓系统有何区别?...
- Tomcat映射虚拟路径到指定磁盘(eclipse)
- (转)编码剖析Spring管理Bean的原理
- 学习Python的利器:内置函数dir()和help()
- WampServer2.0的Apache的service无法启动的解决方法
- 页面404?找不到页面咋整?
- 广播BroadcastReceiver(2)
- java gzip 文件夹_Java GZip 基于磁盘实现压缩和解压的方法
- spring awre的理解
- php2.3.2,自动加载 - ThinkPHP3.2完全开发手册
- 台式计算机硬盘的安装位置,如何在台式机机箱中安装硬盘
- 系统对接方案_劳务实名制管理系统解决用工问题
热门文章
- JS编程建议——32:使用制表
- asp.net mvc 应用Bundle(捆绑和微小)压缩技术 启用 BundleConfig 配置web.config
- http://ftp.gnu.org/gnu/ http://ftp.gnu.org/gnu/libc/
- TryCatchFinallyProcessHelper
- 基于Spring安全角色的访问授权示例
- 如何使用 IntelliJ IDEA 2017 配置PHP开发环境 及项目搭建
- 如何从Debian 9 Stretch 升级到 Debian 10 Buster(升级Debian9图文教程)
- 【转载翻译】Debian配置Networking 和 apt-get 源信息 开启root远程登录权限
- 用python代替人脑运算24点游戏
- 【C语言】(指针) 将两个数排序