说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

何谓机器学习 机器学习能做些什么?

HTML文档下载 WORD文档下载 PDF文档下载
利用计算机来彰显数据背后的真实含义,这才是机器学习的真实含义。它既不是只会徒然模仿的机器人,也不是具有人类感情的仿生人。

最近我和一对夫妇共进晚餐,他们问我从事什么职业,我回应道:“机器学习。”妻子回头问丈夫:“亲爱的,什么是机器学习?”她的丈夫答道:“T-800型终结者。”在《终结者》系列电影中,T-800是人工智能技术的反面样板工程。不过,这位朋友对机器学习的理解还是有所偏差的。机器学习能让我们自数据集中受到启发,换句话说,我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的真实含义。它既不是只会徒然模仿的机器人,也不是具有人类感情的仿生人。

enter image description here

T-800型终结者(图片来源网络)

现今,机器学习已应用于多个领域,远超出大多数人的想象,下面就是假想的一日,其中很多场景都会碰到机器学习:假设你想起今天是某位朋友的生日,打算通过邮局给她邮寄一张生日贺卡。你打开浏览器搜索趣味卡片,搜索引擎显示了10个最相关的链接。你认为第二个链接最符合你的要求,点击了这个链接,搜索引擎将记录这次点击,并从中学习以优化下次搜索结果。然后,你检查电子邮件系统,此时垃圾邮件过滤器已经在后台自动过滤垃圾广告邮件,并将其放在垃圾箱内。接着你去商店购买这张生日卡片,并给你朋友的孩子挑选了一些尿布。结账时,收银员给了你一张1美元的优惠券,可以用于购买6罐装的啤酒。之所以你会得到这张优惠券,是因为款台收费软件基于以前的统计知识,认为买尿布的人往往也会买啤酒。然后你去邮局邮寄这张贺卡,手写识别软件识别出邮寄地址,并将贺卡发送给正确的邮车。当天你还去了贷款申请机构,查看自己是否能够申请贷款,办事员并不是直接给出结果,而是将你最近的金融活动信息输入计算机,由软件来判定你是否合格。最后,你还去了赌场想找些乐子,当你步入前门时,尾随你进来的一个家伙被突然出现的保安给拦了下来。“对不起,索普先生,我们不得不请您离开赌场。我们不欢迎老千。” 图1.1集中展示了使用到的机器学习应用。

enter image description here

图1-1 机器学习在日常生活中的应用,从左上角按照顺时针方向依次使用到的机器学习技术分别为:人脸识别、手写数字识别、垃圾邮件过滤和亚马逊公司的产品推荐

上面提到的所有场景,都有机器学习软件的存在。现在很多公司使用机器学习软件改善商业决策、提高生产率、检测疾病、预测天气,等等。随着技术指数级增长,我们不仅需要使用更好的工具解析当前的数据,而且还要为将来可能产生的数据做好充分的准备。

传感器和海量数据

虽然我们已从互联网上获取了大量的人为数据,但最近却涌现了更多的非人为数据。传感器技术并不时髦,但如何将它们接入互联网确实是新的挑战。有预测表明,20%的互联网非视频流量都将由物理传感器产生。

地震预测就是一个很好的例子,传感器收集了海量的数据,如何从这些数据中抽取出有价值的信息是一个非常值得研究的课题。1989年,洛马·普列埃塔地震袭击了北加利福尼亚州,63人死亡,3757人受伤,成千上万人无家可归;然而,相同规模的地震2010年袭击了海地,死亡人数却超过23万。洛马·普列埃塔地震后不久,一份研究报告宣称低频磁场检测可以预测地震, 但后续的研究显示,最初的研究并没有考虑诸多环境因素,因而存在着明显的缺陷。如果我们想要重做这个研究,以便更好地理解我们这个星球,寻找预测地震的方法,避免灾难性的后果,那么我们该如何入手才能更好地从事该研究呢?我们可以自己掏钱购买磁力计,然后再买一些地来安放它们,当然也可以寻求政府的帮助,让他们来处理这些事。但即便如此,我们也无法保证磁力计没有受到任何干扰,另外,我们又该如何获取磁力计的读数呢?这些都不是理想的解决方法,使用移动电话可以低成本的解决这个问题。

enter image description here

地震示意图(图片来源网络)

现今市面上销售的移动电话和智能手机均带有三轴磁力计,智能手机还有操作系统,可以运行我们编写的应用软件,十几行代码就可以让手机按照每秒上百次的频率读取磁力计的数据。此外,移动电话上已经安装了通信系统,如果可以说服人们安装运行磁力计读取软件,我们就可以记录下大量的磁力计数据,而附带的代价则是非常小的。除了磁力计,智能电话还封装了很多其他传感器,如偏航率陀螺仪、三轴加速计、温度传感器和GPS接收器,这些传感器都可以用于测量研究。

移动计算和传感器产生的海量数据意味着未来我们将面临着越来越多的数据,如何从海量数据中抽取到有价值的信息将是一个非常重要的课题。

机器学习非常重要

在过去的半个世纪里,发达国家的多数工作岗位都已从体力劳动转化为脑力劳动。过去的工作基本上都有明确的定义,类似于把物品从A处搬到B处,或者在这里打个洞,但是现在这类工作都在逐步消失。现今的情况具有很大的二义性,类似于“最大化利润”,“最小化风险”、“找到最好的市场策略”......诸如此类的任务要求都已成为常态。虽然可从互联网上获取到海量数据,但这并没有简化知识工人的工作难度。针对具体任务搞懂所有相关数据的意义所在,这正成为基本的技能要求。正如谷歌公司的首席经济学家Hal Varian所说的那样:

“我不断地告诉大家,未来十年最热门的职业是统计学家。很多人认为我是开玩笑,谁又能想到计算机工程师会是20世纪90年代最诱人的职业呢?如何解释数据、处理数据、从中抽取价值、展示和交流数据结果,在未来十年将是最重要的职业技能,甚至是大学,中学,小学的学生也必需具备的技能,因为我们每时每刻都在接触大量的免费信息,如何理解数据、从中抽取有价值的信息才是其中的关键。这里统计学家只是其中的一个关键环节,我们还需要合理的展示数据、交流和利用数据。我确实认为,能够从数据分析中领悟到有价值信息是非常重要的。职业经理人尤其需要能够合理使用和理解自己部门产生的数据。”
——McKinsey Quarterly,2009年1月


大量的经济活动都依赖于信息,我们不能在海量的数据中迷失,机器学习将有助于我们穿越数据雾霭,从中抽取出有用的信息。

Python语言的优势

基于以下三个原因,我们选择Python作为实现机器学习算法的编程语言:(1) Python的语法清晰;(2) 易于操作纯文本文件;(3) 使用广泛,存在大量的开发文档。

enter image description here

可执行伪代码

Python具有清晰的语法结构,大家也把它称作可执行伪代码(executable pseudo-code)。默认安装的Python开发环境已经附带了很多高级数据类型,如列表、元组、字典、集合、队列等,无需进一步编程就可以使用这些数据类型的操作。使用这些数据类型使得实现抽象的数学概念非常简单。此外,读者还可以使用自己熟悉的编程风格,如面向对象编程、面向过程编程、或者函数式编程。

Python语言处理和操作文本文件非常简单,非常易于处理非数值型数据。Python语言提供了丰富的正则表达式函数以及很多访问Web页面的函数库,使得从HTML中提取数据变得非常简单直观。

Python比较流行

Python语言使用广泛,代码范例也很多,便于读者快速学习和掌握。此外,在开发实际应用程序时,也可以利用丰富的模块库缩短开发周期。

在科学和金融领域,Python语言得到了广泛应用。SciPy和NumPy等许多科学函数库都实现了向量和矩阵操作,这些函数库增加了代码的可读性,学过线性代数的人都可以看懂代码的实际功能。另外,科学函数库SciPy和NumPy使用底层语言(C和Fortran)编写,提高了相关应用程序的计算性能。

Python的科学工具可以与绘图工具Matplotlib协同工作。Matplotlib可以绘制2D、3D图形,也可以处理科学研究中经常使用到的图形。

Python开发环境还提供了交互式shell环境,允许用户开发程序时查看和检测程序内容。

Python开发环境将来还会集成Pylab模块,它将NumPy、SciPy和Matplotlib合并为一个开发环境。虽然Pylab还没有并入Python环境,但是不远的将来我们肯定可以在Python开发环境找到它。

Python语言的特色

诸如MATLAB和Mathematica等高级程序语言也允许用户执行矩阵操作,MATLAB甚至还有许多内嵌的特征可以轻松地构造机器学习应用,而且MATLAB的运算速度也很快。然而MATLAB的不足之处是软件费用太高,单个软件授权就要花费数千美元。虽然也有适合MATLAB的第三方插件,但是没有一个有影响力的大型开源项目。

Java和C等强类型程序设计语言也有矩阵数学库,然而对于这些程序设计语言来说,最大的问题是即使完成简单的操作也要编写大量的代码。程序员首先需要定义变量的类型,对于Java来说,每次封装属性时还需要实现getter和setter方法。另外还要记着实现子类,即使并不想使用子类,也必须实现子类方法。为了完成一个简单的工作,我们必须花费大量时间编写了很多无用冗长的代码。Python语言则与Java和C完全不同,它清晰简练,而且易于理解,即使不是编程人员也能够理解程序的含义,而Java和C对于非编程人员则像天书一样难于理解。

所有人在小学二年级已经学会了写作,然而大多数人必须从事其他更重要的工作。
——鲍比·奈特


也许某一天,我们可以在这句话中将“写作”替代为“编写代码”,虽然有些人对于编写代码很感兴趣,但是对于大多数人来说,编程仅是完成其他任务的工具而已。Python语言是高级编程语言,我们可以花费更多的时间处理数据的内在含义,而无须花费太多精力解决计算机如何得到数据结果。Python语言使得我们很容易表达自己的目的。

Python语言的缺点

Python语言唯一的不足是性能问题。Python程序运行的效率不如Java或者C代码高,但是我们可以使用Python调用C编译的代码。这样,我们就可以同时利用C和Python的优点,逐步地开发机器学习应用程序。我们可以首先使用Python编写实验程序,如果进一步想要在产品中实现机器学习,转换成C代码也不困难。如果程序是按照模块化原则组织的,我们可以先构造可运行的Python程序,然后再逐步使用C代码替换核心代码以改进程序的性能。C++ Boost库就适合完成这个任务,其他类似于Cython和PyPy的工具也可以编写强类型的Python代码,改进一般Python程序的性能。

如果程序的算法或者思想有缺陷,则无论程序的性能如何,都无法得到正确的结果。如果解决问题的思想存在问题,那么单纯通过提高程序的运行效率,扩展用户规模都无法解决这个核心问题。从这个角度来看,Python快速实现系统的优势就更加明显了,我们可以快速地检验算法或者思想是否正确,如果需要,再进一步优化代码。

来自:图灵社区

用动态语言编写程序,命名更重要 命中率80%,磁盘I/O减半,Flashcache的发展史 这次它很低调:谷歌正式发布Android4.4和Nexus 5 iPhone 5S来了,iPhone 6还会远吗?概念机来袭 [开源推荐]PhysicsJS:基于JavaScript的强大的物理引擎 望虚窥实!专访Oculus Rift创始人Palmer Luckey 利益至上,开源也不免于此 开发者必备,超实用的PHP代码片段! 福利来了!AngularJS资源大集锦 移动周报:“360儿童卫士”手环的是与非 Ion Stoica和他的数据故事(上) 开发者必备:测试网站速度的五个免费在线工具 谷歌员工曝光在谷歌工作那些最糟糕的事情 MDCC 2013全民移动 玩转智能硬件展 如何降低白噪声对网站用户体验的影响? 谁才是真正的资深开发者? 东软董事长刘积仁阐述三大战略 构建以知识资产驱动的商业模式 一切皆为 JavaScript 黑莓:弃私有化任命华人为临时CEO 卖给联想的节奏? 谁说WP仍然不行?意大利WP份额已超iOS MDCC之移动娱乐游戏峰会:百家手游齐逐金玩奖 专访Mozilla宫力:基于Web是Firefox OS最大的资本 如何设计一款Java框架? AngularJS优化最佳实践:从1200ms缩减到35ms Linus Torvalds宣布Linux kernel3.12正式发布! 硅谷的技术文化——渴求独处! MDCC为移动开发者服务:一看、一聊、一聚 做华为合伙人:华为开发者联盟沙龙·北京站纪实 Q3全球智能手机报告:Android和iOS基本不变 WP最得意 Google Apps不再支持IE9 IE9用户或将无法使用Gmail等服务 [开源推荐]CecOS:企业级的云操作系统和虚拟化平台 用accsee数据库 怎么不显示登陆的用户密码框? c,如何得到一个文件名中指定位置指定长度的字符串?? 服务器是否打开支持FileSystemObject对象的权限 我的数据表列宽为7个字符 , 而我只输入3个字符 , 当我输入4个字符后 , 再次运行程序却看不到所有数据 从新做人 求救:在NT Server下调用GetVolumeInformationA取分区序列号,返回结果为负数!!!怎么回事啊? 正式到新公司上班,送300分,感谢在我最困难的时候在“软件工程”版给过我帮助的朋友们!! 请问斑竹及所有人,怎样得到QuickReport的总页数? Websphere3.5的一个BUG.希望有人反对.多谢.. 什么是DAMAP的对象 哪里有 winpcap 或 libnet 及其他网络编程辅助包下载? 谁能提供PSP文档?最好是Humphrey的那本书! 代码出现bebug.请大家帮我找!!!! TO:net_lover(孟子E章),详情请入内! 有谁用过DEV express系列的dxdbgrid??它是如何把一个文本文件txt读到dxdbgrid1.columns[i]的picklist中去,作为picklist的内容的啊? 我想在Linux下做数据库开发,用什么数据好? 我的pws可能出了问题,那位高手能解决一下 关于控制winamp 各位同行你们有这个的源程序吗(Cacio DT-900数据采集器) Html Help 制作方法 luodi(无知者无畏), 请进: 我用shell(app.path+"\mdac.exe"),来调用微软数据访问控件2.0,提示出错:命令行语法错误, 求救:如何将剪贴板中的内容放到image控件上 how to get the sytax of customer user object ? jsp中的打印问题 pb中有没有类似iif之类的语句 大虾们,怎样将String 类型转换成float 请问在及时战略中,怎么实现寻路的 我想在状态栏显示时间,有没有属性可以让时间自动变化,而不用其它辅助控件? 不会没人愿意回答这个问题吧,都贴第二次了!! 吃西瓜 我在注冊自創構件時總是出錯,請各位幫忙解決. 关于ado连接sybase的问题,紧急求救!!!(我的最高分了) 29分:flexcell定位 请教一下,关于Delphi COM类型库的问题 大家来谈谈申奥成功对我们的影响吧,我想知道怎么利用这个契机大赚一笔 各位谁喜欢“后街男孩”??喜欢的给分! 请问在DBGRID中改变当前选定行的颜色? 我想在DataSourceDataChange()中实现。 客户端怎么与服务器端通信 为什么我在窗口里修改了一个记录的图片字段后,在数据窗口内不能正常显示? 我要在RedLinux71下安装WEB服务器软件,请部如何做? 如何计算某年某月的天数和每天对应的星期 help!!! 为什么我的D6在编译时出现错误:“Fatal Error QuickRpt.pas(23):File not found:'Dsgnintf.dcu' 帝国时代之农民搞笑版……哈哈 如何用DEBUG的命令取消cmos密码!!!急急急! 请教一个Redhat安装的问题 该死的创新virba128…… 急!!!给tripofdream(梦之旅)和能解决全文检索的高手! 有台WIN95机器启动是时出错缺文件mtrr.vxd,udf.vxd谁能帮我! 对于BMP图象的旋转(90、180)的处理。用BitBlt()能否实现。 《Windows网络编程技术》例子中的一个问题。 编写程序,计算圆柱体,球体,正方体和长方体的表面积和体积(提示:本题中,可先定义一 1.一个高10cm的圆柱,如果把高减少3cm,表面积就比原来减少18.84cm.这个圆柱的体积是多少立方厘米?2.把一个高8dm的圆柱体割拼成一个等底的近似长方体后,表面积增加了24dm²,圆柱体的体积是多 如图:一个圆柱体被截去5厘米后,圆柱的表面积减少了31.4平方厘米,求原来圆柱的表面积是一个圆柱体被截去5厘米后,圆柱的表面积减少了31.4平方厘米,求原来圆柱的表面积是多少?图没标圆柱 正方体、长方体、圆柱体的体积都可以用S乘以H来计算对吗? 一个圆柱体底面周长是18.84cm,高是10cm,这个圆柱体的占地面积是多少? 一个圆柱体,如果把它的高截短了3厘米,表面积就减少了94.2立方CM,体积就减少了多少立方厘米 用正方体,长方体,圆柱体,球体的盒子可以拼什么东西 数学题一个圆柱体高减少4厘米,表面积减少125.6厘米,它的体积是多少? 一个圆柱的高是10cm,若高减少4cm,则表面积减少125.6平方cm,求圆柱体的体积? 一个圆柱体如果它的高截短3厘米表面积减少94.2平方厘米它的底面半径减少多少体积减少多少 把一个圆柱体的高减少4厘米后,表面积减少50.24平方厘米,求减少部分的体积 从一个圆柱上截下一个高10cm小圆柱体.表面积比原来减少了188.1平方cm截下的圆柱的体积是多少 9、一个圆柱体,如果把它的高截短3厘米,表面积就减少94.2平方厘米.它的底面半径体积减少了( )立方厘米9、一个圆柱体,如果把它的高截短3厘米,表面积就减少94.2平方厘米.它的底面半径是( 一段圆柱体钢材,截去10cm长的一段后,表面积减少了314,体积减少了( ) 一个底面直径是8cm,高是16cm圆柱体从中间劈开后得到的图形,这个图形的表面积是多少? 一个圆柱体,如果把它的高截短3厘米,表面积就减少94.2平方厘米.它的底面半径是多少厘米?体积减少了多少立方厘米? 把一个直径是10CM的圆柱体沿直径纵向切开以后,表面积增加了100CM,原来这个圆柱的体积是多少立方厘米?把一个直径是8CM的圆柱体沿直径纵向切开以后,表面积增加了112CM,原来这个圆柱的体积是 一个底面直径是8cm,高是16cm的圆柱,如果它的高增加了10cm,它的表面积是多少? 一个圆柱体的底面半径是1分米,他等侧面积是( )平方分米,表面积是( )平方分米,体积是( ) 一个圆柱体的底面半径是2cm,高5cm,它的侧面积是多少,表面积是多少,体积是多少列出算式 一个圆柱体的高是10CM,如果高减少4CM,则表面积减少125·6.原来圆柱的体积是()立方厘米.最好有算式 输入圆柱体的底面半径和高,求圆柱体的表面积和体积.请编写程序, 一个圆柱体的底面半径是4CM,高6CM,现在把这个圆柱体的高增加5CM,表面积和体积各增加多少? 一个圆柱体,如果把它的高截短3里厘米,表面积就减少94.2平方厘米,体积就减少了( )立方厘米? 编写程序,调用函数求一个圆柱体的表面积和体积.用c语言编写.谢谢啦. 一个圆柱体已知他的a=5cm h=2cm 求他的表面积和体积.(要有算式.) 一个圆柱体如果它的高截短3CM,表面积就减少94.2平方厘米,体积就减少了多少立方厘米 从键盘输入半径和高输出圆柱体的底面积和体积C语言 一个高为5CM的圆柱体,如果它的高增加3CM,那么它的表面积就增加18.84CM平方.原来的圆柱体的体积是多少? 一个圆柱体,如果把它的高截短2厘米,表面积就减少62.8平方厘米,体积就减少多少立方厘米?请把具体步骤都写一遍谢谢 c语言求圆柱体的表面积和体积求圆柱体的表面积和体积.从键盘输入圆柱体的半径和高,求它表面积和体积,保留到小数点后2位. 一个圆柱体的底面周长是31.4厘米,如果高增加2厘米 底面大小不变 那么表面积比原来增加了多少平方厘米一个圆柱体的底面周长是31.4厘米,如果高增加2厘米 底面大小不变 那么表面积比原来 把1张周长是80的圆柱体木柴锯成三段相等的圆柱,表面积增加了48平方厘米,原来的圆柱体木柴的体积是 c语言计算圆柱体的体积与表面积 要求保留三位小数为什么我的输出总是0000?#include#define pi 3.14int main(){float r,h,v,s;scanf("%f%f",&r,&h);v=Pi*r*r*h;s=Pi*2*r*(r+h);printf("%.3f%.3f",&v,&s);return 0;} 一个圆柱体的底面周长是31.4米,高增加2厘米,底面大小不变,则表面积增加了多少急用,明天就要 一个高5厘米的圆柱体,沿底面直径将圆柱体锯成两块,其表面积增加40平方厘米,原来这个圆柱的体积? C语言编程,求我错在哪里了,目标:求圆柱体表面积和体积.#includeint main(){\x05float r,h,S,V,pi;\x05pi = 3.14;\x05scanf("%f,%f",&r,&h);\x05S = pi*r*r*2+2*pi*r*h;\x05V = pi*r*r*h;\x05printf("%f\n%f\n",S,V);\x05return 0;}我编译 一个圆柱体的底面周长是3.14cm,如多高增加2cm,底面大小不变,那么表面积比原来增加了多少?讲一讲,【必须列算式】 一个高为5厘米的圆柱,沿底面直径将圆柱锯成两块,其表面积增加了40平方厘米,原来这个圆柱的体积是() c语言已知园半径r=1.5设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积,圆球体积,圆柱体 一个圆柱体底面周长是31.4厘米表面积是 408.2平方厘米这个圆柱的高是多少厘米? 一个圆柱体的体积是125.6立方厘米,底面直径是4厘米,它的侧面积是多少平方厘米?2.把一个棱长是6分米的正方体木块,削成一个最大的圆柱体,这个圆柱体的体积是多少立方分米? 输入圆柱体底面的半径R,和高H,输出其表面积S和体积V 用VB输入圆柱体底面的半径R,和高H,输出其表面积S和体积V 一个圆柱体底面周长与高相等,若高减少3cm,表面积减少188.4平方厘米,求原来圆柱体体积. 一个圆柱体,高10厘米,如果高增加2厘米,它的表面积就增加12.56平方厘米,求这个圆柱的侧面积 JAVA声明圆柱体类和圆锥体类,继承矩形类rectangle并实现volume借口,计算表面积和体积要代码哦~注意继承的不是圆~ 把一个长80厘米的圆柱体,沿与底面平行方向平均裁成4段,表面积增加了188.4平方厘米,求每段的体积.详细解说一下,看不懂. 一个圆柱体侧面积是62.8平方厘米,地面积是12.56平方厘米,它的表面积是多少平方厘米? java设计:问题是编写程序计算圆柱体的体积和表面积编写程序计算圆柱体的体积和表面积.提示:1.读入半径和高.2.表面积=半径×半径×π+2×半径×π×高.3.体积=底面积×高4.注意使用的数 把一个长80厘米的圆柱体,沿与底面平行方向平均截成4段表面积增加188.4平方厘米求每段的体积 一个圆柱体,他的直径是10cm,高是10cm,它的表面积是多少? 输入圆柱体的底面半径和圆柱体的高,并计算圆柱体的表面积和体积,并输出结果 从一个圆柱体截下一段高为5CM的小圆柱后,表面积比原来减少188.4平方厘米,被截下的小圆柱的体积是多少 底面直径是4cm,高是10cm的圆柱体,表面积、侧面积和表面积分别怎么算? 已知圆柱体的直径是4厘米和高6厘米求它的表面积和体积 圆柱的底面半径是2厘米,高是5厘米,圆柱体的底面积\表面积\体积,分别是多少? 若上面圆柱表面积展开图中侧面的长是25.12cm,宽是10cm.本这个圆柱的表面积. 把长方体、正方体、圆柱体、圆锥体、球体分为两类为什么?请具体说明。如果考试?怎么办? 个高是10cm的圆柱,如果它的高减少2cm,表面积就减少18.84cm²,原来圆柱的体积是多少? 一个高为10cm的圆柱,如果他的高增加2cm,那么它的表面积就增加125.6平方厘米,求原来圆柱的表面积.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn