机器学习中,怎样分析数据结构来选择算法

作者&投稿:贯哪 (若有异议请与网页底部的电邮联系)
学习机器学习深度学习之后,还需要掌握传统算法和数据结构吗~

向量机、深度学习是机器学习中的两种大牛的算法。机器学习关注如何通过依靠数据构建模型或识别模型中的参数,从而使模型的输入和输出与关注的问题域输入输出近似相匹配。大数据中的一些问题需要机器学习方法支撑。

作者:董可人
链接:http://www.zhihu.com/question/24976006/answer/29682806
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


算法导论里的算法本质上是对有精确解的问题,如何更有效率地求得这个解。这个效率可以是计算时间更短,也可以是计算过程所需要的空间更少。

一个简单的例子是,给定一个乱序数组,如何快速的将其按从小到大的顺序重新排列,或者找到其中的中位数。这些问题都有确定且唯一的答案,一般都会有一个笨方法(穷举或遍历),只要一步一步来就可以解,所谓算法只是如何精简步骤,更快更省事地找到这个解。这些算法处理的数据也都是结构简洁且干净的类型,比如数组,二叉树,图之类的数据结构。数据规模对于这些算法而言,影响的是计算所需的时间和空间,不会因为规模改变而影响算法本身的逻辑以及计算的结果。

机器学习要解决的问题一般没有精确解,也不能用穷举或遍历这种步骤明确的方法找到解,而且需要强调的是“学习”这个属性,即希望算法本身能够根据给定的数据或计算环境的改变而动态的发现新的规律,甚至改变算法程序的逻辑和行为。

举例来说,可以是把一千份文档归类到不同的几个类别里。最简单的可以是给定几个类别,比如新闻,小说,诗歌等,算法来根据文章内容自动划分到对应的类别里。这里可以看出这个问题即使让人做,也有很多模糊不能确定的地方,比如一篇法制晚报上的犯罪纪实是应该划到新闻,还是小说呢?或者说一篇长诗比如荷马史诗是应该归在小说还是诗歌呢?机器学习算法想要解决的,就是根据从文章内容里找到的规律,来自动的给出一个划分。而不同算法可以给出不同的解,这些解都可以是“正确”的,所以一般还需要人为设计一个评判标准来决定孰优孰劣。

也可以不事先给定类别,而是让算法自己去发现文章中的规律,把相似度高的文章划分到一起。这样不同的算法可能给出不同数量的类别划分,可能是三个,四个,或者五个,也都可以是“正确”的划分。甚至什么是“相似度”,不同算法也可以给出不同解释,可以是名词动词形容词的词频及比例,也可以是句子的语法结构等。

更进一步的,你可能还希望这个算法能够用来判断一份新的文档的类别。而输入的新文档越多,也会进一步扩大初始数据集的规模,规模变大以后,原来数据中不明显的规律可能就变明显了。比如说原来一千份文档中只有一篇议论文,可能大多算法都无法把它单独划出一个类别,但当你持续输入一百份议论文后,数据中议论文的比例就变成了101/1100,差不多10%,这时候算法就应该划分出单独的议论文类别。在这个意义上,数据本身也对算法有很大的影响,这也是和算法导论中的算法的一个本质区别。

技术上说,算法导论中的算法关注点在数据结构和计算复杂度,属于离散数学的一个分支,不涉及微积分等高等数学概念。机器学习的算法本身是基于概率,统计和优化(optimization)等理论和技术,从这个角度上说给人感觉更“数学”一点。

在具体的实现细节上,机器学习的算法会大量应用算法导论中的技术来改进计算效率。但需要强调这仅仅是对底层实现来说,在算法本身的逻辑上,二者没有太多联系。换句话说,算法导论中的技术可以帮助你写出更快的程序来运行机器学习算法,但是这对机器学习要解决的问题本身是没有什么帮助的。熟练使用二叉树散列表,准确估算一个图算法的复杂度,都没有任何可能帮助你猜到在女朋友过生日时送什么礼物最好(使用了机器学习算法的淘宝君却很可能知道!)。因此不要把它们看成是搭积木拼构件的关系。

最后,如果以上解释仍然让你费解,那么还有一个更通俗的解释:算法导论是教你如何数数,而机器学习基本上相当于星座算命。一个很机械,一个靠忽悠,差不多就是这样吧。
具体分析见链接:http://www.zhihu.com/question/24976006

在模型选择方面,本身来说,个人觉得并没有一种很确定的指导方式,更多的是从你数据的应用角度去考虑问题,然后才是你对数据的理解。

应用角度的问题就是你对模型的要求,如果你的要求是模型尽量是可解释的,那么选择估计就只有决策树,逻辑回归等等这种简单的模型。
数据的角度:这个角度其实更多的是从获取某种先验知识或者基于某种假设等等,然后你去选择模型;
比如我有一个数据,我知道y-x>0则为1类,y-x<0则为0类别,这个是假设我知道的情况下,你会怎么取选择分类器呢,很明显,直接用线性回归就应该做的不错,或许和你之后的会有点小偏差,但是就是应该不错,那么此时你会发现SVM的线性核应该可以是可以的,你的思路就会发现,其实基本上所有的线性分类器在这样的数据集合上都应该不错的;
然而你考虑一下Decision Tree,你会发现他做的不是很好,但是最差最差也能够得到75%(假设我就分一次,x>0和x<0),这个时候你怎么评估这个问题的好与坏呢,如果是赌场,这个效果是很好了,但是如果是指纹的识别,这个就不好了;再深入的考虑下去,你可能会否定Decision Tree,但是,其实这个问题,如果是用 Random Forest去做,他又会做的很好,因为在不断的选取数据中,他会不断的得到新的划分点。
你也可以从wikipedia(Random forest)的介绍中感觉到,RF是可以做好的,因为他相当于是带权的KNN;
所以我觉得在实际应用中,从简单模型开始尝试,或许会有新的对数据的认识,从而使你得到一些没有的信息,如上述的问题中,你从linear regression就很容易发现这个效果,但是你如果一来就是NN或者SVM,或许你就发现不了这种关系了;
当然,如果你是为了快速的做出一个好的结果,那一来就尝试复杂模型总会是稍微好点的,理由也是很简单的,因为复杂模型的VC维比较高,当然就能解决更多的问题。


在英语的学习过程中,怎样确定不认识的单词在文中的意思?
以下是几种确定不认识的单词在文中意思的方法:1. 上下文推断法:通过前后文的线索来推断未知单词的意思。例如,单词所在的句子有关键词,可以根据这些关键词推断未知单词的意思。2. 词根词缀法:对于一些带有词根、词缀的单词,可以通过分析词根、词缀的意思来推断单词的大致意思。例如,im- 表示“不”或...

高中学习方法与技巧
学习过程是一个不断发现问题并在此基础上不断解决问题的循环往复的过程。因此,不会提出(发现)问题也就不能主动学习,从而导致学习水平低下。 发现问题或提出问题是在对事物进行全面观察的基础上,通过分析、比较、正向和逆向思维活动来实现的,它具有一定的方法和途径。下面介绍中学化学学习中常用的一些方法,供同学们...

如何在体育课中培养学生的行为习惯
在教学中,教师应注意引导学生仔细地观察,学会分析,学会比较,才能更好的完成与掌握体育的技术与技能。四、不怕困难的习惯 在体育活动中,要培养学生的体育意志。心理学研究表明,意志对一个人的学习具有决定性的因素。一个意志坚强的人,往往能够努力地克服困难,百折不挠,坚持奋斗,最终取得学习的...

视频教学动作修饰语:CVPR2020论文解析
我们的方法学习使用叙述动作作为查询,获取并嵌入具有缩放点积注意的视频相关部分。然后,该方法将动作修改器学习为嵌入动作的线性变换;在动作之间共享。方法对83个任务的YouTube视频中的动作副词对进行了分析,并对分析后的方法进行了训练和评估。结果表明,在考虑副词与反义词的对比时,该方法优于所有基线,...

怎样分析java线程堆栈日志
5) 线程堆栈的分析和相关的技术 6) 常见的问题模板(线程竟态、死锁、IO调用挂死、垃圾回收\/OutOfMemoryError问题、死循环等)7) 线程堆栈问题实例分析 我希望这一系列的培训能给你带来确实的帮助,所以请持续关注每周的文章更新。但是如果我在学习过程中有疑问或者无法理解文章中的内容该怎么办?不用...

教育教学中可以开展哪些教育数据分析?对教育教学有何实际价值?
可以提出更完善的改进方案!3、对学生的体育成绩数据进行分析!现在国家对学生身体素质方面要求也越来越高,对体育成绩的分析能让老师及时掌握学生的身体健康状况,以便于在学习之余增加体育运动的量,提高学生身体素质的同时也提升体育成绩!教育教学中可分析的教育数据还很多,希望谢谢对你有所帮助!

初中各科学习机老师是什么职位?
一是在思考和实干结合上,二是在研究学习方法和实践学习方法上。 思考和实干必须结合:在学习中应该善于思考,从学到的每一点经过思考能够扩展出许多知识,这样就丰富了你学习的内容。这里仅举一例。初二物理学习压强时涉及了连通器原理。书上是这样写的:“上端开口、下部连通的容器叫连通器,连通器里的水不流动时,各...

浅谈教学中如何体现学生的主体地位(教师论
作为教师首先一个指导者,应帮助学生明确要学习什么?和获得什么?对学生要探究的问题要给予指导。教学实践中,教师要分析透教材,让学生首先能知道自己要通过这种活动获取什么,教师要了解学生的关注点是什么?怎样与教材联络起来,又怎样与社会实践联络起来,学生们就知道自己该怎么做了。作为教师首先给他们创设探究问题的情境...

学习Linux的步骤是怎样的
《Linux C编程一站式学习》 宋劲杉写的 《Eensstial C++》《C++ Primer》《Effective C++》《Linux网络编程》 宋劲彬写的 《Unix环境高级编程》《Unix网络编程》 两部 《Linux高级程序设计》 华清远见的 《MySQL必知必会》《数据库系统概念》《大话数据结构》《算法导论》《Linux内核情景分析》《深入理解...

如何让学生在学习过程中体验,感受历史
为了达到满足未来生活需要的教育目的,在教育活动中,学生的生活被忽视了,学生被物化为一种工具,一种“知识的容器”。这样,学生在学习中就难以体验到属于他们的乐趣,历史教学的质量也难以提高。[2] 如何让学生在学习中既触摸到历史的真实,又体验到学习的乐趣呢?笔者认为,应做到下列三个结合。 1.历史学习与课外考察...

遂平县13026644857: 毫无基础的人如何入门 Python ?
竹亭口服: 1. Python是一门非常适合入门的编程的语言,因为它是高度封装的,不需要对于底层特别了解,也能够很好学习使用,python语法非常简单,代码可读性高,对于零基础的人来说更容易接受和使用.2. Python对于代码的规范性要求非常严格,特...

遂平县13026644857: 怎么正确选用数据类型 -
竹亭口服: 数据结构的用途 1,数据结构到底在程序中充当什么角色,(如果说c语言是用来写程序的,数据结构呢???)?? 有数据,和组织数据的数据结构,程序的行为逻辑才可以确定,程序才可能有实际意义. 数据结构是写程序的基础.一定要打...

遂平县13026644857: 机器学习中,有哪些特征选择的工程方法 -
竹亭口服: 特征选择是特征工程中的重要问题(另一个重要的问题是特征提取),坊间常说:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已.由此可见,特征工程尤其是特征选择在机器学习中占有相当重要的地位.通常而言,特...

遂平县13026644857: 在机器学习中rpart是什么选择方法 -
竹亭口服: 在机器学习中rpart是回归树的选择方法.递归拆分(Recursive Partitioning)利用树形结构模型,来做回归、分类和生存分析,主要在rpart包和tree包执行.party包提供两类递归拆分算法,能做到无偏的变量选择和停止标准:函数ctree()用非参条件推断法检测自变量和因变量的关系;而函数mob()能用来建立参数模型.另外,party包里也提供二分支树和节点分布的可视化展示.mvpart包是rpart的改进包,处理多元因变量的问题.

遂平县13026644857: 数据结构到底怎么学比较好啊? -
竹亭口服: 数据结构是计算机存储、组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合.通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的检索算法和索引技术有关.理解一个算法并不仅仅是能把一个算法表面上的东西记住,然后再默写下来而已.真正的理解是理解算法的思想,为什么要这么做,有什么好处,与别的解决一个问题的算法相比,优劣在哪?以及处理问题的时候,能用这个思想方法来解决不同的问题,绝不仅限于算法本身,算法只是表象,思想才是实质

遂平县13026644857: 初学者如何选择合适的机器学习算法(附算法 -
竹亭口服: 如何为分类问题选择合适的机器学习算法 若要达到一定的准确率,需要尝试各种各样的分类器,并通过交叉验证选择最好的一个.但是,如果你只是为你的问题寻找一个“足够好”的算法或者一个起点,以下准则有利于选择合适的分类器:你的...

遂平县13026644857: 什么是机器学习 -
竹亭口服: 机器学习通过从数据里提取规则或模式来把数据转换成信息.主要的方法有归纳学习法和分析学习法.数据首先被预处理,形成特征,然后根据特征创建某种模型.机器学习算法分析收集到的数据,分配权重、阈值和其他参数达到学习目的....

遂平县13026644857: 如何进行有效的数据分析 -
竹亭口服: 首先,我们要明确数据分析的概念和含义,清楚地理解什么是数据分析; 什么是数据分析呢,浅层面讲就是通过数据,查找其中蕴含的能够反映现实状况的规律. 专业一点讲:数据分析就是适当的统计分析方法对收集来的大量数据进行分析,...

遂平县13026644857: 请问机器学习的目的是什么?
竹亭口服: 机器学习的目的是期望能从数据中自动地获得相应的理论,通过采用如推理,模型拟合及从样本中学习,尤其适用于缺乏一般性的理论,噪声模式,及大规模数据集.因此...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网