传统的人机交互,主要通过键盘、鼠标、屏幕等方式进行,只追求便利和准确,无法理解和适应人的情绪或心境。而如果缺乏这种情感理解和表达能力,就很难指望计算机具有类似人一样的智能,也很难期望人机交互做到真正的和谐与自然。由于人类之间的沟通与交流是自然而富有感情的,因此,在人机交互的过程中,人们也很自然地期望计算机具有情感能力。情感计算(Affective Computting)就是要赋予计算机类似于人一样的观察、理解和生成各种情感特征的能力,最终使计算机像人一样能进行自然、亲切和生动的交互。 有关人类情感的深入研究,早在19世纪末就进行了。然而,除了科幻小说当中,过去极少有人将“感情”和无生命的机器联系在一起。只有到了现代,随着数字信息技术的发展,人们才开始设想让机器(计算机)也具备“感情”。从感知信号中提取情感特征,分析人的情感与各种感知信号的关联,是国际上近几年刚刚兴起的研究方向(图1)。
人的情绪与心境状态的变化总是伴随着某些生理特征或行为特征的起伏,它受到所处环境、文化背景、人的个性等一系列因素的影响。要让机器处理情感,我们首先必须探讨人与人之间的交互过程。那么人是如何表达情感,又如何精确地觉察到它们的呢?人们通过一系列的面部表情、肢体动作和语音来表达情感,又通过视觉、听觉、触觉来感知情感的变化。视觉察觉则主要通过面部表情、姿态来进行;语音、音乐则是主要的听觉途径;触觉则包括对爱抚、冲击、汗液分泌、心跳等现象的处理。
情感计算研究的重点就在于通过各种传感器获取由人的情感所引起的生理及行为特征信号,建立“情感模型”,从而创建感知、识别和理解人类情感的能力,并能针对用户的情感做出智能、灵敏、友好反应的个人计算系统,缩短人机之间的距离,营造真正和谐的人机环境(图2)。 在生活中,人们很难保持一种僵硬的脸部表情,通过脸部表情来体现情感是人们常用的较自然的表现方式,其情感表现区域主要包括嘴、脸颊、眼睛、眉毛和前额等。人在表达情感时,只稍许改变一下面部的局部特征(譬如皱一下眉毛),便能反映一种心态。在1972年,著名的学者Ekman提出了脸部情感的表达方法(脸部运动编码系统FACS)。通过不同编码和运动单元的组合,即可以在脸部形成复杂的表情变化,譬如幸福、愤怒、悲伤等。该成果已经被大多数研究人员所接受,并被应用在人脸表情的自动识别与合成(图3)。
随着计算机技术的飞速发展,为了满足通信的需要,人们进一步将人脸识别和合成的工作融入到通信编码中。最典型的便是MPEG4 V2视觉标准,其中定义了3个重要的参数集:人脸定义参数、人脸内插变换和人脸动画参数。表情参数中具体数值的大小代表人激动的程度,可以组合多种表情以模拟混合表情。
在目前的人脸表情处理技术中,多侧重于对三维图像的更加细致的描述和建模。通常采用复杂的纹理和较细致的图形变换算法,达到生动的情感表达效果。在此基础上,不同的算法形成了不同水平的应用系统(图4,图5) 人的姿态一般伴随着交互过程而发生变化,它们表达着一些信息。例如手势的加强通常反映一种强调的心态,身体某一部位不停地摆动,则通常具有情绪紧张的倾向。相对于语音和人脸表情变化来说,姿态变化的规律性较难获取,但由于人的姿态变化会使表述更加生动,因而人们依然对其表示了强烈的关注。
科学家针对肢体运动,专门设计了一系列运动和身体信息捕获设备,例如运动捕获仪、数据手套、智能座椅等。国外一些著名的大学和跨国公司,例如麻省理工学院、IBM等则在这些设备的基础上构筑了智能空间。同时也有人将智能座椅应用于汽车的驾座上,用于动态监测驾驶人员的情绪状态,并提出适时警告。意大利的一些科学家还通过一系列的姿态分析,对办公室的工作人员进行情感自动分析,设计出更舒适的办公环境。 在人类的交互过程中,语音是人们最直接的交流通道,人们通过语音能够明显地感受到对方的情绪变化,例如通过特殊的语气词、语调发生变化等等。在人们通电话时,虽然彼此看不到,但能从语气中感觉到对方的情绪变化。例如同样一句话“你真行”,在运用不同语气时,可以使之成为一句赞赏的话,也可以使之成为讽刺或妒忌的话。
目前,国际上对情感语音的研究主要侧重于情感的声学特征的分析这一方面。一般来说,语音中的情感特征往往通过语音韵律的变化表现出来。例如,当一个人发怒的时候,讲话的速率会变快,音量会变大,音调会变高等,同时一些音素特征(共振峰、声道截面函数等)也能反映情感的变化。中国科学院自动化研究所模式识别国家重点实验室的专家们针对语言中的焦点现象,首先提出了情感焦点生成模型。这为语音合成中情感状态的自动预测提供了依据,结合高质量的声学模型,使得情感语音合成和识别率先达到了实际应用水平。 虽然人脸、姿态和语音等均能独立地表示一定的情感,但人在相互交流的过程中却总是通过上面信息的综合表现来进行的。所以,惟有实现多通道的人机界面,才是人与计算机最为自然的交互方式,它集自然语言、语音、手语、人脸、唇读、头势、体势等多种交流通道为一体,并对这些通道信息进行编码、压缩、集成和融合,集中处理图像、音频、视频、文本等多媒体信息。
目前,多模态技术本身也正在成为人机交互的研究热点,而情感计算融合多模态处理技术,则可以实现情感的多特征融合,能够有力地提高情感计算的研究深度,并促使出现高质量、更和谐的人机交互系统。
在多模态情感计算研究中,一个很重要的研究分支就是情感机器人和情感虚拟人的研究。美国麻省理工学院、日本东京科技大学、美国卡内基·梅隆大学均在此领域做出了较好的演示系统。目前中科院自动化所模式识别国家重点实验室已将情感处理融入到了他们已有的语音和人脸的多模态交互平台中,使其结合情感语音合成、人脸建模、视位模型等一系列前沿技术,构筑了栩栩如生的情感虚拟头像,并正在积极转向嵌入式平台和游戏平台等实际应用(图6)。 情感状态的识别和理解,则是赋予计算机理解情感并做出恰如其分反应的关键步骤。这个步骤通常包括从人的情感信息中提取用于识别的特征,例如从一张笑脸中辨别出眉毛等,接着让计算机学习这些特征以便日后能够准确地识别其情感。
为了使计算机更好地完成情感识别任务,科学家已经对人类的情感状态进行了合理而清晰的分类,提出了几类基本情感。目前,在情感识别和理解的方法上运用了模式识别、人工智能、语音和图像技术的大量研究成果。例如:在情感语音的声学分析的基础上,运用线性统计方法和神经网络模型,实现了基于语音的情感识别原型;通过对面部运动区域进行编码,采用HMM等不同模型,建立了面部情感特征的识别方法;通过对人姿态和运动的分析,探索肢体运动的情感类别等等。
不过,受到情感信息的捕获技术的影响,并缺乏大规模的情感数据资源,有关多特征融合的情感理解模型的研究还有待深入。随着未来的技术进展,还将提出更有效的机器学习机制。 情感计算与智能交互技术试图在人和计算机之间建立精确的自然交互方式,将会是计算技术向人类社会全面渗透的重要手段。未来随着技术的不断突破,情感计算的应用势在必行,其对未来日常生活的影响将是方方面面的,目前我们可以预见的有:
情感计算将有效地改变过去计算机呆板的交互服务,提高人机交互的亲切性和准确性。一个拥有情感能力的计算机,能够对人类的情感进行获取、分类、识别和响应,进而帮助使用者获得高效而又亲切的感觉,并有效减轻人们使用电脑的挫败感,甚至帮助人们便于理解自己和他人的情感世界。
它还能帮助我们增加使用设备的安全性(例如当采用此类技术的系统探测到司机精力不集中时可以及时改变车的状态和反应)、使经验人性化、使计算机作为媒介进行学习的功能达到最佳化,并从我们身上收集反馈信息。例如,一个研究项目在汽车中用电脑来测量驾车者感受到的压力水平,以帮助解决所谓驾驶者的“道路狂暴症”问题。
情感计算和相关研究还能够给涉及电子商务领域的企业带来实惠。已经有研究显示,不同的图像可以唤起人类不同的情感。例如,蛇、蜘蛛和枪的能引起恐惧,而有大量美元现金和金块的则可以使人产生非常强烈的积极反应。如果购物网站和股票交易网站在设计时研究和考虑这些因素的意义,将对客流量的上升产生非常积极的影响。
在信息家电和智能仪器中,增加自动感知人们的情绪状态的功能,可以提供更好的服务。
在信息检索应用中,通过情感分析的概念解析功能,可以提高智能信息检索的精度和效率。
在远程教育平台中,情感计算技术的应用能增加教学效果。
利用多模式的情感交互技术,可以构筑更贴近人们生活的智能空间或虚拟场景等等。
情感计算还能应用在机器人、智能玩具、游戏等相关产业中,以构筑更加拟人化的风格和更加逼真的场景。 由于缺乏较大规模的情感数据资源,情感计算的发展受到一定的限制,而且多局限在语音、身体语言等具体而零散的研究领域,仅仅依靠这些还难以准确地推断和生成一个人的情感状态,并进行有效的情感交互。目前,科学家们正在积极地探索多特征融合的情感计算理论模型。很多人认为,今后几年情感计算将在这些方面需要取得突破:
更加细致和准确的情感信息获取、描述及参数化建模。
多模态的情感识别、理解和表达(图像、语音、生理特征等)。
自然场景对生理和行为特征的影响。
更加适用的机器学习算法。
海量的情感数据资源库。 不久前,为了推动我国在这一领域的研究,探讨情感计算和智能交互技术的发展动态与趋势,促进我国科研人员在此领域的交流与合作,中国科学院自动化研究所、中国自动化学会、中国计算机学会、中国图象图形学会、中国中文信息学会、国家自然科学基金委员会和国家863计划计算机软硬件技术主题作为主办单位,在北京主办了第一届中国情感计算与智能交互学术会议。
事实证明,情感计算的概念尽管诞生不久,但已受到学术界和产业界的高度重视,相关领域的研究和应用正方兴未艾,国家自然科学基金委也将其列入重点项目的指南中。值得注意的是,近几年来,与情感计算有密切关系的普适计算和可穿戴式计算机的研究也已获得了蓬勃发展,并同样得到了国家的大力支持。这为情感信息的实时获取提供了极大的便利条件,也为情感计算在国内的发展提供了更好的发展平台。
做数据分析必须学R语言的4个理由
R 是一种灵活的编程语言,专为促进探索性数据分析、经典统计学测试和高级图形学而设计。R 拥有丰富的、仍在不断扩大的数据包库,处于统计学、数据分析和数据挖掘发展的前沿。R 已证明自己是不断成长的大数据领域的一个有用工具,并且已集成到多个商用包中,比如 IBM SPSS 和 InfoSphere,以及 Mathematica。
本文提供了一位统计学家Catherine Dalzell对 R 的价值的看法。
为什么选择 R
R可以执行统计。您可以将它视为 SAS Analytics 等分析系统的竞争对手,更不用提 StatSoft STATISTICA 或 Minitab 等更简单的包。政府、企业和制药行业中许多专业统计学家和方法学家都将其全部职业生涯都投入到了 IBM SPSS 或 SAS 中,但却没有编写过一行 R 代码。所以从某种程度上讲,学习和使用 R 的决定事关企业文化和您希望如何工作。我在统计咨询实践中使用了多种工具,但我的大部分工作都是在 R 中完成的。以下这些示例给出了我使用 R 的原因:
R 是一种强大的脚本语言。我最近被要求分析一个范围研究的结果。研究人员检查了 1,600 篇研究论文,并依据多个条件对它们的内容进行编码,事实上,这些条件是大量具有多个选项和分叉的条件。它们的数据(曾经扁平化到一个 Microsoft Excel 电子表格上)包含 8,000 多列,其中大部分都是空的。研究人员希望统计不同类别和标题下的总数。R 是一种强大的脚本语言,能够访问类似 Perl 的正则表达式来处理文本。凌乱的数据需要一种编程语言资源,而且尽管 SAS 和 SPSS 提供了脚本语言来执行下拉菜单意外的任务,但 R 是作为一种编程语言编写的,所以是一种更适合该用途的工具。
R 走在时代的前沿。统计学中的许多新发展最初都是以 R 包的形式出现的,然后才被引入到商业平台中。我最近获得了一项对患者回忆的医疗研究的数据。对于每位患者,我们拥有医生建议的治疗项目数量,以及患者实际记住的项目数量。自然模型是贝塔—二项分布。这从上世纪 50 年代就已知道,但将该模型与感兴趣的变量相关联的估算过程是最近才出现的。像这样的数据通常由广义估计方程式 (general estimating equations, GEE) 处理,但 GEE 方法是渐进的,而且假设抽样范围很广。我想要一种具有贝塔—二项 R 的广义线性模型。一个最新的 R 包估算了这一模型:Ben Bolker 编写的 betabinom。而 SPSS 没有。
集成文档发布。 R 完美地集成了 LaTeX 文档发布系统,这意味着来自 R 的统计输出和图形可嵌入到可供发布的文档中。这不是所有人都用得上,但如果您希望便携异步关于数据分析的书籍,或者只是不希望将结果复制到文字处理文档,最短且最优雅的路径就是通过 R 和 LaTeX。
没有成本。作为一个小型企业的所有者,我很喜欢 R 的免费特定。即使对于更大的企业,知道您能够临时调入某个人并立即让他们坐在工作站旁使用一流的分析软件,也很不错。无需担忧预算。
R 是什么,它有何用途
作为一种编程语言,R 与许多其他语言都很类似。任何编写过代码的人都会在 R 中找到很多熟悉的东西。R 的特殊性在于它支持的统计哲学。
一种统计学革命:S 和探索性数据分析
140 字符的解释:R 是 S 的一种开源实现,是一种用于数据分析和图形的编程环境。
计算机总是擅长计算 — 在您编写并调试了一个程序来执行您想要的算法后。但在上世纪 60 和 70 年代,计算机并不擅长信息的显示,尤其是图形。这些技术限制在结合统计理论中的趋势,意味着统计实践和统计学家的培训专注于模型构建和假设测试。一个人假定这样一个世界,研究人员在其中设定假设(常常是农业方面的),构建精心设计的实验(在一个农业站),填入模型,然后运行测试。一个基于电子表格、菜单驱动的程序(比如 SPSS 反映了这一方法)。事实上,SPSS 和 SAS Analytics 的第一个版本包含一些子例程,这些子例程可从一个(Fortran 或其他)程序调用来填入和测试一个模型工具箱中的一个模型。
在这个规范化和渗透理论的框架中,John Tukey 放入了探索性数据分析 (EDA) 的概念,这就像一个鹅卵石击中了玻璃屋顶。如今,很难想像没有使用箱线图(box plot) 来检查偏度和异常值就开始分析一个数据集的情形,或者没有针对一个分位点图检查某个线性模型残差的常态的情形。这些想法由 Tukey 提出,现在任何介绍性的统计课程都会介绍它们。但并不总是如此。
与其说 EDA 是一种理论,不如说它是一种方法。该方法离不开以下经验规则:
只要有可能,就应使用图形来识别感兴趣的功能。
分析是递增的。尝试以下这种模型;根据结果来填充另一个模型。
使用图形检查模型假设。标记存在异常值。
使用健全的方法来防止违背分布假设。
Tukey 的方法引发了一个新的图形方法和稳健估计的发展浪潮。它还启发了一个更适合探索性方法的新软件框架的开发。
S 语言是在贝尔实验室由 John Chambers 和同事开发的,被用作一个统计分析平台,尤其是 Tukey 排序。第一个版本(供贝尔实验室内部使用)于 1976 年开发,但直到 1988 年,它才形成了类似其当前形式的版本。在这时,该语言也可供贝尔实验室外部的用户使用。该语言的每个方面都符合数据分析的 “新模型”:
S 是一种在编程环境操作的解释语言。S 语法与 C 的语法很相似,但省去了困难的部分。S 负责执行内存管理和变量声明,举例而言,这样用户就无需编写或调试这些方面了。更低的编程开销使得用户可以在同一个数据集上快速执行大量分析。
从一开始,S 就考虑到了高级图形的创建,您可向任何打开的图形窗口添加功能。您可很容易地突出兴趣点,查询它们的值,使散点图变得更平滑,等等。
面向对象性是 1992 年添加到 S 中的。在一个编程语言中,对象构造数据和函数来满足用户的直觉。人类的思维始终是面向对象的,统计推理尤其如此。统计学家处理频率表、时间序列、矩阵、具有各种数据类型的电子表格、模型,等等。在每种情况下,原始数据都拥有属性和期望值:举例而言,一个时间序列包含观察值和时间点。而且对于每种数据类型,都应得到标准统计数据和平面图。对于时间序列,我可能绘制一个时间序列平面图和一个相关图;对于拟合模型,我可能绘制拟合值和残差。S 支持为所有这些概念创建对象,您可以根据需要创建更多的对象类。对象使得从问题的概念化到其代码的实现变得非常简单。
一种具有态度的语言:S、S-Plus 和假设测试
最初的 S 语言非常重视 Tukey 的 EDA,已达到只能 在 S 中执行 EDA 而不能执行其他任何操作的程度。这是一种具有态度的语言。举例而言,尽管 S 带来了一些有用的内部功能,但它缺乏您希望统计软件拥有的一些最明显的功能。没有函数来执行双抽样测试或任何类型的真实假设测试。但 Tukey 认为,假设测试有时正合适。
1988 年,位于西雅图的 Statistical Science 获得 S 的授权,并将该语言的一个增强版本(称为 S-Plus)移植到 DOS 以及以后的 Windows 中。实际认识到客户想要什么后,Statistical Science 向 S-Plus 添加了经典统计学功能。添加执行方差分析 (ANOVA)、测试和其他模型的功能。对 S 的面向对象性而言,任何这类拟合模型的结果本身都是一个 S 对象。合适的函数调用都会提供假设测试的拟合值、残差和 p-值。模型对象甚至可以包含分析的中间计算步骤,比如一个设计矩阵的 QR 分解(其中 Q 是对角线,R 是右上角)。
有一个 R 包来完成该任务!还有一个开源社区
大约在与发布 S-Plus 相同的时间,新西兰奥克兰大学的 Ross Ihaka 和 Robert Gentleman 决定尝试编写一个解释器。他们选择了 S 语言作为其模型。该项目逐渐成形并获得了支持。它们将其命名为 R。
R 是 S 的一种实现,包含 S-Plus 开发的更多模型。有时候,发挥作用的是同一些人。R 是 GNU 许可下的一个开源项目。在此基础上,R 不断发展,主要通过添加包。R 包 是一个包含数据集、R 函数、文档和 C 或 Fortran 动态加载项的集合,可以一起安装并从 R 会话访问。R 包向 R 添加新功能,通过这些包,研究人员可在同行之间轻松地共享计算方法。一些包的范围有限,另一些包代表着整个统计学领域,还有一些包含最新的技术发展。事实上,统计学中的许多发展最初都是以 R 包形式出现的,然后才应用到商用软件中。
在撰写本文时,R 下载站点 CRAN 上已有 4,701 个 R 包。其中,单单那一天就添加了 6 个 R 。万事万物都有一个对应的 R 包,至少看起来是这样。
我在使用 R 时会发生什么
备注:本文不是一部 R 教程。下面的示例仅试图让您了解 R 会话看起来是什么样的。
R 二进制文件可用于 Windows、Mac OS X 和多个 Linux 发行版。源代码也可供人们自行编译。
在 Windows 中,安装程序将 R 添加到开始菜单中。要在 Linux 中启动 R,可打开一个终端窗口并在提示符下键入 R。您应看到类似图 1 的画面。
图 1 R 工作区
在提示符下键入一个命令,R 就会响应。
此时,在真实的环境中,您可能会从一个外部数据文件将数据读入 R 对象中。R 可从各种不同格式的文件读取数据,但对于本示例,我使用的是来自 MASS 包的 michelson 数据。这个包附带了 Venables and Ripley 的标志性文本 Modern Applied Statistics with S-Plus(参见 参考资料)。michelson 包含来自测量光速的流行的 Michelson and Morley 实验的结果。
清单 1 中提供的命令可以加载 MASS 包,获取并查看 michelson 数据。图 2 显示了这些命令和来自 R 的响应。每一行包含一个 R 函数,它的参数放在方括号 ([]) 内。
清单 1 启动一个 R 会话
2+2 # R can be a calculator R responds, correctly, with 4
library(“MASS”) # Loads into memory the functions and data sets from
# package MASS, that accompanies Modern Applied Statistics in S
data(michelson) # Copies the michelson data set into the workspace
ls() # Lists the contents of the workspace The michelson data is there
head(michelson) # Displays the first few lines of this data set
# Column Speed contains Michelson and Morleys estimates of the
# speed of light, less 299,000, in km/s
# Michelson and Morley ran five experiments with 20 runs each
# The data set contains indicator variables for experiment and run
help(michelson) # Calls a help screen, which describes the data set
图 2 会话启动和 R 的响应
现在让我们看看该数据(参见 清单 2)。输出如 图 3 中所示。
清单 2 R 中的一个箱线图
# Basic boxplot
with(michelson, boxplot(Speed ~ Expt))
# I can add colour and labels I can also save the results to an object
michelsonbp = with(michelson, boxplot(Speed ~ Expt, xlab=”Experiment”, las=1,
ylab=”Speed of Light – 299,000 m/s”,
main=”Michelson-Morley Experiments”,
col=”slateblue1″))
# The current estimate of the speed of light, on this scale, is 7345
# Add a horizontal line to highlight this value
abline(h=7345, lwd=2,col=”purple”) #Add modern speed of light
Michelson and Morley 似乎有计划地高估了光速。各个实验之间似乎也存在一定的不均匀性。
图 3 绘制一个箱线图
在对分析感到满意后,我可以将所有命令保存到一个 R 函数中。参见清单 3。
清单 3 R 中的一个简单函数
MyExample = function(){
library(MASS)
data(michelson)
michelsonbw = with(michelson, boxplot(Speed ~ Expt, xlab=”Experiment”, las=1,
ylab=”Speed of Light – 299,000 m/s”, main=”Michelsen-Morley Experiments”,
col=”slateblue1″))
abline(h=7345, lwd=2,col=”purple”)
}
这个简单示例演示了 R 的多个重要功能:
保存结果—boxplot() 函数返回一些有用的统计数据和一个图表,您可以通过类似 michelsonbp = … 的负值语句将这些结果保存到一个 R 对象中,并在需要时提取它们。任何赋值语句的结果都可在 R 会话的整个过程中获得,并且可以作为进一步分析的主题。boxplot 函数返回一个用于绘制箱线图的统计数据(中位数、四分位等)矩阵、每个箱线图中的项数,以及异常值(在 图 3 中的图表上显示为开口圆)。请参见图 4。
图 4 来自 boxplot 函数的统计数据
公式语言— R(和 S)有一种紧凑的语言来表达统计模型。参数中的代码 Speed ~ Expt 告诉函数在每个 Expt (实验数字)级别上绘制 Speed 的箱线图。如果希望执行方差分析来测试各次实验中的速度是否存在显著差异,那么可以使用相同的公式:lm(Speed ~ Expt)。公式语言可表达丰富多样的统计模型,包括交叉和嵌套效应,以及固定和随机因素。
用户定义的 R 函数— 这是一种编程语言。
R 已进入 21 世纪
Tukey 的探索性数据分析方法已成为常规课程。我们在教授这种方法,而统计学家也在使用该方法。R 支持这种方法,这解释了它为什么仍然如此流行的原因。面向对象性还帮助 R 保持最新,因为新的数据来源需要新的数据结构来执行分析。InfoSphere Streams 现在支持对与 John Chambers 所设想的不同的数据执行 R 分析。
R 与 InfoSphere Streams
InfoSphere Streams 是一个计算平台和集成开发环境,用于分析从数千个来源获得的高速数据。这些数据流的内容通常是非结构化或半结构化的。分析的目的是检测数据中不断变化的模式,基于快速变化的事件来指导决策。SPL(用于 InfoSphere Streams 的编程语言)通过一种范例来组织数据,反映了数据的动态性以及对快速分析和响应的需求。
我们已经距离用于经典统计分析的电子表格和常规平面文件很远,但 R 能够应付自如。从 31 版开始,SPL 应用程序可将数据传递给 R,从而利用 R 庞大的包库。InfoSphere Streams 对 R 的支持方式是,创建合适的 R 对象来接收 SPL 元组(SPL 中的基本数据结构)中包含的信息。InfoSphere Streams 数据因此可传递给 R 供进一步分析,并将结果传回到 SPL。
R 需要主流硬件吗
我在一台运行 Crunchbang Linux 的宏碁上网本上运行了这个示例。R 不需要笨重的机器来执行中小规模的分析。20 年来,人们一直认为 R 之所以缓慢是因为它是一种解释性语言,而且它可以分析的数据大小受计算机内存的限制。这是真的,但这通常与现代机器毫无干系,除非应用程序非常大(大数据)。
R 的不足之处
公平地讲,R 也有一些事做不好或完全不会做。不是每个用户都适合使用 R:
R 不是一个数据仓库。在 R 中输入数据的最简单方式是,将数据输入到其他地方,然后将它导入到 R 中。人们已经努力地为 R 添加了一个电子表格前端,但它们还没流行起来。电子表格功能的缺乏不仅会影响数据输入,还会让以直观的方式检查 R 中的数据变得很困难,就像在 SPSS 或 Excel 中一样。
R 使普通的任务变得很困难。举例而言,在医疗研究中,您对数据做的第一件事就是计算所有变量的概括统计量,列出无响应的地方和缺少的数据。这在 SPSS 中只需 3 次单击即可完成,但 R 没有内置的函数来计算这些非常明显的信息,并以表格形式显示它。您可以非常轻松地编写一些代码,但有时您只是想指向要计算的信息并单击鼠标。
R 的学习曲线是非平凡的。初学者可打开一个菜单驱动的统计平台并在几分钟内获取结果。不是每个人都希望成为程序员,然后再成为一名分析家,而且或许不是每个人都需要这么做。
R 是开源的。R 社区很大、非常成熟并且很活跃,R 无疑属于比较成功的开源项目。前面已经提到过,R 的实现已有超过 20 年历史,S 语言的存在时间更长。这是一个久经考验的概念和久经考验的产品。但对于任何开源产品,可靠性都离不开透明性。我们信任它的代码,因为我们可自行检查它,而且其他人可以检查它并报告错误。这与自行执行基准测试并验证其软件的企业项目不同。而且对于更少使用的 R 包,您没有理由假设它们会实际生成正确的结果。
结束语
我是否需要学习 R或许不需要;需要 是一个感情很强烈的词。但 R 是否是一个有价值的数据分析工具呢当然是的。该语言专为反映统计学家的思考和工作方式而设计。R 巩固了良好的习惯和合理的分析。对我而言,它是适合我的工作的工具。
R是一种专业性很强的统计语言,如果想学得快一些的话,基本的统计学知识要懂,不然很多东西会掌握的比较慢。
掌握基本语法和操作,推荐国内的已经翻译的比如《R语言实战》《R语言编程艺术》,这个过程中最好结合一些小例子来做一些分析的东西。其他还有《R语言实例》《R语言核心技术手册》也都是很好的书!如果需要可视化的话,强烈不推荐学习R本身的作图系统,实在是太不友好了还是用ggplot2吧。
掌握了上面的,就可以深入一些了,如果是做数据分析和可视化,推荐《ggplot2:数据分析与图形艺术》,这个才是作图的神器啊如果是空间分析相关的,推荐《Applied Spatial Data Analysis with R》,这个如果可以的话看英文版,而且要有地学的一些知识背景,中文版翻译的太次了,尽量不要看。数据挖掘机器学习之类的,可以看看比如《数据挖掘与R语言》、《机器学习——实用案例解析》,不过我觉得这几本书没上面的那几本好,但是可以大概看看是咋回事,最好还是看看专门的相关书籍,熟悉各种算法和流程,到时候搜索R的package,照着文档和例子搞定,不是特别难。
最后,强烈推荐统计之都、R-bloggers,统计之都以及谢益辉、肖凯、刘思喆等人的博客(自行Google以及到上面的网站找链接),订阅一下,会很有帮助,RStudio是个很棒的IDE,用起来很爽,功能很强大。
总之,你可以从《R语言实战》开始出发吧!
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)