机器学习的算法和普通《算法导论》里的算法有什么本质上的异同
2017-11-10 20:57
295 查看
机器学习的算法和普通《算法导论》里的算法有什么本质上的异同?
本人非计算机专业出身,对这些方向感兴趣,所以有此一问。曾经问过一些人,说是机器学习全是数学,是用数学的方式试图去描述和理解我们的世界,而《算法导论》里的这些算法主要是如何用计算机的思维去处理一些实际的问题。我似懂非懂,还是没能抓住最根源上的东西。希望能有一些专业的,通俗的回答,谢谢了SS Wang
machine learning
182 人赞同了该回答
区别不大。算法的目的都是一样的:定一个目标,加一些约束,求一个比较好的结果。
相同点:算法是用来求解优化模型,《算法导论》和机器学习在这一点上是一回事。
区别:《算法导论》里几乎都是组合优化;而机器学习里主要是连续的问题,凸优化较多,也有很多非凸优化。机器学习算法自然大都是梯度下降、坐标下降、蒙特卡洛 这样的算法,与《算法导论》里的算法长得很不像。
是机器学习里也有组合优化,比如聚类、比如概率图模型。在这一点上,跟算法导论区别不大。
为什么《算法导论》里大多是组合优化?我拿排序问题举个栗子。
排序问题就是个组合优化。给定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.htmlhttp://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
五大常用算法之四:回溯法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741376.html
五大常用算法之五:分支限界法
http://www.cnblogs.com/steven_oyj/archive/2010/05/22/1741378.html
相关文章推荐
- 【机器学习】粗糙集属性约简算法与mRMR算法的本质区别
- 机器学习的本质是什么
- 《算法导论》----------什么是算法?
- 连广场舞阿嫲都听得懂的机器学习实例1 - 通过Sklearn KNN分类算法让计算机知道这是什么花
- 机器学习、深度学习、和AI算法可以在网络安全中做什么?
- 人类是如何识别物体的呢,和图像学中基于特征的算法有什么异同?
- 人类是如何识别物体的呢,和图像学中基于特征的算法有什么异同?
- static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
- [置顶] 机器学习十大算法总览(含Python3.X和R语言代码)
- 普林斯顿算法(1.3)并查集(union-find算法)——本质就是一个数 下面的子树代表了连在一起的点
- 机器学习——K-近邻(KNN)算法
- [0.0] 什么是机器学习
- 内联函数与普通函数的区别是什么
- 机器学习(一):KNN算法
- 算法导论学习笔记(一)排序算法之快速排序
- 干货 | 上手机器学习,从搞懂这十大经典算法开始
- 台湾国立大学机器学习基石.听课笔记(第五讲): 训练和测试有什么不同
- 内联函数与普通函数的区别是什么
- 机器学习必知的10大算法
- 【机器学习】K-近邻算法的Python实现