成不了AI高手?因为你根本不懂数据!听听这位老教授多年心血练就的最实用统计学

成不了AI高手?因为你根本不懂数据!听听这位老教授多年心血练就的最实用统计学

2017-08-20 大数据文摘

著名统计学家、中国人民大学统计学院教授吴喜之教授

授权转载自AI科技大本营

ID:rgznai100

采访 | 胡永波,鸽子

导读

机器学习是一门在统计学和计算机科学交叉点上茁壮成长起来的学科。关于数据的学问,全在统计学里。

在经典统计学中,对于数据性质的研究、误差的分析、数据质量的判断、数据模型的建立,有着非常丰富的思想、理论和经验成果。对于机器学习来说,统计学既是理论基础,又是思想宝库。

但是现实世界中,机器学习的实践者大多出身计算机科学,除了本科学的那一点工科概率论与数理统计,对于统计学,基本上是“随用随学,够用为止”,因此统计学当中大量的思想资源实际上是被闲置的。

事实上,无论是做人工智能,还是做商业数据分析,如果能够对统计学有系统的理解,那么,他对于机器学习的研究和应用便会如虎添翼,登堂入室。

不过大多数统计学出身的学者推崇数学模型驱动的路子,在他们看来,直接从一堆实际数据出发做预测分析的“野路子”,是登不了学术的大雅之堂的。因此相当多的统计学者并没有积极投身机器学习的研究、教学和应用中,与机器学习界的交流也远远不够。

吴喜之教授则走的是一条实用应用之路。

吴喜之教授是我国著名的统计学家,退休前在中国人民大学统计学院任统计学教授。吴教授上世纪六十年代就读于北京大学数学力学系,八十年代出国深造,在美国北卡罗来纳大学获得统计学博士学位,是改革开放之后第一批留美并获得统计学博士学位的中国学者。多年来吴教授在国内外数十所高校讲授统计学课程,在国内统计学界享有盛誉。

早在十多年前,吴教授就第一个在国内大学统计学课堂引入 R 语言,培养了国内第一批 R 语言专家。如今他已古稀之年,仍然孜孜不倦的学习新方法、新工具,并且亲自编程实践,探索不辍。

在统计学家当中,他积极拥抱机器学习方法,并且撰写多部专著,致力于融合统计学和机器学习方法。另一方面,他对于机器学习,特别是数据性质和质量分析、回归与分类,复杂数据统计方法以及时间序列分析,有着统计学家特有的深刻思想和丰富实践,对于机器学习的实践者,是难得的明师。

因此我们抓住吴教授在京的宝贵时间,对他进行了一次专访,请他结合亲身实践经验,谈谈机器学习与统计学相互结合促进的问题。在访谈中吴教授介绍了大量的案例,清晰简明地阐述了他对于机器学习和统计学一些重大问题的看法,是我们学习数据科学、机器学习和人工智能一份难得的参考。

*以下是访谈的部分内容。

做数据就要各领域交叉

AI科技大本营:现在大家都关心人工智能,但我们AI科技大本营内部在讨论的时候就发现,人工智能的关注点更多的是放在算法、模型方面,至于上游的数据搜集和处理过程,大家关心得并不多。您怎么看待这一现象呢?

吴教授:的确是这样的,做任何数据分析,首先要有数据。但是怎么得到这些数据,就是一个费力不讨好的工作了。但这里的事情必须得干。比如,人们能通过编程拿到一些网络数据,但是,拿到数据以后,你怎么看待这个数据?怎么处理?用什么模型?这绝不是一个标准的教科书问题,而是一个集知识、经验、逻辑及创新能力为一体的过程。就拿我的书来说,我在书中写模型,用的虽然都是国外现成的真实数据,但却是挑选过的,如果对我们手中的应用数据,直接用书中的模型就未必合适,至少也需要做各种各样的处理。

比如过去,我参与过税务总局的一个项目,希望把数据中会逃税的那些人给找出来,但数据并未指明哪些人逃税。按照机器学习的术语,这属于"无监督学习",对这个具体数据,没有教科书或文献给出任何的方法。具体的数据没有哪两个是一样的,这就要有独特的处理方法,你必须考虑基于什么样的偷税漏税机理和背景来建立模型,你总不能说大家都在偷税漏税,而的目的是要把最有可能偷税漏税的人找出来,所以你就要了解企业避税方面的思维方式和可能采用的方法。

这就是说,你既要有相关应用领域的知识,又得知道怎么来处理数据,还要会编程什么的……所有的东西你都会了,才能做好。这就是数据科学比较复杂、比较费劲的地方,需要有较强的跨学科能力。

AI科技大本营:那一般企业在数据处理上的问题多出在哪里呢?解决这里的问题需要什么样的能力?

吴教授:处理数据还在其次,他们很多没有处理数据最起码的条件,只能做一些很简单的事情。记得在90年代,我去过一些比较落后的工厂:像是当时的天津汽车厂,生产雁牌轻型货车,从零件到成品没有完整的记录,基本上没有多少有关质量的数据;还有一个生产镍氢电池的工厂,他们希望改进质量,但缺乏关键的数据……这一类的问题有好多,你就很难做。因为到具体单位解决问题时,你希望他有什么数据,他可能就是没有,要想做好事情得从头开始干预。这说明企业生产线上的问题没有那么简单,不是你想拿什么就能拿到什么。但在生产实践上,恰恰需要这方面的数据来做质量控制,企业自己意识不强,你就很难越俎代庖。

AI科技大本营:当下机器学习非常火热,在它落地到这些具体的应用场景时,应该怎么面对这里的数据呢?

吴教授:现在专业编程的人比较多,但真正明白这个数据,理解我们需要从数据得到什么知识的不多。所以,一开始很难泛泛回答。

就说前面税务总局的项目,我刚过去时并不清楚,就让他们先给我讲那个问题,我思考之后,就有了一个大体的概念。这些东西很难说是某一个领域的知识,它是一些领域的知识加上经验、加上数据知识……相互关联起来,然后才有进一步怎么去做的打算。

这不是简单靠几本书、几个模型就能解决的。而且,书上的模型一般比较固定,例子也相对简单,毕竟书上只能介绍那点东西。比如说回归,一般回归书上大部分篇幅写的都是一百年前的线性最小二乘回归,但在最近十几年中就发展了大量基于算法的新回归方法。仅我写的书中介绍的机器学习回归就有很多种,比如基于决策树的有随机森林、bagging、boosting,还有支持向量机及较早就发展的神经网络,它们都能够做回归,往往都比线性最小二乘回归强大……但你必须要挑一个最好的,所以就需要你把这些数据拿过来做交叉验证,要让数据自己来说话,来确定哪个模型好,哪个模型坏。而经典统计上确定模型的优劣方法严重依赖于对数据的无法证明的众多数学假定。

在机器学习方面,很重要的一点就是交叉验证,就是用一部分数据来建立一个模型,然后用另外一块数据来验证这个模型好不好。但是在经典统计里就没有这种东西。

以经典最小二乘回归为例,做了很多无法验证的数学假定,比如模型及误差的线性形式假定,样本点的独立同分布假定,分布的正态性(或大样本)假定,对损失函数的二次形式的假定等等,然后根据各种检验统计量得到p值,再按照p值大小得到结论(往往不加区别地认为p值小于0.05就显著)。

这些基于百年前的知识结构产生的内容就要安排学生们花一个学期来学,即使这样古老的课程还有许多原则性错误出现于教科书中,而数据科学所需要的最有用的内容却往往被忽略。所以我常讲经典统计的数学式教学方法和模型驱动的思维方式误人子弟,这自然会得罪不少人。

一般来说统计专业出身的人对模型比较重视,但对数据感觉不够,甚至不敢触动陌生结构的数据(如果不是害怕的话),搞机器学习必须既了解模型又乐于和数据打交道。所以学统计的如果不跟搞计算机的合作就什么也干不成,这一点应该让大家都知道。

AI科技大本营:那反过来像程序员这种学计算机的人,他们应该怎么跟统计学结合呢?

吴教授:统计学对课程基础的要求比较高,没有办法速成。我们知道,单纯的编程比较容易学,他们最好是在应用中学习统计的批判性思维,需要什么学什么,这样能够保持兴趣和学习动力,学的也较快。

但统计专业中,相当部分统计教授都不会编程,更不熟悉实际的数据分析,这还包括某些博导,他们见到稍微复杂的数据就蒙了。他们可以假定出一个模型,然后就说他们的模型怎么怎么好,但这是在很强的假定之下,比如数据一定要满足什么数学条件……一定要在这个条件下他们的模型才很好,他们最苦恼的就是寻找符合他们条件的数据(为了发表文章),但实际上只有老天爷才知道是否存在这样满足他们条件的数据。

统计学的两种文化

北大时期的吴喜之教授

AI科技大本营:您是怎么开始做机器学习的?

吴教授:因为教学生,我要了解最新的方法,只要能用的、好用的,我就要教给学生去用。要想当好老师就需要不断学习新的知识。机器学习这块跟计算机编程直接相连,我学了以后,用机器学习的方法来解决问题,我觉得比经典统计要好用得多,真的不是一个数量级。

AI科技大本营不是一个数量级,这该怎么讲呢?

吴教授这是一种比方,而不是严格的术语。不过简单来形容的话,对于很多复杂的数据,用机器学习的预测误差如果只是1%、2%左右的话,那用经典统计就可能有百分之十几以上,差别就很大。当然,对于比较简单的数据,经典统计也可能表现不错,这不能一概而论。尽管从数学上,那些经典的东西看起来很漂亮,很吸引人(特别是对数学背景的),但面对复杂的现实世界,必须要改变思想,不管方法漂亮与否,关键是能够解决问题。许多机器学习方法也很美,但不是数学公式漂亮,而是其思维及逻辑的美。现在都有飞机了,你还靠拉着板车在那走,那就是你的问题了。

AI科技大本营:那您是什么时候开始用机器学习的?

吴教授:这个是在非典的时候,03年吧,是用R语言。在中国,我大概是头一个在正式课堂上教R语言的。

在那以前,我已经在教S-Plus了,S-Plus跟R很像,都是编程语言。但当时多数老师教统计是不用编程语言的,他们会用盗版的SPSS及SAS等点鼠标式傻瓜软件,不仅侵犯版权,还会让学生产生依赖性。所以国内的学生不懂计算机编程,跟这一点关系很大。老师自己都不会编程,只能教学生用盗版软件。只学点鼠标肯定是学不会编程、也看不懂代码的。

我开始教R语言的那一级的学生,有些在数据领域中比较出名,比如李舰和刘思喆,比我要强多了。

后来我读了一篇很有名的文章,《统计建模:两种文化》(Statistical Modeling: The Two Cultures, 2001),作者是Leo Breiman,加州大学伯克利一个很有名的教授(CART决策树、bagging及随机森林的发明者),他去世后我才读到他的这篇文章。他在文章中狠批了把数据限制在假定模型中的经典统计学界,然后大力推广他在商业咨询中用机器学习做算法模型的有效经验,这一点我感同身受。

机器学习圈子意识到数据的生成过程是复杂和未知的,这一点符合实际,学完之后就能用出来,所以我就自己去推广。但是在国内推广很难,只能自己去教、去写书,把机器学习的东西写进书里,让更多的人掌握。

用机器学习来改造统计学

AI科技大本营:那我可不可以这样理解,你现在更多的希望,其实是想把机器学习的一些思想注入到统计学这个学科里边,对吧?

吴教授:我是希望改变统计学,用机器学习这个思想来改造统计学。机器学习的思维方式就是科学的思维方式。整个统计学界的问题太多,所以就需要改造。把它从数学假定主导的思维方式改造过来,从模型驱动改变成数据驱动或问题驱动,机器学习是实现这种改造的一个最佳方式。

其实我一直都对处理实际的数据感兴趣,尽量从数据出发来做统计,问题驱动的思维一直都有。九几年还在南开的时候,我就不断倡导这个事情。现在统计学做的很多东西都跟实际数据没什么关系,这种做法不过是把人禁锢在自己的模型里做梦。脱离实际的统计不但是无用的,而且是有害的。

Breiman的这篇文章使我的思维更加清晰,目的更加明确,Breiman的文章对我近年来走过的路程有着无可比拟的指导意义。

AI科技大本营:我们应该怎么基于问题驱动的思维来学习呢,吴老师您在这方面都是怎么做的?

吴教授:搞数据科学应该是问题驱动,学习知识也应该是问题驱动。我不喜欢完整地看大部头的统计书,因为整本整本地看下来,目的不明,被作者牵着走,效果肯定不好……一定要有感兴趣的问题来引导,才好钻研进去。学东西一定要问题驱动。好多新方法,我都是从R语言里面学来的:首先看那些软件包能解决什么问题;如果对这些问题感兴趣我就看它的方法;如果想知道方法里面是什么原理、用的什么数学、为什么这样做,就去进一步看参考文献……这一套下来我自然就学会了;相对于打基础式的学习方法来说,这是相反的学习方法,是拉动式学习方法。

如果被老师限制住,你就算再聪明也能学傻了。所以一定不能死学,一定要有个目标,要有一个感兴趣的目的。比如,你的目标是把这个数据分析好,你必须考虑用什么方法来解决,怎么来编程……这里面的兴趣自然而然就来了。如果你只是为了编程而编程,把语法一、二、三、四背下来,你就没有一个载体把它们串起来。这是我最讨厌的学习方式,学生为了打基础,盲目地先看这本书,再看那本书,一堆书看完之后就完全迷失了,如果记忆力好会记一些东西,但绝对不会有助于增加动手能力。

反过来,为了解一个问题,你需要什么东西就去看什么,主动权在你手中掌握,这种拉动式的方式就让你有动机去学,而且学到的东西都是有用的。这是我的经验,你要是让我从头到尾去看一本书,我肯定是看不下去的。

AI科技大本营那您在教学生的时候是怎样的,是如何让学生也能把你这套东西用起来的?

吴教授:对一般学生来说,我可能是有点像赶鸭子上架,如同魔鬼训练。在每个学校,我都给每个学生一个或者两个国外的数据网址,没有两个学生数据相同,然后给他们讲解一些包括机器学习在内的数据分析方法及编程初步,并且给他们一些我自己编的程序模板,目的是让他们得到任何从数据可以得到的结论。期末每个学生要上交数据、代码及PPT或Word文件,并且上台在一定时间内向大家讲解数据的意义、所用的模型、计算过程及结论。这之后,学生就再也不害怕数据了。前年在云南的大理大学我就是这样做的,学生的基础虽然不如一些重点大学好,但都做出来了,而且许多人把我给的作业作为毕业论文。

前些天我看到他们本科毕业论文中有三个人还得了优秀论文奖。之前我在云南师大教课也一样,他们学起来也挺苦的,不过后来其中有几个人参加前年的全国大学生统计建模大赛,还拿到了一等奖。

当然,他们中的一些人在做完作业,甚至得奖以后,也可能还是不那么明白里面的道理,也可能只是会用现成的工具,但已经有了飞跃的进步,最重要的是他们有了信心。因为一开始他们真是什么程序都不会,掌握的统计方法也很有限,要现教R语言及各种统计方法才能把课上下去。他们老师原来教的最多是Excel。我曾经看到一本教学生怎么用Excel来解决问题的很不错的书。我看了这书以后,花了半天功夫写了大约一页R程序,把那一本书的问题全给解决了,这说明R程序语言的简洁及强大的能力。

总之,一个结果就是给学生一种新的眼界及新的体验,让他们有信心来把事情做下去。

实际上,零基础的人也可以学机器学习,比如云南的一个烟草公司,我给他们一线的员工讲过几天统计,里面有人还是外语专业出身的,连统计的基本概念都不清楚,我就这样给他们讲,讲完给他们不同的网站数据去做,结果包括外语专业在内的绝大部分学员都做完了所分配的数据分析。

刚开始学习的时候,你不可能什么都学、什么都知道。你要从基础的模型开始,去理解它背后是怎么想的,为什么要这么编程序、这么去处理,这样做的好处是什么、能避免什么样的问题,背后这些东西弄清楚了,你就能弄清楚自己的问题是怎么出的。这样你就能学会怎么去用这些模型,甚至发展自己的一些新东西出来。

其实弄懂机器学习背后的机理并不难,也不需要事先读很多专业书。即使是Breiman那几个天才的发明,他背后的思维方式及编程原则并不复杂,如果把这些弄清楚,你对统计学的理解就能进一大步。

吴喜之教授亲自编写程序解决问题

AI科技大本营:这么说来,我们学机器学习、学数据科学,其实首先就是要有一种由问题来驱动的数据思维,用上这种思维就是对统计学的改造,我们能这样理解吗?

吴教授:一百年来,由于没有计算机,数据量有限,于是由数学家发展的经典统计引入了大量的数学假定来弥补数据信息的不足,这就给统计打上了很深的数学烙印,并且导致了很多统计学家模型驱动的错误思维方式。在计算技术飞速发展以及数据膨胀的新时代,如果还把自己束缚在这种模型驱动的思维方式中,就会被时代所抛弃。机器学习是典型的数据驱动的思维方式,它从数据出发,通过各种计算方法来理解数据,并建立适当的算法模型来拟合数据并得到结论。不仅在应用中,而且要在统计教学中大量引入机器学习方法是非常必要的,目的是还统计以数据驱动或问题驱动的本来面目。

 深度学习与计算机视觉 

稀牛学院最新线上课程,带你了解人工智能领域中,计算机视觉的理论基础前沿应用!不仅有完善的班级管理,更是首次承诺足量GPU的培训课程!

未来已至,AI不远!

快扫码与时代互动吧!

往期精彩文章

点击图片阅读

DOTA2中打败Dendi的AI如何炼出?OpenAI公布两周集训细节(含实战视频)

内容转载自公众号

AI科技大本营

了解更多

微信扫一扫
关注该公众号

时间: 2024-11-05 02:59:38

成不了AI高手?因为你根本不懂数据!听听这位老教授多年心血练就的最实用统计学的相关文章

Double 数据保留两位小数一:五舍六入

1 package com; 2 3 public class T2 { 4 5 public static void main(String[] args) { 6 7 System.out.println(calculateProfit(0.233)); 8 System.out.println(calculateProfit(0.235)); 9 System.out.println(calculateProfit(0.237)); 10 System.out.println(calcul

FPGA设计千兆以太网MAC(3)——数据缓存及位宽转换模块设计与验证

本文设计思想采用明德扬至简设计法.上一篇博文中定制了自定义MAC IP的结构,在用户侧需要位宽转换及数据缓存.本文以TX方向为例,设计并验证发送缓存模块.这里定义该模块可缓存4个最大长度数据包,用户根据需求改动即可. 该模块核心是利用异步FIFO进行跨时钟域处理,位宽转换由VerilogHDL实现.需要注意的是用户数据包位宽32bit,因此包尾可能有无效字节,而转换为8bit位宽数据帧后是要丢弃无效字节的.内部逻辑非常简单,直接上代码: 1 `timescale 1ns / 1ps 2 3 //

《统计思维程序员数学之概率统计第2版》中英文PDF+数据代码+《面向数据科学家的实用统计学》中英文PDF+源代码+学习总结

作为一个程序员,我认为,不需要把数学全部学完,要选择合适自己的资料. <统计思维:程序员数学之概率统计(第2版)>以程序模拟的方式而不是数学教材上毫无来由的定理解释了大多数统计上的基本概念.<统计思维:程序员数学之概率统计(第2版)>,中文PDF,带书签目录,204页,文字可以复制.<统计思维:程序员数学之概率统计(第2版)>,英文PDF,带书签目录,225页,文字可以复制. 配套python源代码+数据. 下载:https://pan.baidu.com/s/1Jju

这可能是AI、机器学习和大数据领域覆盖最全的一份速查表

https://mp.weixin.qq.com/s?__biz=MjM5ODE1NDYyMA==&mid=2653390110&idx=1&sn=b3e5d6e946b719d08b67d9ebf88283fe&chksm=bd1c3d0d8a6bb41bf05a8ccc9f375528c7c5e4223b190acc9593082b50e17855d2ccdd0e8ac2&mpshare=1&scene=23&srcid=0110mg1nBdOA

Python语言及其运用_第七章_像高手一样玩转数据

[主要内容]1.格式化:2.正则表达式 [基本知识] 一.格式化 (一)使用%的旧式格式转化 1.基本格式:string % data string包含待插值的序列,带插入的部分由%和字母组成.转换类型: %s  字符串 %d  十进制整数         %x  十六进制            %o  八进制整数 %f   十进制浮点数     %e  科学计算法表示的浮点数 %%   文本% [例]>>>Our cat %s weights %s pounds." % (c

使Decimal类型数据保留N位小数且不进行四舍五入操作(C#)

一 问题描述 开发中,需要使Decimal类型数据保留小数点后的两位小数且不需要进行四舍五入操作,即直接截取小数点后面的两位小数即可.例如:1.245M --> 1.24,而不是1.25 使用Decimal.Round()方法可以实现保留Decimal类型数据小数点后的若干位小数,但是该方法会进行四舍五入操作,而不是直接截取.所以,该方法不可取,在网上搜寻一番也没有找到合适的方法,便自己实现了一个截取Decimal类型数据小数点后若干位的方法. 二 详细的实现代码 using System; n

js中如何将数据获得2位小数以及对数据进行千分位划分

js中toFixed(n) 方法可把 数字四舍五入为指定小数位数n的数字,注意:这个方法只能对数据类型为Number的数据起作用,包括float,int等.例如: 123.12345.toFixed(2); "123.12" 对数据进行千分位划分采用这样的一个语句就行了:.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,').注意:replace()方法只能对字符串类型起作用,而我们队数据进行千分位划分的时候通常是对数值进行划分,因此在

利用Python对二进制数据进行按位处理

最近在用Python做数据包解析,遇到一些要按位处理二进制数据的问题.折腾了一个早上,大概有一点思路,记下来备忘吧. 我要解决的问题是判断一个字节的某几位是否为特定的值,比如判断一个字节的前四位是不是0110. 首先,创建一个文档,里面随便写点东西,保存之后用可以查看二进制数据的软件打开,我用的是notepad++里的HEX-Editor插件. 可以看到字符'a'对应的二进制数据是61(01100001).下面对这个字节的数据进行处理. 首先是打开文件,用read()函数读进去一个字节,用16进

如何选择数据中心U位资产?

一.对于U位资产管理产品来说,除了最基本的物理位置定位之外,通常还具备多种功能,用户可以在实际使用中根据自身的需要进行合理选择. 1.实时定位-可以对资产物理位置进行实时准确定位,精确到机柜内每一U位,准确率要达到99.99%以上: 2.自动变更-资产物理位置发生变化时,如上架.下架.迁移等,系统可以及时更新资产物理位置信息,无需手工记录: 3.资产查询:维护人员可以根据资产编号.设备型号或其他已记录信息,快速查询定位到设备的具体安装位置,方便现场人员及时维护: 4.资产盘点:通过资产管理系统,