区别是:编程算法不依赖于数据,能精确的解决问题,是对存储的数据进行处理,最终得到问题的答案。数据挖掘算法是一类从数据中运用数学工具自动分析获得规律,并利用规律对未知数据进行预测的算法,注重数据来源以及数据规律。
编程算法不依赖于数据,能精确的解决问题,是对存储的数据进行处理,最终得到问题的答案。数据挖掘涉及的算法依赖于数据,目的是找到一个可接受的解。数据挖掘算法是一类从数据中运用数学工具自动分析获得规律,并利用规律对未知数据进行预测的算法,注重数据来源以及数据规律。
经典排序或者搜索算法中的快排、堆排、二叉、B树等等,它们的存在价值不依赖于输入数据——有固定的步骤和解法,对于不同的输入数据都能正常运行(可能对特殊的数据有时候性能会差一些);但是机器学习算法不同,你使用一个算法,做了一个模型,只是为了解决某个特定数据集下的某个需求;换一个数据和场合,这一套东西很可能就没有存在的意义了。
举个例子,对于寻路算法,如果你要找到优异解,那本质上就只有完全遍历所有路径。这是一个可计算,但是np的问题。而大多数情况下,我们需要在一个可接受的时间内获得一个比较优异的解,那我们就可以尝试蚁群算法、模拟退火算法等等。如果应用场景更具体化,我们能做的花样就更多了。比如如果是在微博用户中进行“寻路”(比如通过几个人把你们联系起来),这样我们会优先搜索你好友中关注关系多的用户(因为他们更可能是所谓的“节点”用户);而在实现上,可以把最常使用的节点用户cache起来,进一步提升实际搜索的效率。——这还真就是算法。
另一方面,有些问题压根就没法取得所谓的“精确解”。比如拼写纠错。
有个很有名的例子:有段时间内,在百度搜索输入“淳安”(chun an),会出现“处男”(chu nan)的搜索结果——百度因此被某些人无脑喷。究竟为什么会出现这么看似搞笑的现象呢?因为在百度算法后台,实际上计算的是两个条件概率的大小:1.想输入“chu nan”而输入“chun an” 2.想输入“chun an”而输入“chun an”。概率1实际上近似等于“想要输入处男的概率×输入错误的概率”,2等于“想要输入淳安的概率×输入正确的概率”。而经过大量历史数据统计训练的结果,概率1大于概率2(比如可能虽然输入正确的概率比输入错误的概率大20倍,但是输入处男的概率比输入淳安的概率可能要大几千倍),所以百度的拼写纠错系统会将chun an纠错成chu nan。——所以,你可以喷百度的用户层次太低,“处男”这么low的词出现概率太高,但是不能黑百度没技术。
延伸阅读:
学习算法最重要的是什么?
在学习算法的过程中,一能解决问题,二对自己有用,是最大的推动力。而那些抽象的,与程序员日常工作关系不大的竞赛题,很难提起大多数人的学习兴趣。较好能通过工作中应用的一些案例来切入,利用碎片化时间入门算法,提升技术竞争力。有了兴趣之后就可以尝试将算法尽可能的优化,并套用到一个完整的项目中。
“学习算法很难”,怎样降低难度?从基础来讲,要学习算法,至少要非常熟练地掌握一种排序算法,各种线性表的插入、删除算法,树的遍历和插入、删除算法,图的遍历算法等。多学习掌握一些常见问题的解决模式,比如穷举算法如何应用,动态规划算法如何应用。最后要勤思考已经掌握并解决的算法,复盘为什么用这种方法解决,有没有其他方法,类似的问题怎么办,提高举一反三的能力。
编程和数据挖掘算法的区别与联系?
编程算法只是算法的一种表达形式,还可以用表格或流程图来表达算法。数据挖掘领域涉及的算法和其他领域算法只是问题域不同。数据挖掘和机器学习常用的方法,比如决策树、贝叶斯学习、神经网络、遗传算法等,在其他领域也有应用。在人工智能领域或各种专家系统中,决策树算法也是常用算法。各种算法在不同领域扮演不同角色,本质上没有区别,一通百通。
文章标题:编程算法和数据挖掘涉及的算法有什么区别和联系,发布者:小编,转载请注明出处:https://worktile.com/kb/p/39014