《机器学习系统设计:Python语言实现》一1.1 人机界面

1.1 人机界面

如果你有幸用过微软Office套件的早期版本,你大概还能记得Mr Clippy办公助手。这一功能出现在Office 97中,每当你在文档开头输入“亲爱的”,它就会不请自来,从电脑屏幕的右下角蹦出来,询问“你好像在写信,需要帮助吗?”
在Office的早期版本中,Mr Clippy是默认开启的,几乎被所有软件用户嘲笑过,这可以作为机器学习的第一次大败笔而载入史册。
那么,为什么这个欢乐的Mr Clippy会如此遭人痛恨呢?在日常办公任务中使用自动化助手不一定是个坏主意。实际上,自动化助手的后期版本,至少是最好的那几个,可以在后台无缝运行,并能明显提高工作效率。文本预测有很多例子,有些很搞笑,大错特错,但大多数并没有失败,它们悄无声息,已经成为我们正常工作流的一部分。
在这一点上,我们需要区分错误和失败的不同。Mr Clippy的失败是因为它的突兀和差劲的设计,而它的预测并不一定是错误的;也就是说,它可能给出了正确的建议,但那时你已经知道你正在写一封信件。文本预测的错误率很高,经常会得出错误的预测,但这并没有失败,主要是因为它的失败方式被设计为悄无声息的。
设计任何与人机界面紧耦合(系统工程的说法)的系统都很困难。与一般的自然界事物一样,我们并非总能预测人类行为。表情识别系统、自然语言处理和手势识别技术等,开启了人机交互的新途径,对机器学习专家而言,所有这些都具有重要的应用。
每当设计需要人机输入的系统时,我们应当预见所有可能的人机交互方式,而不仅仅是我们所期望的那些方式。在本质上,我们对这些系统试图要做的是,培养它们对人类经验全景的一些理解。
在Web的早期,搜索引擎使用的是一种简单的系统,以文章中出现搜索条件的次数为基础。很快,Web开发者就通过增加关键词与搜索引擎展开了博弈。显然,这将导致一场围绕关键词的竞赛,Web将变得极为烦人。随后,为了提供更为准确的搜索结果,人们又设计了度量优质引用链接的页面排名系统。而今,现代搜索引擎都使用了更为复杂和秘密的算法。
对机器学习设计师同样重要的是,人机交互中所产生的数据量一直在增长。这会带来诸多挑战,尤其是数据的庞大浩瀚。然而,算法的力量正是在于从海量数据中提取知识和洞察力,这对于较小规模的数据集几乎是不可能的。因此,如今大量的人机交互被数字化,而我们才刚刚开始理解和探索其中的数据能够被利用的众多途径。
有项研究的题目为《20世纪书籍中的情绪表现》(The expression of emotion in 20th century books, Acerbi等人,2013),这是一个有趣的例子。尽管严格地说,该研究属于数据分析而非机器学习,但就一些理由而言,它还是具有说明性的。该研究的目的是,从20世纪的书籍中抽取情绪内容文本,以情绪分值的形式进行图表化。通过访问Gutenberg数字图书馆、WordNet(http://wordnet.princeton.edu/wordnet/)和Google的Ngram数据库(books.google.com/ngrams)中的大量数字化书籍,该研究的作者能够绘制出20世纪文学作品中所反映出的文化变迁。他们通过绘制情绪词语使用的趋势来实现其研究目的。
在该研究中,作者对每个词语进行标记(1-gram分词算法),并与情绪分值和出版年份进行关联。诸如快乐、悲伤、恐惧等情绪词语,可以依据其表达的正面或负面情绪进行评分。情绪分值可以从WordNet(wordnet.princeton.edu)获得。WordNet给每个情绪词语都赋予了情绪反应分值。最后,作者对每一情绪词语的出现次数进行了计数:

在此式中,ci表示特定情绪词语的计数,n表示情绪词语的总数(不是所有词语,仅包括具有情绪分值的词语),Cthe表示文本中the的计数。在归一化总和时,考虑到一些年份出版或数字化的书籍数量更多,同时晚期的书籍趋向于包含更多的技术语言,因此使用了词语the而不是所有词语的计数。对于在相当长的一段时期内的散文文本中的情绪,这种表示更为精确。最后,通过正态分布对分值进行归一化,即Mz,减去均值后除以标准差。

上图摘自《20世纪书籍中的情绪表现》(The expression of emotion in 20th century books, Alberto Acerbi, Vasileios Lampos, Phillip Garnett, R. Alexander Bentley)美国科学公共图书馆。
这里,我们可以看到该项研究所生成的一张图表。该图显示了这一时期所著书籍的快乐-悲伤分值,从中可以明显看出二战时期的负面倾向。
这项研究之所以有趣,有如下一些原因。首先,它是一项数据驱动的科学研究,而在过去,类似的研究内容被认为是诸如社会学和人类学的软科学,但在该研究中,给出了坚实的实验基础。此外,尽管其研究结论令人印象深刻,但其实现过程相对容易。这主要得益于WordNet和Google已经完成的那些卓越努力。其亮点在于,如何使用互联网上免费的数据资源和软件工具,例如Python的数据和机器学习包等,任何具备数据技能和动机的人都能够从事这方面的研究。

时间: 2024-12-30 16:11:48

《机器学习系统设计:Python语言实现》一1.1 人机界面的相关文章

Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉.人工智能.数学.天文等.它同样适用于机器学习也是意料之中的事. 当然,它也有些缺点;其中一个是工具和库过于分散.如果你是拥有unix思维(unix-minded)的人,你会觉得每个工具只做一件事并且把它做好是非常方便的.但是你也需要知道不同库和工具的优缺点,这样在构建系统时才能做出合理的决策.工具本身不能改善系统或产品,但是使用正确的工具,我们可以工作得更高效,生产率更高.因此了解正确的工具,对你的工作领域是非常重要的. 这篇文

sklearn:Python语言开发的通用机器学习库

引言:深入理解机器学习并完全看懂sklearn文档,需要较深厚的理论基础.但是,要将sklearn应用于实际的项目中,只需要对机器学习理论有一个基本的掌握,就可以直接调用其API来完成各种机器学习问题. 本文选自<全栈数据之门>,将向你介绍通过三个步骤来解决具体的机器学习问题. sklearn介绍 scikit-learn是Python语言开发的机器学习库,一般简称为sklearn,目前算是通用机器学习算法库中实现得比较完善的库了.其完善之处不仅在于实现的算法多,还包括大量详尽的文档和示例.其

机器人系统设计与制作:Python语言实现2.5 用Blender制作机器人的三维模型

2.5 用Blender制作机器人的三维模型 在这一节中,我们将设计机器人的3D模型.3D模型主要用来进行三维仿真,采用Blender工具软件进行建模.Blender的版本必须要在V2.6以上,目前我们只在V2.6以上版本中测试过. Blender软件主界面上的工作空间和用于3D建模的工具栏如图2-14的屏幕截图所示. 我们选择用Blender这个工具的主要原因是,它可以用Python脚本语言进行机器人的3D建模.Blender有一个内置的Python解释器和脚本编辑器,用于代码编写.这里,我们

机器人系统设计与制作:Python语言实现2.1 服务机器人的设计需求

摘要 服务机器人的机械设计 本书的主要目的是通过设计和构建机器人,并使用Python语言对它进行编程实现来学习机器人技术.我们先来看看如何从零开始对机器人的机械结构进行设计.我们将要设计搭建的是一种服务机器人,它将用于酒店和餐馆为顾客提供食物和饮料. 在本章中,我们可以看到这个机器人将使用的各种各样的机械零部件.同时,还将学到如何组装这些机械零部件.我们可以使用CAD软件工具来设计和装配这些零部件,同时搭建一个机器人的3D模型进行模拟仿真. 酒店里使用的机器人一般会比较大,但在这里我们打算搭建一

强者联盟——Python语言结合Spark框架

引言:Spark由AMPLab实验室开发,其本质是基于内存的快速迭代框架,"迭代"是机器学习最大的特点,因此非常适合做机器学习.得益于在数据科学中强大的表现,Python语言的粉丝遍布天下,如今又遇上强大的分布式内存计算框架Spark,两个领域的强者走到一起,自然能碰出更加强大的火花(Spark可以翻译为火花),因此本文主要讲述了PySpark. 本文选自<全栈数据之门>. 全栈框架 Spark由AMPLab实验室开发,其本质是基于内存的快速迭代框架,"迭代&qu

数据科学和机器学习工具和语言最新动态

文章讲的是数据科学和机器学习工具和语言最新动态,第18届年度KDnuggets软件投票又一次受到了分析.数据科学界和软件生产商的热情参与.与去年相似,约有2900人参与了此次投票.最近几年,Python的使用增长率一直比R快,到今年,Python终于以微弱的优势超过了R的使用率 (52.6% Vs 52.1%).然而最大的惊喜应该是深度学习工具的广泛共享和使用.2017年深度学习有32%的使用率,而在2016年只有18%,2015年9%.谷歌Tensorflow迅速成为深度学习平台的领头者,以2

Linux集群和自动化维3.1 Python语言的应用领域

第3章 轻量级自动化运维工具Fabric详解 近期公司的业务系统代码发布频繁,笔者同时在几个项目组里面穿插工作,发现发布和运维的工作都相当机械,加上频率比较高,导致时间的浪费也比较多.很多测试工作,例如通过SSH登录到测试环境,推送代码,然后修改Bug进行测试,这些操作都是非常机械并且具有重复性的.更让人郁闷的是,每次的操作都是相同的,命令基本上都是一样的,并且是在多台机器上执行,很难在本机上以一个脚本来搞定,主要时间都浪费在使用SSH登录和输入命令上了.这个时候需要一个轻量级的自动化运维工具,

《基于ArcGIS的Python编程秘笈(第2版)》——第1章 面向ArcGIS的Python语言基础

第1章 面向ArcGIS的Python语言基础 同其他编程语言一样,Python也支持多种类型的程序架构.本章主要介绍Python的基本语言架构.首先,介绍如何创建新的Python脚本及编辑已有的脚本:其次,介绍Python语言的特点,如添加注释.创建变量并赋值.创建内置变量等,以使Python的代码更加简单明了. 然后,介绍Python语言提供的各种内置数据类型,如字符串.数字.列表和字典等.类和对象是Python等面向对象编程语言的基本概念,在使用ArcGIS编写地理处理脚本时会经常用到它们

Python语言在未来的发展前景

做了JAVA开发十年,也做过大大小小的项目,最近一两年做开发的被一门编程语言,也就是Python给刷屏了,在各个论坛中,关注圈中,Python的关注量一直都是很高,今天小编给大家聊一下学习Python语言可以发展哪些方向以及Python语言在未来的发展. 首先:Python语言在学术上非常受欢迎,不是计算机专业的人,很多都在学习Python.因为这个语言的前景是不可限量的,而且他的语法非常的简单易懂,这就让很多一些提及编程就恐慌的人减去了担心,现在已经是一人应该掌握一门编程语言的时代,很多不是程

《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

1.2 Python语言简介 本节将首先简单介绍Python语言的一些基本情况,包括其发展和使用的情况.而后介绍Python语言系统的安装和使用方面的基本常识.1.2.1 Python语言的发展和应用 Python语言是CWI(荷兰国家数学和计算机研究中心)的程序员Guido van Rossum在1989年开始开发的一种高级编程语言,当时的主要设计目标是希望能用于方便地管理CWI的Amoeba操作系统.后来,由于其各方面的优点而逐渐流行起来. Python语言现在由Python软件基金会(Py