科学网

 找回密码
  注册
科学网 标签 数据科学 相关日志

tag 标签: 数据科学

相关日志

智能系统研究: 语言和知识的选域测序定位(语文现代化与知识大生产的枢纽)
geneculture 2020-7-2 10:59
主讲嘉宾邹晓辉讲授的融智学导论 第38课 语文现代化与知识模块大生产的枢纽
个人分类: 高教管:特色与质量|1116 次阅读|0 个评论
融智学导论 第37课 改变科学研究思路的十个知识创新点
geneculture 2020-6-18 11:58
2020年春季清华大学雨课堂主讲嘉宾邹晓辉讲授 2007年《融智学原创文集》作者邹晓辉绘制
个人分类: 融智学前期探索|1435 次阅读|4 个评论
阿里云打造Jupyterlab数据科学环境
GISdsq 2020-2-19 07:43
本篇博客主要解决阿里云服务器上Jupyterlab配置方面的一些问题,关于安装教程详情见之前的这篇博客。 Windows的Linux子系统搭建数据科学环境 1 安装完无法启动Jupyterlab 首先声明,我在Anaconda3安装过程中已经设置了将安装相关的Python,ipython,Jupyter等添加到环境变量。但是一开始安装完,直接在命令行里敲入Jupyter lab仍旧提示找不到命令。 造成这个问题的可能原因是仍然需要将安装路径设置到环境变量里,也有可能是没有更新环境变量(因为我没有先更新环境变量测试,所以现在不确定解决方式,但是可以两个都做,应该能解决)。 设置环境变量与更新环境变量。。~/anaconda2/bin指Anaconda安装的位置,对应到我的jupyterlab就是Anaconda3的bin文件夹。后面那句命令行即为更新环境变量。 echo 'export PATH=~/anaconda2/bin:$PATH' ~/.bashrc source ~/.bashrc 2 解决第一个问题以后出现OSError 在解决第一个问题以后,运行jupyter lab,报错为”OSError: Cannot assign requested address”。谷歌搜索问题解决方式即在jupyter lab后面加上—ip=0.0.0.0 —port=8888,即命令如下。 jupyter lab --ip= 0.0 . 0.0 --port= 8888 3 允许root账户登录 由于阿里云服务器一直是root账户登录,因此还需后面加上—allow-root,即命令如下。 jupyter lab --ip= 0.0 . 0.0 --port= 8888 --allow-root 当然阿里云上还需要在安全组上开放8888端口(如果你把port端口换成非8888,即使用更换后的数字)。 4 Jupyter lab配置文件生成 每次赋值token码是比较麻烦的,这里采用生成配置文件修改密码的方式来操作。首先,敲入如下命令行。 jupyter lab --generate-config 然后用vim编辑打开配置文件。可以看到如下关于密码设置的注释。 接着先进入Python3或ipython的命令行。 from notebook.auth import password password() 接着会让你设置密码,设置完密码以后会出现一串字符。将这段字符进行复制,然后打开前面生成的配置文件。找到以下几个地方做修改。 c.NotebookApp.ip = '0.0.0.0' c.NotebookApp.port = 8888 c.NotebookApp.allow_root = True c.NotebookApp.open_browser = False c.NotebookApp.password = '' #填入刚刚复制的字符 这样后续只需要用jupyter lab即可启动Jupyter lab,然后将阿里云服务器的ip地址加上‘:8888/lab’,即可登录,当然阿里云服务器还需要设置8888端口安全组开放。这样就可以愉快地使用Jupyter lab做编程了。骨灰级matplotlib hello world测试。 参考链接: 1. ubuntu16.04下anaconda3的安装和配置,jupyter notebook的简单使用 2. OSError: Errno 99 Cannot assign requested address 3. Jupyter Lab 简单配置 ​
个人分类: 技术干货|3095 次阅读|0 个评论
数据科学与大数据研究演化的文献计量分析
rbwxy197301 2020-2-5 15:20
The evolution of data science and big data research: A bibliometric analysis Daphne R. Raban · Avishag Gordon In this study the evolution of Big Data (BD) and Data Science (DS) literatures and the relationship between the two are analyzed by bibliometric indicators that help establish the course taken by publications on these research areas before and after forming concepts. We observe a surge in BD publications along a gradual increase in DS publications. Interestingly, a new publications course emerges combining the BD and DS concepts. We evaluate the three literature streams using various bibliometric indicators including research areas and their origin, central journals, the countries producing and funding research and startup organizations, citation dynamics, dispersion and author commitment. We fnd that BD and DS have difering academic origin and diferent leading publications. Of the two terms, BD is more salient, possibly catalyzed by the strong acceptance of the pre-coordinated term by the research community, intensive citation activity, and also, we observe, by generous funding from Chinese sources. Overall, DS literature serves as a theory-base for BD publications. 本研究利用文献计量指标中分析了大数据(BD)和数据科学(DS)文献的演变以及两者之间的关系,本研究有助于在概念形成之前和之后在这些研究领域开设相关课程。我们观察到随着DS文献的逐渐增加,BD文献在不断激增。有趣的是,一个新的课程将BD和DS概念整合在一起。我们使用不同的文献计量指标来评估这三种文献流,包括研究领域及其起源、核心期刊,研究和启动组织的产生和资助国家,引文动态,分布和作者。我们发现BD和DS具有不同的学术渊源和不同的领先出版物。我们从大量中文资助文献中发现,在这两个术语中,BD更为显着,可能是由于研究者强烈接受pre-coordinated term的催化。总体而言,DS文献是BD出版物的一个理论基础。 DATA The data in this study was drawn from the database Clarivate Analytics (also known as the WoS, Web of Science) 2019 core collection. This is a selective index of good quality publications. The search was conducted on titles and abstracts of scientifc peer-reviewed publications (N=41,961 for BD, N=244,695 for DS, N=3,552 for interchangeable use). Publications containing BD and DS as pre-coordinated concepts were retrieved from 2006 to March 2019, including publications that use these terms interchangeably (N=7938 for BD, N=2648 for DS, N=242 for interchangeable use). ...... Methodology The retrieved set of publications was analyzed to discover overall productivity, current research areas and their origin, central journals and citation patterns, the countries producing and funding research and startup organizations (Hartmann et al. 2016). The dynamics of BD and DS over time was examined by bibliometric indicators including “highly cited” papers and the immediacy index. Highly cited papers are those that received a high number of citations, usually within the range of 10 recent years or less, depending on the discipline. The highly cited papers indicator was devised to bypass the high number of citations accumulated during a very long publications’ history of researchers. Immediacy index is calculated by dividing citations by publications within the year of publication. The immediacy index indicates, to a large extent, the journal impact (Tomer 1986; Yue et al. 2004), and is also considered to be an indication of the “research front” of a science feld (Meadows 1998: 61). The immediacy index was complemented by the examination of the Price Index which measures the citations to publications in the last fve years as compared to the total number of citations per topic, and examines the aging of the literature. “Ageing patterns can be characterized as a combination of phases of maturation and decline in citation processes” (Glänzel et al. 2016: 2169). The three indicators were used to reveal which concept, BD or DS, is more in use. Intensive usage in a feld indicates a dynamic and promising science feld. The Price Index was measured in two years: in 2010 when all three literatures already existed, and in 2018, more recently, to observe the dynamic of the three trends. Dispersion in the felds of BD and DS was calculated by comparing the number of publications yielded by searches by topic to the same searches by title. A high percent of dispersion indicates a feld with a small cohesive literature core (Tal and Gordon 2017). Another test was that of commitment of authors to the research feld which is an indication of regularity and constancy by authors who are not “one-time visitors” to the feld. Such authors could help in creating theories and paradigms in the research area and maintain continuity in the research feld (González-Alcaide et al. 2016; Gordon 2007). Result(部分图表)
个人分类: 科学计量学|1786 次阅读|0 个评论
融合区块链技术的机构知识库科学数据监护模型研究
terahertz 2020-1-2 10:23
(本文发表于《现代情报》2020年40卷第1期P101-109) 摘要 建设可长期使用和保存的数据监护平台是开展科研数据监护服务的核心环节和关键。 文章针对机构知识库科学数据监护平台存在的数据规范性、可信任度、安全性和隐私问题,利用区块链技术的安全、公正和去中心化等特性,提出融入区块链技术的机构知识库科学数据监护模型。 本模型能够实现机构知识库科学数据监护的基本功能,保障数据存储的安全,提高科学数据共享的效率、利用率和知识产权保护力度。 关键词 :区块链,机构知识库,数据监护,科学数据,数据管理 链接:融合区块链技术的机构知识库科学数据监护模型研究 http://221.8.56.50:90/Jwk_xdqb/CN/abstract/abstract4746.shtml
个人分类: 发表论文|1833 次阅读|0 个评论
叫什么,那是相当滴重要!
zhuyucai1 2019-9-15 13:30
我常说,叫什么不重要,就是个名字,内涵才重要。直到现在。 我的系统辨识课,给研究生开的,叫《系统辨识》,今年报了十几位学生。 给本科生开的,叫《数据分析与系统辨识》,今年报了一百多位学生。问了六位同学为什么选我的课,五位说因为数据分析,一位说因为系统辨识。 以后我这门课改名为《数据科学之系统辨识》。 一定会火。
3816 次阅读|0 个评论
关于信息、智能和数据三大技术的科学思考
geneculture 2019-8-24 05:28
汇集公众科学智慧交流科学思想见解 点燃科学智慧火花构建互动交流平台 首页 智慧火花 学术沙龙 科学视点 信息、智能、数据,从技术到科学:为何是现在? 投稿时间:2018-05-17 17:22 投稿人:邹晓辉 Geneculture访问量: 164 发表评论 2 当今的信息处理技术、人工智能技术和大数据处理技术已发展到了务必要进一步追问其科学基础的问题了。这是为什么? 本文旨在就此做一番初步的分析并试图探寻其蕴涵的科学机理。 图1 人机交互的七个里程碑及其蕴涵的科学原理示意图 由图1可见,1.数字化,2.符号化,3.结构化,4.对象化,是当今的信息处理技术、人工智能技术和大数据处理技术赖以发展的共同基础。它们都卡在了“5.强智化”暨“强”人工智能这个瓶颈之处。直到2017年谷歌的阿尔法狗横扫了人类的围棋冠军之后又被阿尔法零击败 ,这才让人们为之所惊醒基于人工神经网络的深度学习(机器学习)暨依托大数据分析的当代统计学何以竟超越1997年IBM的深蓝 基于规则的人工智能博弈系统?于是,“新一代人工智能”也就诞生了。“6.弱智化”暨“弱”人工智能,至少在该领域似乎已经不成立了。在此,大数据与人工智能结合的威力被凸显了出来。于是,数据科学、智能科学和信息科学同时被提上了科学家的议事日程。北京大学组织牵头承办的第三届智能科学国际会议及其配套的跨学科、跨领域、跨行业(纯学术的)大讨论班(1-7)云集了国内外基础理论研究各方面的专家学者对此做了一系列的交流探讨和充分准备,试图在2018年11月2 -5日大会期间从科学层面展开更深入的探讨。“7.协同化”揭示了其相当一部分科学原理。 为了帮助读者更好地理解“两大类形式化方略” 及其蕴涵的科学原理,同时也为了让读者先睹为快,笔者特意精选了两个典型示例来阐述“智能教育协同创新” 举例介绍的“路径2”(等价于“路径1”)在自然语言(形式化)理解暨专家知识(形式化)表达上的实际应用是如何做到“大道似简”的? 例1是对古诗的自然语言(形式化)理解暨专家知识(形式化)表达。 图2a 三个步骤(见1-2-3 三个苹果)揭示的内在逻辑示意图 图2b 隐含两个“明”借助“明月光”和“望明月”消除歧义的思维导图 由图2可见,图2a不仅展示了间接形式化的“中文字屋”及其蕴涵的深刻原理,而且,还展示了我们可如何在汉字棋盘上选用间接形式化的汉字(如同下汉字棋)而传达整体语义(这样的知识棋谱是以往中文信息处理方式暨借用外来的自然语言处理方式未曾做过的)。图2b不仅通过选取菜单的方式直接让普通用户仅仅使用母语就实现了汉语的间接形式化(结构化和数字化),而且,还可通过具体的间接形式化方式直接排除自然语言的歧义(如“明”的含义与其不同词性的自动判定“明月光”的“明”v和“望明月”的“明”a)。 下面让我们来看英语的文本知识库(英汉两种语言虽迥然不同但存在相似原理)。 例2是对英文的自然语言(形式化)理解暨专家知识(形式化)表达。 图3a 三加一凸显logic的语境示意图 图3b 亚里士多德与弗雷格的语境示意图 由图3可见,图3a不仅可展示间接形式化的“英文字屋”及其蕴涵的深刻原理,而且,还展示了我们可如何在英文棋盘上选用间接形式化的英文(如同下英文棋)而传达整体语义(这样的知识棋谱是以往英文信息处理方式暨外来的自然语言处理方式未曾做过的)。图3b不仅通过选取菜单的方式直接让普通用户仅仅使用英文就实现了英语的间接形式化(结构化和数字化),而且,还可通过具体的间接形式化方式直接排除自然语言的歧义(如“logic”这个义项的两个上下文暨语用情景自动判定“Formal logic”和“Mathematical logic”)。 由此及彼,由表及里,举一反三,读者不难理解我们这样的“双字棋盘”和“知识棋谱”的基本用途(其深刻意义和广泛价值还需做到“懂会熟巧用”后才能逐步体认并感悟)。 由于该诗词知识库和英文知识库都是放在云上共享的,因此,读者都有机会进一步去做此类“语言游戏”(维特根斯坦),进而,去体会“语言即棋”(索绪尔)的科学机理。 至此,读者也许会像笔者一样地感受到自然语言(形式化)理解暨专家知识(形式化)表达通过“双字棋盘”和“知识棋谱”的方式真的可做到“大道似简”的效果。 那么,什么是其中的“道”呢?换一句话说,如何才能让信息、智能和数据的技术推进到其科学的进程加速呢?于是,笔者引入了“三数”、“三智”和“三信”的基本框架: 图4“三数”与“数据科学(树叶)” 由图4发问,传统的数据库技术(包括数据仓库)与当代的大数据技术(包括数据中心)分别对于数字、数据和数字化“三数”与“数据科学(树叶)”之间究竟存在什么样的关系?概率与统计在此扮演了怎样的角色?都涉及一个关键问题:一旦机器翻译等人工智能技术都可转化为信息的自动查询技术,那么,查准率与查全率之间的矛盾是否就可迎刃而解呢? 图5“三智”与“智能科学(树干)” 由图5推知,如果哲学是爱智慧的学问,心理学是可测量智力商数的学问,计算机科学是可产生人工智能的学问,那么,心智哲学所述的强弱两极的人工智能,计算机科学与有关学科结合而产生的人工智能三大学派(功能符号主义、结构神经网络和行为机器人模拟)及其最近异军突起的深度学习和大数据的结合而产生的新一代人工智能,它们之间是否真的会存在统一的科学机理呢?“三智”与“智能科学(树干)”之间究竟存在什么关系? 图6“三信”与“信息科学(树根)” 由图6推知,“三信”涉及信息科学的根本问题。由狭义语言跨越到广义语言或文本,涉及自然语言、思想概念和对象世界三类现象信息的范畴,这就推进到了其本质信息和本体信息的范畴。由此引出了当今的信息处理技术、人工智能技术和大数据处理技术已发展到了务必要进一步追问其科学基础的问题了。于是,爱智慧的哲学、测智力商数的心理学和判定是否具备人工智能的计算机科学,把“三智”暨智能科学的根本问题推到了学术前沿。还有数据、数字以及数字化这样的“三数”暨数据科学的根本问题,也被提到了议事日程,而不仅限于以往的信息科学(它是否能说清楚“三信”涉及信息科学的根本问题?抛砖引玉)。 综上所述,如果说图1所示的七个里程碑是笔者对两大类形式化技术路径怎样逆向建立哲学问题与科学问题之间的桥梁的,那么,图4叶茂,图5干壮、图6根深,所贯通的表述则可给人以简驭繁的启迪。在此大背景下,读者通过“懂会熟巧用”的过程,来体认并感知图2(中文示例)和图3(英文示例)及其蕴涵的科学原理,将会再次发现以小见大的原型揭示生了大生产(标准化)与小生产(个性化)结合对“文本分析”和“知识加工”的影响。 参考文献: David Silver, et al. Mastering the game of Go without human knowledge . Nature volume 550, pages 354–359 (19 October 2017) Michele Mcphee, et al. Deep Blue, IBM's supercomputer, defeats chess champion Garry Kasparov in 1997. NEW YORK DAILY NEWS, MAY 10, 2015 邹晓辉;邹顺鹏.两大类形式化方略 .计算机应用与软件.2013年09期 邹晓辉.智能教育协同创新:学术引领与产业驱动的数字化进程 .数字教育.2017 年06期 http://idea.cas.cn/viewdoc.action?docid=63063from=groupmessageisappinstalled=0 发自我的iPhone
个人分类: 学术研究|1754 次阅读|1 个评论
如何正确使用机器学习中的训练集、验证集和测试集?
热度 3 wshuyi 2019-7-3 10:53
训练集、验证集和测试集,林林总总的数据集合类型,到底该怎么选、怎么用?看过这篇教程后,你就能游刃有余地处理它们了。 问题 审稿的时候,不止一次,我遇到作者 错误使用 数据集合跑模型准确率,并和他人成果比较的情况。 他们的研究创意有的很新颖,应用价值较高,工作可能也做了着实不少。 但因对比方法错误,得出来的结果,不具备说服力。几乎全部都需要 返工 。 这里,我帮你梳理一下,该怎么使用不同的数据集合: 训练集(training set) 验证集(validation set) 测试集(test set) 目的只有一个——避免你 踩同样的坑 。 其实这个问题,咱们之前的教程文章,已有涉及。 《 如何用 Python 和深度迁移学习做文本分类? 》一文中,我曾经给你布置了一个类似的问题。 在文章的末尾,我们对比了当时近期研究中, Yelp 情感分类的最佳结果。 下表来自于:Shen, D., Wang, G., Wang, W., Min, M. R., Su, Q., Zhang, Y., … Carin, L. (2018). Baseline needs more love: On simple word-embedding-based models and associated pooling mechanisms. arXiv preprint arXiv:1805.09843. 注意这里最高的准确率(Accuracy)数值,是 95.81 。 我们当时的模型,在验证集上,可以获得的准确率,是这个样子的: 97.28%,着实不低啊! 于是我问你: 咱们这种对比,是否科学? 你 当时的 答案是什么? 这么久过去了,又看了那么多新的教程和论文,你的答案发生变化了吗? 现在咱们公布一下答案吧。 不科学 。 为什么? 因为 对比方法 有问题。 方法 原文中有这样一句: 这里数据集只提供了训练集和“测试集”,因此我们把这个“测试集”当做验证集来使用。 作为演示,数据集咱们想怎么用,就可以怎么用。 甚至你把测试集拿来做训练,然后在训练集上跑测试,都没有人管。 但是写学术论文,声称你的模型优于已有研究,却绝不能这么草率。 注意,比较模型效能数值结果时,你只能拿不同的模型,在 同样的测试集 上面比。 测试集不同,当然不可以。 但模型A用测试集,模型B用验证集(与A的测试集数据完全一致)比,可以吗? 很多人就会混淆了,觉得没问题啊。既然数据都一样,管它叫做什么名称呢? 可是请你注意,哪怕A模型用的测试集,就是B模型用的验证集,你也 不能 把这两个集合跑出来的结果放在一起比较。 因为这是 作弊 。 你可能觉得我这样说,颇有些吹毛求疵的意味。 咱们下面就来重新梳理一下,不同数据集合的作用。 希望你因此能看清楚,这种似乎过于严苛的要求,其实是很有道理的。 咱们从测试集开始谈,继而是验证集,最后是训练集。 这样“倒过来说”的好处,是会让你理解起来,更加透彻。 先说 测试集 吧。 测试 只有在 同样的测试集 上,两个(或以上)模型的对比才有效。 这就如同参加高考,两个人考同样一张卷子,分数才能对比。 甲拿A地区的卷子,考了600分,乙拿B地区的卷子,考了580分。你能不能说,甲比乙成绩高? 不行吧。 为了让大家更易于比较自己的模型效果,许多不同领域的数据集,都已开放了。而且开放的时候,都会给你指明,哪些数据用于训练,哪些用于测试。 以 Yelp 数据为例。 在 AWS 上存储的 fast.ai 公开数据集中,训练集和测试集都已为你准备好。 你不需要自己进行划分。 大家达成共识,做研究、写论文,都用这个测试集来比拼,就可以。 所以,如果你的研究,是靠着比别人的模型效果来说事儿,那就一定先要弄明白 对方的测试集 是什么。 但是,这个听起来很容易达成的目标,实践中却很容易遇到困难。 因为有的人写论文,喜欢把数据和代码藏着掖着,生怕别人用了去。 他们一般只提一下,是在某个公开数据集上切了一部分出来,作为测试集。 测试数据集不发布,切分方法(包括工具)和随机种子选取办法也不公开。 这是非常不靠谱的行为,纯属自娱自乐。 作为严肃的审稿人,根本就 不应该允许 这样的研究发表。 因为机器学习研究的数据集不开放,便基本上没有 可重复性 (Reproducibility)。 如果你没有办法精确重复他的模型训练和测试过程,那么他想汇报多高的准确率,就纯凭个人爱好了。 当然,我们不是活在理想世界的。 你在某一个领域,用机器学习做应用研究的时候,面对这种无法重复已发表论文的情境,该怎么办? 直接用他声称的结果与你的实际运行结果比较,你可能是在追逐海市蜃楼。累到气喘吁吁,甚至怀疑自我的程度,也徒劳无功。 忽视它? 也不行。 审稿人那关你过不去。 人家会说,某某研究跟你用的是一样的数据,准确率已经达到98%,你的才96%,有什么发表的意义呢? 看,左右为难不是? 其实解决办法很简单。 不要考虑对方声称达到了多高准确率。把他提供给你的数据全集,自行切分。之后 复现对方的模型 ,重新跑。 模型架构,一般都是要求汇报的,所以这几乎不是问题。 至于这种复现,越是复杂的模型,我越推荐你用 PyTorch 。 之后把你的模型,和复现的对方模型在同样的测试集上做对比,就可以了。 当然,论文里要写上一句: 由于某篇文章未提供代码与具体数据切分说明,带来可重复性问题,我们不得不独立复现了其模型,并在测试集完全一致的情况下,进行了比对。 这里多说一句,一定要保证你自己的研究,是 可重复 的。 不要怕公布你的代码和数据。它们不是你的独门暗器,而是 支撑你研究的凭据 。 回看我们前面提到的 Yelp 公开数据的例子。 这时候你会发现一个奇怪的问题——为什么它只有训练集和测试集? 我们一直反复提到的 验证集 哪里去了? 验证 验证集,就如同高考的模拟考试。 不同于高考,模拟考只是你调整自己状态的指示器而已。 状态不够满意,你可以继续调整。 当然,参加过高考的同学都有经验——这种调整的结果(从模拟考到高考),有可能更好,也有可能更糟糕。 回到机器学习上,那就是测试集上检验的,是你 最终模型 的性能。 什么叫“最终模型”? 就是你参加高考时候的状态。包括你当时的知识储备、情绪心态,以及当天的外部环境(温度、湿度、东西是否带齐)等。 最终模型,只有 一个 。 就如同每年的高考,你 只能参加一回 。 考成什么样儿,就是什么样。 而验证集上跑的,实际上却是一个模型 集合 ,集合的大小,你可能数都数不过来。 因为这里存在着超参数(hyper-parameter)设置的问题。不同超参数组合,就对应着不同的潜在模型。 验证集的存在,是为了从这 一堆可能的模型 中,帮你表现最好的那个。 注意这里的表现,是指在 验证集 上的表现。 好比说,有个超参数叫做训练轮数(epochs)。 在同样的训练集上,训练3轮和训练10轮,结果可能是不一样的模型。它们的参数并不相同。 那么到底是训练3轮好,还是10轮好? 或者二者都不好,应该训练6轮? 这种决策,就需要在训练后,在验证集上“是骡子是马牵出来溜溜”。 如果发现训练3轮效果更好,那么就应该丢弃掉训练6轮、10轮的潜在模型,只用训练3轮的结果。 这对应着一种机器学习正则化(Regularization)方式——提早停止训练(early stopping)。 其他的超参数选取,你也可以举一反三。总之就是按照验证集的效果,来选超参数,从而决定最终模型。 下一步,自然就是把它交给测试集,去检验。这个我们前面已经详细讲解过了。 至于这个最终选择模型,在新数据集(测试集)上表现如何,没人能打包票。 所以,回到咱们之前的问题。在《 如何用 Python 和深度迁移学习做文本分类? 》一文中,我故意用 验证集 上筛选出的最好模型,在 验证集 上跑出来分数,当成是 测试 成绩,这显然是不妥当的。 你不能把同样的题做他个三五遍,然后从中找最高分去跟别人比。 即便你的模拟考,用的是别人的高考真题。两张卷子完全一样,也 没有 说服力。 所以你看,验证集的目的,不是比拼最终模型效果的。 因此,怎么设定验证集,划分多少数据做验证,其实是每个研究者需要独立作出的决策,不应该强行设定为一致。 这就如同我们不会在高考前去检查每个考生,是否做过一样多的模拟试卷,且试卷内容也要一致。 极端点儿说,即便一个考生没参加过模拟考,可高考成绩突出,你也不能不算他的成绩,对吧? 不过,讲到这里,我们就得要把训练集拿进来,一起说说了。 训练 如果测试集是高考试卷,验证集是模拟考试卷,那么训练集呢? 大概包括很多东西,例如作业题、练习题。 另外,我们上高三那时候(噫吁嚱,已经上个世纪的事儿了),每周有“统练”,每月有“月考”。也都可以划定在训练集的范畴。 减负这么多年以后,现在的高中生应该没有那么辛苦了吧?真羡慕他们。 这样一对比,你大概能了解这几个集合之间本应有的关系。 学生平时练题,最希望的,就是考试能碰到 原题 ,这样就可以保证不必动脑,却做出正确答案。 所以,出模拟考卷时,老师尽量要保证不要出现学生平时练过的题目,否则无法正确估量学生目前的复习备考状态,噪声过高容易误事儿。 验证集和训练集,应该是 不交叠 的。这样选择模型的时候,才可以避免被数据交叠的因素干扰。 每个学校的模拟考,却都恨不得能押中高考的题。这样可以保证本校学生在高考中,可以“见多识广”,取得更高分数。 高考出卷子的老师,就必须尽力保证题目是全新的,以筛选出有能力的学生,而不是为高校选拔一批“见过题目,并且记住了标准答案”的学生。 因此,测试集应该既不同于训练集,又不同于验证集。 换句话说,三个数据集合,最好都没有重叠。 学生应该学会举一反三,学会的是知识和规律。 用知识和规律,去处理新的问题。 我们对机器模型的期许,其实也一样。 在学术论文中,你见到的大部分用于机器学习模型对比的公开数据集(例如 fast.ai 公开数据集中的 Yelp, IMDB, ImageNet 等),都符合这一要求。 然而,例外肯定是有的。 例如我在 INFO 5731 课程里面给学生布置的某期末项目备选项,来源于某学术类数据科学竞赛,目标是社交媒体医学名词归一化。 其中就有数据,既出现在了训练集,又出现在了验证集,甚至测试集里也会有。 面对这种问题,你该怎么办? 你怎么判断自己的模型,究竟是强行记住了答案,还是掌握了文本中的规律? 这个问题,作为思考题留给你。 我希望在知识星球中和热爱学习的你,做进一步讨论。 另外的一个问题,是训练集要不要和别人的 完全一致 ? 一般来说,如果你要强调自己的模型优于其他人,那么就要保证是在 同样的 训练集上训练出来。 回顾深度学习的三大要素: 数据(Data) 架构(Architecture) 损失(Loss) 如果你的训练数据,比别人多得多,那么模型自然见多识广。 对于深度学习而言,如果训练数据丰富,就可以显著避免过拟合(Overfitting)的发生。 GPT-2 模型,就是因为具备了海量 Reddit 数据做训练,才能傲视其他语言模型(Language Model),甚至以安全为理由,拒绝开放模型。 但是这时候,你跟别人横向比较,似乎就不大公平了。 你的架构设计,未必更好。假使对方用同样多的数据训练,结果可能不必你差,甚至会更优。 这就如同一个复读了5年的学生甲,充分利用每一分每一秒,做了比应届生乙多5倍的卷子。结果在高考的时候,甲比乙多考了1分(同一张卷子)。 你能说甲比乙更有学习能力,学习效果更好吗? 小结 这篇教程里,我为你梳理了机器学习中常见的三种不同数据集类别,即: 训练集 验证集 测试集 咱们一一分析了其作用,并且用“考试”这个大多数人都参加过,且容易理解的例子做了诠释。 希望读过本文之后,你的概念架构更为清晰,不再会误用它们,避免给自己的研究挖坑。 祝深度学习愉快,论文发表顺利哦! 作业 这里给你留一道思考题: 有的时候,你看到有人把训练集切分固定的一部分,作为验证集。但是另一些时候,你会看到有人采用“交叉验证”的方式,即每一轮训练,都动态轮转着,把一部分的数据,作为验证集。对吧? 那么问题来了,什么样的情况下,你应该采用第一种方式,即固定分配验证集?什么样的情况下,你应该采用“交叉验证”方式呢?后者的优势和缺点,又各是什么呢? 欢迎你留言回复,写下自己的判断标准与原因阐述。咱们一起交流讨论。 征稿 One more thing …… 这里还有个 征稿启事 。 国际学术期刊 Information Discovery and Delivery 要做一期关于 “Information Discovery with Machine Intelligence for Language” 的特刊(Special Issue)。 本人是客座编辑(guest editor)之一。另外两位分别是: 我在北得克萨斯大学(University of North Texas)的同事 Dr. Alexis Palmer 教授 南京理工大学 章成志教授 征稿的主题包括但不限于: Language Modeling for Information Retrieval Transfer Learning for Text Classification Word and Character Representations for Cross-Lingual Analysis Information Extraction and Knowledge Graph Building Discourse Analysis at Sentence Level and Beyond Synthetic Text Data for Machine Learning Purposes User Modeling and Information Recommendation based on Text Analysis Semantic Analysis with Machine Learning Other applications of CL/NLP for Information Discovery Other related topics 具体的征稿启事(Call for Paper),请查看 Emerald 期刊官网的 这个链接 (http://dwz.win/c2Q)。 作为本专栏的老读者,欢迎你,及你所在的团队踊跃投稿哦。 如果你不巧并不从事上述研究方向(机器学习、自然语言处理和计算语言学等),也希望你能帮个忙,转发这个消息给你身边的研究者,让他们有机会成为我们特刊的作者。 谢谢! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何快速写作论文初稿? 如何选研究题目? 数据科学入门后,该做什么? 文科生如何理解循环神经网络(RNN)? 《文科生数据科学上手指南》分享 喜欢别忘了 点赞 。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 题图: Photo by Jonah Pettrich on Unsplash
14070 次阅读|4 个评论
如何免费获得高质量标注数据?
wshuyi 2019-6-12 09:46
用第一性原理,破解科研数据获取难题。 标注 自从开始了解机器学习以后,想必你已经发现,数据分析领域,标注(annotation)是很重要的。 请你再次回顾一下这张图。 我多次外出讲座时,这张图总能让与会者感到眼前一亮。 图片的原作者是华盛顿大学的 Pedro Domingos 教授。但是因为许多著名的机器学习课程争相引用,因此现在这张图已经传遍全网。 注意这里的机器学习,实际上是特指“监督式”(supervised)。关于非监督式机器学习,你可以参考《 如何用Python从海量文本抽取主题? 》一文的介绍。 这幅图里面,下方的“Output”实际上是指标记的(annotated)输出结果(labels)。监督式机器学习,实际上就是要 以输入数据和标记,来自动构造程序 ,从而可以被用来处理更多的新数据。 所以你看,机器模型能够学到规律,靠的就是 标注 。 咱们介绍过的 计算机视觉分类 ,便需要有人来标注物体名称。例如猫还是狗,哆啦A梦还是瓦力。 再比如 IMDB 影片评论数据,也需要先搞清楚究竟是正向情感,还是负向情感。 当然,上面这个 IMDB 评论可以看做是特例。回顾你在豆瓣或者淘宝打分的经验。是不是要写一条评论的同时,还得提交一个分数? 你的评论,就是文本输入。 你的打分,就是标记(Annotation)。 对,你已经帮助系统做了标注。平台就不需要再找人单独做标注了。 但是,大部分的数据标注,可没有那么简易。 你可能需要面对无标注的原始输入,一一手工做出标记。 这种工作一般很枯燥,但是并不太复杂。 例如猫狗识别,或者给车辆勾勒边缘(用于物体识别,object detection)之类的简单标记工作,都已经被 外包 到了低工资水平地区。 因为这种标记要求的是常识,并不需要特殊的专业知识背景。 许多研究者为了节省资金,甚至会选择 众包 方式。 最典型的,是亚马逊 Mechanical Turk 。 因为工资水平太低,还专门有学者撰写论文,探讨这种标注是否合乎伦理。 问题 然而,有些标注数据,即便可以获得,价格也不菲。 例如说,在文献分析领域, 引用目的 标注,就被公认是一种昂贵的数据。 每一篇论文,都会有或多或少的参考文献。 研究者们很感兴趣的一个问题是,作者为什么引用了某一篇文献? 引用某些论文,为的是作为工作基础加以扩展; 有的引用,是为了佐证观点; 有的,却是为了作为靶子驳斥。 关于被当做靶子的论文,最著名的是薛兆丰教授津津乐道的科斯(Ronald Harry Coase)那一篇,叫做“The Problem of Social Cost”。 科斯关于产权的新观点一经提出,就因为离经叛道被许多人骂。 这其中,不乏主流经济学家。 新晋的学者阅读文献,总能在许多大师经典的文末“参考文献”,看到科斯的这篇文献。 于是他们都会感兴趣,找来阅读一看究竟。 看过之后,大多数人都觉得科斯的观点令人无法接受,自然也是撰文大加鞭挞。 可问题是,新写出来的文章末尾,还是要把科斯的这篇论文当做引文。 这篇文章,读过的人越来越多,科斯的名气也就越来越大。 文章影响力大了,就会逐渐出现支持的声音,虽然很微弱。 而主流共识发生了迁移后,科斯一下子就成了挑战学术界的孤胆英雄,直到获得诺贝尔奖这样的荣誉。 咱们先不要考虑这个例子中双方学术观点的对错,只观察一个有趣的现象——许多人之所以会阅读到科斯的文章,其实是没有搞清楚他人引用科斯文章的目的。 科学共同体的评价,有点儿像大众点评。一般来说,一个人人打低分的餐馆,会门可罗雀,直到关门大吉的。 科斯这一篇,越被贬低越红,其实是研究史上的特例。 也许你不会觉得这是特例,因为你听过不少类似的例子。 但是想想看,只有这样的例子,才有戏剧性,会被记录了下来,并且广为宣传。 我们更常观察到的现象,其实是:一个观点被许多人当成谬误,最后也被证实为谬误。 例如永动机。 因此,正确区分引用目的,其实在绝大多数情况下都是有价值的。 要辨别引用目的,也需要找人 做标注 。 以往人们的做法,是高薪雇佣学术界的专业人员,逐条分析文献,以及回顾阅读引用位置附近的上下文,最终来确定文献引用目的。 回忆一下你自己阅读学术论文的速度,这种工作的效率便可想而知。 标注工作做了几年,也就是完成了百十来篇文献的分析,包含几千条引文的目的标注。成本已经高到令人咂舌了。 这显然不是个好办法。 创新 Joint Conference on Digital Libraries (JCDL) 2019 大会上,我结识了一位青年学者。他提供了另外的一种解决途径。 我们是在大会第一天的 Tutorial 环节认识的。当时的主题是提升研究的可重复性(Reproducibility),我们都是听众。 我在讨论环节分享了自己授课过程中 使用 Google Colab 的经验 ,他听了觉得很有价值,会后专门跑过来找我聊。 我开始还以为他是个博士生。后来看他跟几位大咖交流带博士生的经验,才知道以貌取人真是错的离谱。 言归正传。他只用了不到一个月的时间,就收集到了与他人几年工作结果等量的引用目的标注数据。标注质量非常高,而且 几乎没有花钱 。 他就是 Petr Knoth ,英国开放大学(Open University)的研究员。 JCDL 2019 “Vannevar Bush 最佳论文奖”得主。 顺便提一下,Vannevar Bush 就是撰写图情领域经典文献《诚如所思》(As We May Think)那位。 下面我们来说说 Petr 的标注数据获取方法。 追问 这是一个典型的“跳出思维约束”的故事。 他追问了几个问题: 第一个问题是:为什么标注成本高? 答案是,必须要雇佣 专业人员 。他们受过严格的训练,才有能力在读论文的时候,正确识别引用目的。试想你让一个学古典文学的人,去标注化学文献,光是那些术语,就能让他不知所措。 第二个问题是:我们真的就只能付费找这些专业人员吗? 初看起来,结果当然是 没错 。 不过,人们似乎忽略了另外一群专业人士,甚至在这个话题上更有发言权的人——论文的作者们。 文献是谁引用的? 作者啊。 我们传统智慧里,有一句“解铃还须系铃人”,没错吧? 既然文献是他引用的,那该如何标记引用目的,他想必更清楚。而且作者亲自做这个工作,效率一定会更高。 第三个问题是:为什么别人不去找作者们标注? 人们想当然认为,作者们都是富有研究经验的学者,因此时间更加宝贵。不太可能回应这种需求。 他们要是收费的话,会比目前的标注人员更高。标注需求一方的科研经费更加无法支撑。 这个假设,看似正确。但有一个重要的默认假设,即标注是一件 非常麻烦 的事情。 没人愿意做非常麻烦的事儿,特别是免费地做。 于是,Petr 提出了最重要的一个追问——标注是不是 一定要如此麻烦 呢? 他和研究团队一直在致力于推动文献开放和提升科学学(Science of Science)研究数据的可得性。他们的项目叫做 CORE 。 截止本文撰写的时候,他们的系统已经采集了 135,539,113 篇论文的全文信息。你甚至可以直接利用他们提供的 API 进行文本挖掘。 在这个过程中,他们经常和 pdf 文件打交道,觉得在网页和正文之间跳转非常的繁琐。于是他们找到了一种第三方开源工具,可以方便地提取 pdf 的内容,直接以网页格式来显示,以便和他们的 Web 系统紧密整合。 Petr 于是就想,如果我可以让作者在网页上方便地一站式看到上下文、文献记录和引用目的选项,那这项标注工作的繁琐程度是不是就大大减低了呢? 尝试 他和团队里的一个小伙子用了不到2个星期的时间,把这个简单的系统开发了出来。 有了这个系统之后,他们随机选择了数千篇论文,自动抓取了第一作者的联系邮箱,然后把请求和对应论文标注页面的链接发送了过去。 信发出后,他们发现,近年发表论文的作者,更愿意回应他们的请求,并且更快速提交结果。 这很好理解,至少因为记忆犹新,作者的标注成本更低嘛。 短短两周时间,他们就获得了数百份回复,积累了5000多条引用目的标注数据。 他们几乎一分钱都没花。 更有意思的是,有的作者不但快速完成标注,之后还给他们写信 表示感谢 。 来信里,作者们纷纷表示这个标注过程,让他们重新梳理了引用的逻辑和思路。相当于快速地给研究的脉络做了个备忘,对未来新项目的开展大有好处。 这,就是一种典型的共赢(win-win)吧? 不仅如此。这一套方法,相对于传统的雇佣专业人员标记,还具有显著的可扩展性(Scalability)。 从前多标记一条引文,就需要多花一份成本。 而现在,只要扩大文献选择范围,系统就可以自动向更多作者发送标注请求。 边际成本,几乎是零。 反思 Poster 展示环节,Petr 就着他的展板,给我介绍了整个儿流程。讲解的时候手舞足蹈,幽默风趣。 我听完,真有醍醐灌顶之感。 我们大多数时候,都生活在一个平凡的世界里,喜欢套用约定俗成的观念,来理解和认识它。 因为这样,比较省脑力。 但是科研过程不一样。它不应该是萧规曹随的。 许多约定俗成的假设和共识,用隐含的方式根植于我们思维模型的底层。但它们却未必正确。 这就需要我们不断反复追问,并且调用 第一性原理 来重新梳理假设的关系链条。 大胆假设,小心求证 ,才是科研的正途。 希望你也能早日做出这样既有用又有趣的研究。 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效读论文? 如何快速写作论文初稿? 如何选研究题目? 数据科学入门后,该做什么? 喜欢别忘了 点赞 。 还可以微信关注我的公众号 “玉树芝兰”(nkwangshuyi) 。别忘了 加星标 ,以免错过新推送提示。 题图 :Photo by José Alejandro Cuffia on Unsplash
6821 次阅读|0 个评论
如何用 Pandas 存取和交换数据?
wshuyi 2019-5-31 10:08
本文为你介绍 Pandas 存取数据的3种主要格式,以及使用中的注意事项。 问题 在数据分析的过程里,你已经体会到 Python 生态系统的强大了吧? 数据采集、整理、可视化、统计分析……一直到深度学习,都有相应的 Python 包支持。 但是你会发现,没有任何一个 Python 软件包,是全能的。 这是一种非常好的设计思维——用优秀的工具,做 专业 的事儿;用许多优秀工具组成的 系统 ,来有条不紊地处理 复杂问题 。 所以,在这个过程中,你大概率会经常遇到数据的 交换 问题。 有时候,是把分析结果存起来,下次读取回来继续使用。 更重要的时候,是把一个工具的分析结果导出,导入到另一个工具包中。 这些数据存取的功能,几乎分布在每一个 Python 数据科学软件包之内。 但是,其中有一个最重要的枢纽,那就是 Pandas 。 我不止一次跟你提起过,学好 Pandas 的 重要性 。 很多情况下,看似复杂的数据整理与可视化,Pandas 只需要一行语句就能搞定。 回顾我们的教程里,也曾使用过各种不同的格式读取数据到 Pandas 进行处理。 然而,当你需要 自己独立 面对软件包的格式要求时,也许仅仅是因为不了解如何正确生成或读取某种格式,结果导致出错,甚至会使你丧失探索的信心与兴趣。 这篇教程里,我以咱们介绍过多次的情感分类数据作为例子,用 最小化的数据集 ,详细为你介绍若干种常见的存取数据格式。 有了这些知识与技能储备,你就可以应对大多数同类数据分析问题的场景了。 数据 为了尽量简化问题,我们这里手动输入两条文本,构建一个 超小型 的评论情感数据集。 str1= 这是个好电影,\\n我喜欢! str2= 这部剧的\\t第八季\\t糟透了! (猜猜看,其中 str2 里面的“这部剧”是哪一部?) 你看到了,这里我加了一些特殊符号进去。 其中: \\n :换行符。有时候原始评论是分段的,所以出现它很正常; \\t :制表符。对应键盘上的 Tab 键,一般在代码里用于 缩进 。用在评论句子中其实很奇怪。这里只是举个例子,下文你会看到它的特殊性。 我们打印一下两个字符串,看是否正确输入: print(str1) 这是个好电影, 我喜欢! 换行符正确显示了。下面我们看看制表符。 print(str2) 这部剧的第八季糟透了! 好了,下面我们分别赋予两句话情感标记,然后用 Pandas 构建数据框。 import pandas as pd 我们建立了一个 字典 (dict),分别将文本和标记列表放到 text 和 label 下面。然后,用 Pandas 的默认构建方式,自动将其转化为 数据框 (Dataframe)。 df=pd.DataFrame({ 'text' : , 'label' : }) df 显示效果如下: 好了,数据已经正确存储到 Pandas 里面了。下面我们分别看看几种输出格式如何导出,以及它们的特点和常见问题。 CSV/TSV 我们来看最常见的两种格式,分别是: csv :逗号分隔数据文本文件; tsv :制表符分隔数据文本文件; 先尝试把 Pandas 数据框导出为 csv 文件。 df.to_csv( 'data.csv' ,index= None ) 注意这里我们使用了一个 index=None 参数。 回顾刚才的输出: 上图中标红色的地方,就是索引(index)。如果我们不加入 index=None 参数说明,那么这些数值型索引也会一起写到 csv 文件里面去。对我们来说,这没有必要,会白白占用存储空间。 将生成的 csv 文件拖入文本编辑器内,效果如下: 你可以清楚地看到, 逗号 分割了表头和数据。 有意思的是,因为第一句评论里包含了换行符,所以就真的记录到两行上面。而文本的两端,有 引号包裹 。 第二句话,制表符(缩进)也是正确显示了。但是这句话两端,却 没有引号 。 这么乱七八糟的结果,Pandas 还能够正确读回来吗? 我们试试看。 pd.read_csv( 'data.csv' ) 一切正常。 看来,在读取 csv 的过程里,Pandas 还是很有 适应能力 的。 下面我们来看看颇为类似的 tsv 格式。 Pandas 并不提供一个单独的 to_tsv 选项。我们依然需要利用 to_csv 方法。 只不过,这次我们添加一个参数 sep='\\t' 。 df.to_csv( 'data.tsv' ,index= None ,sep= '\\t' ) 生成的文件名为 data.tsv 。我们还是在编辑器里面打开它看看。 对比一下刚刚的 csv 格式,你发现了什么? 大体上二者差不多。 只是逗号都变成了制表符缩进而已。 但是不知你是否发现,第二句话此时也被引号包裹起来了。 为什么呢? 对,因为这句话里面含有制表符。如果不包裹,读取的时候可就要出问题了。程序就会傻乎乎地把 “第八季” 当成标记,扔掉后面的内容了。 你看现在编辑器的着色,实际上已经错误判断分列了。 我们试着用 Pandas 把它读取回来。 注意,这里我们依然指定了,分割符是 sep='\\t' 。 pd.read_csv( 'data.tsv' ,sep= '\\t' ) 没有差别,效果依然很好。 这两种数据导出格式,非常直观简洁,用文本编辑器就可以打开查看。而且导出读取都很方便。 这是不是意味着,我们只要会用这两种格式就可以了呢? 别忙,我们再来看一个使用案例。 在处理中文文本信息时,我们经常需要做的一件事情,就是 分词 。 这里,我们把之前两句话进行分词后,再尝试保存和读取。 为了分词,我们先安装一个 jieba分词 包。 !pipinstalljieba 然后把它读取进来。 import jieba 前面我们给自己挖了个坑——为了说明特殊符号的存储,我们加了换行符和制表符。现在问题来了,分词之后,我们肯定不想要这些符号。 怎么办呢? 我们来编写一个定制化的分词函数就好了。 这个函数里,我们分别清除掉制表符和换行符,然后再用结巴分词切割。分词这里,我们用的是 默认参数 。 因为分词后的结果实际上是个生成器(generator),而我们是需要真正的列表(list)的,所以利用 list 函数强制转换分词结果成为列表。 def cleancut (s) : s=s.replace( '\\t' , '' ) s=s.replace( '\\n' , '' ) return list(jieba.cut(s)) 我们生成一个新的数据框 df_list ,克隆原先的 df 。 df_list=df.copy() 然后,我们把分词的结果,存到新的数据框 df_list 的 text 列上面。 df_list.text=df.text.apply(cleancut) 看看分词后的效果: df_list 怎么证明 text 上存储的确实是个列表呢? 我们来读取一下其中的第一个元素好了。 df_list.text.iloc 结果显示为: '这' 很好。此时的数据框可以正确存储预处理(分词)的结果。 下面我们还是仿照原先的方式,把这个处理结果数据导出,然后再导入。 先尝试 csv 格式。 df_list.to_csv( 'data_list.csv' ,index= None ) 导出过程一切正常。 我们来看看生成的 csv 文件。 在存储的过程中,列表内部,每个元素都用 单引号 包裹。整体列表的外部,被 双引号 包裹。 至于分割符嘛,依然是 逗号 。 看着是不是很正常? 我们来尝试把它读取回来。当然我们希望读取回来的格式,跟当时导出的 一模一样 。 pd.read_csv( 'data_list.csv' ) 结果是这样的: 初看起来,很好啊! 但是,我们把它和导出之前的数据框对比一下,你来玩儿一个“大家来找茬”游戏吧。 注意,导出之前,列表当中的每一个元素,都没有引号包裹的。 但是重新读取回来的内容,每一个元素 多了 个单引号。 这看起来,似乎也不是什么大毛病啊。 然而,我们需要验证一下: pd.read_csv( 'data_list.csv' ).text.iloc 这次程序给我们返回的第一行文本分割的第一个元素,是这样的: ' 答案是: ' 看到这里,你可能已经恍然大悟。原来导出 csv 的时候,原先的分词列表被当成了 字符串 ;导入进来的时候,干脆就是个字符串了。 可是我们需要的是个列表啊,这个字符串怎么用? 来看看 tsv 格式是不是对我们的问题有帮助。 df_list.to_csv( 'data_list.tsv' ,index= None ,sep= '\\t' ) 打开导出的 tsv 文件。 列表就是列表,两边并没有用双引号包裹。 这次兴许能成! 我们赶紧读回来看看。 pd.read_csv( 'data_list.tsv' ,sep= '\\t' ) 这结果,立刻让人心里凉了一半。 因为列表里面每个元素两旁的单引号都在啊。 抱着一丝侥幸的心理,我们尝试一下验证第一个元素。 pd.read_csv( 'data_list.tsv' ,sep= '\\t' ).text.iloc 果不其然,还是 中括号 。 这意味着读回来的,还是一个字符串。 任务失败。 看来,依靠 csv/tsv 格式把列表导出导入,是不合适的。 那我们该怎么办呢? pickle 好消息是,我们可以用 pickle 。 pickle 是一种二进制格式,在 Python 生态系统中,拥有广泛的支持。 例如 PyTorch 的预训练模型,就可以用它来存储和读取。 在 Pandas 里面使用 pickle,非常简单,和 csv 一样有专门的命令,而且连参数都可以不用修改添加。 df_list.to_pickle( data.pickle ) 读取回来,也很方便。 df_list_loaded=pd.read_pickle( data.pickle ) 我们来看看读取回来的数据是否正确: df_list_loaded 这次看着好多了,那些让我们烦恼的引号都不见了。 验证一下第一行列表的第一个元素: df_list_loaded.text.iloc 结果是: '这' 很让人欣喜的结果啊! 看来 pickle 格式果然靠谱。 不过,当我们试图在文本编辑器里打开 pickle 格式的时候,会有警告。 如果我们忽略警告,一意孤行。那么确实还是可以打开的。 只不过,你看得懂吗? 反正我是看不懂的。 这就是二进制存储方式的问题——只适合机器来看,人读起来如同天书。 但这其实还不是 pickle 格式最大的问题。 最大的问题,在于不同软件包之间的交互。 我们在做数据分析的时候,难免会调用 Pandas 以外的软件包,继续分析我们用 Pandas 预处理后的文件。 这个时候,就要看对方支持的文件格式有哪些了。 一个最常见的例子,是 PyTorch 的文本工具包 torchtext 。 用它读取数据的时候,格式列表里面 不包含 pickle 。 这可糟糕了。我们前面需要 Pandas 来预处理分词,后面又需要使用 Torchtext 来划分训练集和验证集,生成迭代(iteration)数据流,以便输入模型做训练。 可在二者中间,我们却被 交换格式 问题卡住了。 好在,天无绝人之路。 你看,这里列出的格式列表,除了 csv 和 tsv (已被我们验证过不适合处理分词列表)之外,还有一个 JSON 。 JSON JSON 绝对是数据交换界的 一等公民 。 它不仅可以存储 结构化 数据(也就是我们例子里面的数据框,或者你更常见的 Excel 表格),也可以存储 非结构化 数据。 如果你跟着我的教程了解过一些 API 的 Python 调用方法 ,那你对 JSON 格式应该并不陌生。 本例中我们使用的,是一种特殊的 JSON 格式,叫做 JSON Lines。 之所以用它,是因为前面我们介绍的 torchtext 包,要求使用这种格式。 所以,在 Pandas 的 to_json 函数里,我们还要专门加上两个参数: orient=records :每一行数据单独作为字典形式输出; lines=True :去掉首尾的外部括号,并且每一行数据之间不加逗号。 df_list.to_json( data.json ,orient= records ,lines= True ) 输出的结果,是这个样子的。 由于中文采用了 unicode 方式存储,所以此处我们无法直接识别每一个汉字。 但是,存储的格式,以及其他类型的数据记录,还是能看得一清二楚的。 我们来尝试读入。方法与输出类似,也是用同样的参数。 df_list_loaded_json=pd.read_json( data.json ,orient= records ,lines= True ) 看看读入效果: df_list_loaded_json 首先,你会发现列的位置发生了调换。好在对于数据框来说,这不是问题,因为列之间的相对位置本来也没有特殊含义。 其次,你能看到,那些引号都没有出现。 为了进一步验证,我们还是调取第一行列表的第一个元素。 df_list_loaded_json.text.iloc 显示为: '这' 太棒了! 这样一来, Pandas 就可以和 torchtext 等软件包之间,建立顺畅而牢固的数据交换通道了。 小结 通过阅读本文,希望你已经掌握了以下知识点: Pandas 数据框常用的数据导出格式; csv/tsv 对于文本列表导出和读取中会遇到的问题; pickle 格式的导出与导入,以及二进制文件难以直接阅读的问题; JSON Lines 格式的输入输出方法及其应用场景; 如何自定义函数,在分词的时候去掉特殊符号。 希望这些知识和技能,可以帮助你解决研究和工作中遇到的实际问题。 祝 深度 学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 文科生 Python 与数据科学入门教材推荐 如何用 Python 和 Pandas 分析犯罪记录开放数据? 如何用 Python 和 API 收集与分析网络数据? 推荐Python数据框Pandas视频教程 喜欢别忘了 点赞 ,并且把它 转发 给你身边有需要的朋友。 题图 :Photo by Stephen Dawson on Unsplash
3121 次阅读|0 个评论
数据科学入门后,该做什么?
热度 2 wshuyi 2019-5-10 10:28
三种学习方式,助你建构多重网络,获得能力与价值的非线性增长。 疑问 有不少读者,在我的数据科学教程下留言,问我类似这样的问题: 王老师,我已经跟着您的全部教程,从头到尾实践了一遍。中间不懂的地方,也专门看书或者上网查找,补充了知识。感觉数据科学算是入门了。但是之后我该做什么呢?有没有什么进阶教材推荐一下? 你的问题很有价值。 教材的事儿,我之前专门为你写了《 文科生 Python 与数据科学入门教材推荐 》。其中部分书籍的深度,已经不止算是入门级别了。尤其是那些讲到了 BERT 的。 然而,从入门到进阶,绝不是再多去看几本书这么简单。 恰好,这周我在北得克萨斯大学的《信息系统中的计算方法》课程结课了。 这一学期,我教给学生们的主要知识技能,包括 Python 、数据整理(Pandas)、数据可视化、机器学习(包括深度神经网络)和自然语言处理。 说到这里,你可能会心一笑。 对,其实你把我全部教程跑一遍,学的内容也应该差不多了。 你面对的问题,同时也应该是他们的问题。 只不过,他们学得 更辛苦 一些。 毕竟,每次作业都有个明确的截止日期。 我上第一课的时候,逐个做过调查。不少学生之前没有接触过 Python 或者类似的编程语言。 这一学期下来,他们不仅学完了 Python 基础,还能用深度学习处理结构化数据、图像,乃至自然语言相关任务了。 达成学习目的的背后,是辛勤的付出。 我说:考虑到平均每周课后你们需要在这门课上花 15个小时 做作业和练习,着实辛苦了…… 学生立即插话:别逗了,老师。绝对 不止啊 ! 学生们展示完期末报告后,我们一起合了张影。 然后他们就想收拾包下课走人,被我拦下了。 我说,还差一部分内容,听我讲完。 我着实不希望,学生们在付出这些时间和汗水后,就此止步。 别忘了,你我的头脑,都有一个重要功能—— 遗忘 。 倘若从此停止学习,他们之前所学的内容,也就随着自然的遗忘,前功尽弃了。 我补充的这部分内容叫做: 下一步,该干什么? 我主要讲了3点: 实践中学习 教学中学习 传播中学习 我把这部分内容整理出来,加上一些解释和阐述,一并分享给你。 希望能帮助主动勤奋学习的你,在入门数据科学之后,走上 高效进阶 之路。 实践 第一种方式,是在 实践中学习 。 简单来说,就是找 现实世界中 的任务,整合与磨练自己的技能。 为什么是“现实世界中的任务”? 教科书里面的任务,往往为了结果的一致性和讲解方便,隐藏了很多的细节。 尤其是数据,基本上都是帮助你清理好的,或者是很容易整理和转换。你拿过来直接灌进模型,就可以看结果。这样确实有助于提升你的成就感。 但是处理一次真实世界的数据,你就会发现。一个机器学习任务,整体的时长是10小时的话,那么其中大概8个小时,都不是用来建模训练的。 建模这件事儿,如今做起来,真的跟搭积木几乎没区别。 我给你举过十行代码搞定图像识别的例子。但更极端的,是连写代码都可以省略。 只需要根据目标,把若干层次堆叠好,剩下的就是算力和时间在发挥功效了。 例如 Google Cloud AutoML 。 工学院的开放日,我曾驻足在一个海报前,问学生怎么获得了这么高的图像识别率,都如何调整超参数的? 对方答不上来。但是告诉我他们用了 Cloud AutoML 。超参数调整云端后台直接搞定,根本不用自己操心。 但是,你应该清楚,即便在数据和模型齐备的情况下,为了能够让你的原始数据可以被这个标准化的模型接受,你得花费多少时间和心力。 文本数据,你需要进行编码转换(有些词汇里面有非英文拉丁字母),替换标点和特殊符号(例如 Emoji),处理大小写,也得考虑停用词问题。对于中文,甚至还需要分词。你需要找到足够好的词嵌入预训练模型。对于长短不同的句子,也得明白该如何截断和补齐。(参见《 如何用 Python 和循环神经网络做中文文本分类? 》) 时间序列,你需要清理缺失数据,找寻要提取的特征,设定时间窗口和地理围栏。为了平衡数据集,你需要在随机抽取的基础上,考虑前导事件序列是否有重复,是否为空。面对一个只有1GB的小型数据集,如果操作不当,这些预处理动作都会耗费你大量的时间资源。(参见《 如何用 Python 和循环神经网络预测严重交通拥堵? 》) 如果只是满足于拿别人清理好的数据直接灌进模型,这些知识你是不会触碰的。 只有在 实践 中,你才可能积累这种层级的认知。 而当你不断扩展和延伸这些琐碎的、书本上来不及介绍的知识,你也就在向着专业的高峰攀爬。 你可以把学到的数据分析技能,应用到自己的研究与工作中,变手工为自动,让老板和客户赞叹;也可以把基于规则的系统,改造成从数据中提炼规律的智能自适应系统。 你可以去参加五花八门的开放数据竞赛,与各路高手过招。 输了你能学到别人的先进经验和理念,赢了有奖金。 有了这些积累,你甚至可以尝试在工作与学习之余,打造自己的智能应用。 挖掘痛点、迭代开发,把成果放到应用商店或者网站上,给自己赚取些“睡后收入”。 教学 第二种方式,是在教学中学习。 这并非要求你转换职业,去当老师。 你可能常听说过一句话,叫做: 教是最好的学。 你信吗? 我想告诉你,这是 真的 。 “教”这个动作,蕴含着两个事儿:“输出”和“被接受”。 输出,可以倒逼你的输入,而且是高质量输入。 为了讲出来,你就必须自己弄懂。 在这个过程中,你可能会倒吸一口凉气——之前自己的理解,居然是错的呀! 自己弄懂之后,还不算完。 因为“教”是有明确对象的。 对方 能否接受和理解,才是评价你 教学效果 的准则。 为了让对方弄懂,你就不得不想办法,把原先仅限于“自己理解”的知识,用举例、说明、比喻等方法,包装成对方可以 吸纳 和 理解 的产品。 为了说明白一些动态过程,你甚至需要去制作动图乃至视频。 上图来自于 Raimi Karim 的博客 。我觉得他把 LSTM 单元工作的原理,介绍得非常清晰生动。 教学这个过程,会充分强化你与知识内容之间的连接。 你可能会认为, 免费教学 很吃亏。 其实不然。 教学过程中,你梳理了专业知识、打磨了沟通技巧、建立了声誉和信任感。 对这些收获,不要视而不见。 并非只有货币化的回报才有价值。 回忆一下,上中学的时候,班上可能有两种学霸。 第一种自己苦学。别人问问题,都推说自己也不会。这种人即便成绩好,因为缺乏协作能力,也很难有大成就。 第二种爱答疑解惑。老师不在的时候,他甚至会自告奋勇走上讲台,往黑板上面抹画,给大家讲解难题。当他把一个班的答疑工作都承包后,想不得第一是件很有难度的事儿。 提起这第二种学霸,我就不由得想起我们高中班长的形象来了。他清华毕业后到加州读博士做研究,发过不止一篇 Nature 。 更让人印象深刻的是——毕业将近20年了,每次只要他一回国,立刻就可以召集起数十人的聚会。 这就是人缘。 数据科学不是什么屠龙术。你不肯讲解,别人也能通过其他渠道来获取相应信息。 所以真的没必要藏着掖着。 在教学互动中,你可能还能收获许多 意想不到的机遇 。 该怎么做呢? 你可以给身边的同事、同学、朋友讲解自己数据分析实践获得的新知。 还可以参加开放数据日等活动,给其他初级参与者以编程指导。 如果恰巧身边缺乏感兴趣的线下受众,也不要紧,有网络嘛。 知乎、Quora 和 Stackoverflow 等问答社区,都是你给别人答疑解惑的好场所。搜寻一下数据科学板块的热点问题,如果你会,就把答案写下来。 在这个过程中,你也能充分触摸市场的温度,了解哪些具体问题更受人们关注。 当然,更推荐的方法,是直接到我的教程后面找读者的留言提问。 许多问题,因为从头到尾尝试过,你有了现成解决的方法与心得。教起来就更是轻车熟路,不是吗? 传播 第三种方式,是在传播中学习。 对,我要教你如何 加杠杆 了。 或许你满足于只在一个特别小的圈子里面建立专业声誉,可外部世界对你一无所知。 对不起,你亏大发了。 因为机会成本太高。 人们常说,这是一个 个体崛起 的时代。 个体崛起的基础,是传播技术的发展。 统计一下,每天你花在微信、头条、知乎和抖音上的时间,有多少? 不光是你,许多人每天的时间和注意力,也会在这些信息传播平台上。 提醒你一下,在这些平台上创作和发布内容,是 免费 的。 把你实践的经验,用图文记录下来。 把你之前线下的讲解教学,用视频展现出来。 总之,是形成一个可发布的完整作品,而不只是片段。 然后,找准用户群,放到相应的平台上。 这样,你就能以最低廉的成本,把自己创作的文本、图像甚至是影像,传播到互联网的每一个角落。 有专业的团队替你操心租用服务器、网络安全、负载均衡,乃至是版权保护的问题,你只需要 专注内容 。 高质量、满足需求的内容,会给你带来更多的受众。 更多的受众,会迅速为你提升专业声誉,扩大你的社会网络,乃至给你带来更多的 优质机会 。 你之前实践和教学积攒的认知,都会在这个过程中迅速放大,乃至充分变现。 出版机构会联系你,希望你把系列教程结集出书。 专业领域的高手们,会注意到你,并且愿意把你拉进圈子,一起交流切磋。 猎头会积极联系你,更好的平台会给你伸来橄榄枝。甚至,你还可以有机会提供付费咨询服务。 你创造的应用,也会获得更多人的关注。如果使用效果好,他们会用口碑帮你自然传播,省下大笔营销费用。 广告主们自然会纷纷来找你谈合作与推广…… 但是,这里必须提醒你一下,一定要 注意底线 。 赚不该赚的钱,会损害你好不容易积累起来的网络与专业声誉,着实得不偿失。 小结 从入门到进阶,我给你推荐了三种方法。分别是: 实践中学习 教学中学习 传播中学习 细心的你,一定已经发现了。三种方法,实际上是在帮助你的三个网络增长延伸。 实践中学习,是帮你扩展 技能网络 。你与知识、技能连接越多,学习与领悟新知识就越快,尤其会提升 专业敏感度 。面对新问题,获取到同样的信息,新手可能胡子眉毛一把抓,最终束手无策;而高手只要扫一眼,就大概可以准确猜出问题在哪里,并且 快速掌握 对应的新知,来加以解决。 教学中学习,是帮你扩展 专业网络 。你给别人提供知识服务,不仅可以帮助自己提升沟通技能,打磨优化知识结构,更是与同事、同学、同业建立更好连接的机会。你的收获,除了帮助别人获取的快乐外,还有专业声誉(即 靠谱程度 )的提升。 传播中学习,是帮你扩展 社会网络 。你可以利用日渐完善的内容传播平台,建立个人品牌,增长关注者数量。这将给你带来不可估量的优质机会,帮助你实现自己的价值与理想。 这三者之间, 绝不是孤立 的关系。 它们是相互促进的。 你有了更广阔的社会网络,就有更多的机会接触到更有价值的问题,获取更宝贵的专属数据,甚至是操作更丰富的计算资源,从而获得自己独特的技能认知,反过来促进技能网络。 而你的技能增长,会让你的教学内容更有深度和质量,从而进一步扩展你的专业网络。 你的声誉越高,口碑越好,就会有越多的人关注你,加入到你的社会网络中。 这种增长,即所谓“正反馈”,是 非线性 的。 我们早已在波澜不惊的世界里,习惯以线性观点来衡量事物的变化。 所以总有一天,你的成长速度会把自己吓到。 这就是为什么,对“数据科学入门后,该做什么”这个问题,我无法给你推荐什么进阶书籍。 因为你需要的,根本就不是另一本包含更多公式的高难度教材。 只有看到这些别人看不到的网络,把你自己融入真实世界中,甚至逼迫自己不得不适应生长,你才有可能在技术、数据急速改变与塑造的新环境里借势而起,让自己充分增值,并且与适合自己的机遇产生链接。 祝 深度 学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 《文科生数据科学上手指南》分享 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 题图 :Photo by Samuel Ferrara on Unsplash
12820 次阅读|2 个评论
你的机器“不肯”学习,怎么办?
热度 1 wshuyi 2019-5-1 08:30
给你讲讲机器学习数据预处理中,归一化(normalization)的重要性。 前情回顾 Previously, on 玉树芝兰 …… 我给你写了一篇《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》,为你讲解了 Tensorflow 2.0 处理结构化数据的分类。 结尾处,我给你 留了一个问题 。 把测试集输入模型中,检验效果。结果是这样的: model.evaluate(test_ds) 准确率接近80%,看起来很棒,对吗? 但是,有一个疑问: 注意这张截图。训练的过程中,除了第一个轮次外,其余4个轮次的这几项重要指标居然 都没变 ! 它们包括: 训练集损失 训练集准确率 验证集损失 验证集准确率 所谓机器学习,就是不断迭代改进。 如果每一轮下来,结果都 一模一样 ,这里八成有鬼。 我给了你提示: 看一个分类模型的好坏,不能只看准确率(accuracy)。对于二元分类问题,你可以关注一下 f1 score,以及混淆矩阵(confusion matrix)。 这段时间,你通过思考,发现问题产生原因,以及解决方案了吗? 从留言的反馈来看,有读者能够正确指出了问题。 但很遗憾,我没有能见到有人提出 正确和完整 的解决方案。 这篇文章,咱们就来谈谈,机器为什么“不肯学习”?以及怎么做,才能让它“学得进去”。 环境 本文的配套源代码,我放在了 这个 Github 项目 中。请你点击 这个链接 ( http://t.cn/ESJmj4h )访问。 如果你对我的教程满意,欢迎在页面右上方的 Star 上点击一下,帮我加一颗星。谢谢! 注意这个页面的中央,有个按钮,写着“在 Colab 打开”(Open in Colab)。请你点击它。 然后,Google Colab 就会自动开启。 我建议你点一下上图中红色圈出的 “COPY TO DRIVE” 按钮。这样就可以先把它在你自己的 Google Drive 中存好,以便使用和回顾。 Colab 为你提供了全套的运行环境。你只需要依次执行代码,就可以复现本教程的运行结果了。 如果你对 Google Colab 不熟悉,没关系。我 这里有一篇教程 ,专门讲解 Google Colab 的特点与使用方式。 为了你能够更为深入地学习与了解代码,我建议你在 Google Colab 中开启一个全新的 Notebook ,并且根据下文,依次输入代码并运行。在此过程中,充分理解代码的含义。 这种 看似笨拙 的方式,其实是学习的 有效路径 。 代码 请你在 Colab Notebook 里,找到这一条分割线: 用鼠标点击它,然后从菜单里面选择 Runtime - Run Before : 运行结束后,你会获得如下图的结果: 《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》一文的结果已经成功复现。 下面我们依次来解读后面的语句。 首先,我们利用 Keras API 中提供的 predict 函数,来获得测试集上的预测结果。 pred=model.predict(test_ds) 但是请注意,由于我们的模型最后一层,用的激活函数是 sigmoid , 因此 pred 的预测结果,会是从0到1区间内的小数。 而我们实际需要输出的,是整数0或者1,代表客户“流失”(1)或者“未流失”(0)。 幸好, numpy 软件包里面,有一个非常方便的函数 rint ,可以帮助我们四舍五入,把小数变成整数。 pred=np.rint(pred) 我们来看看输出结果: pred 有了预测输出结果,下面我们就可以用更多的方法,检验分类效果了。 根据前文的提示,这里我们主要用到两项统计功能: 分类报告 混淆矩阵 我们先从 Scikit-learn 软件包导入对应的功能。 from sklearn.metrics import classification_report,confusion_matrix 然后,我们对比测试集实际标记,即 test ,和我们的预测结果。 print(classification_report(test ,pred)) 这里,你立刻就能意识到出问题了——有一个分类,即“客户流失”(1)里,三项重要指标(precision, recall 和 f1-score)居然都是0! 我们用同样的数据查看混淆矩阵,看看到底发生了什么。 print(confusion_matrix(test ,pred)) 混淆矩阵的读法是,行代表实际分类,列代表预测分类,分别从0到1排列。 上图中,矩阵的含义就是:模型预测,所有测试集数据对应的输出都是0;其中预测成功了1585个(实际分类就是0),预测错误415个(实际分类其实是1)。 也就是说,咱们费了半天劲,训练出来的模型只会傻乎乎地,把所有分类结果都设置成0. 在机器学习里,这是一个典型的 笨模型 (dummy model)。 如果咱们的测试集里面,标签分类0和1的个数是均衡的(一样一半),那这种笨模型,应该获得 50% 的准确率。 然而,我们实际看看,测试集里面,分类0(客户未流失)到底占多大比例: len(test == 0 ])/len(test) 结果是: 0 .7925 这个数值,恰恰就是《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》一文里面,我们在测试集上获得了准确率。 一开始我们还认为,将近80%的准确率,是好事儿。 实际上,这模型着实很傻,只有一根筋。 设想我们拿另外一个测试集,里面只有 1% 的标注是类别0,那么测试准确率也就只有 1% 。 为了不冤枉模型,咱们再次确认一下。 使用 numpy 中的 unique 函数,查看一下预测结果 pred 中,到底有几种不同的取值。 np.unique(pred) 结果是: array ( ,dtype=float32) 果不其然,全都是0. 果真是“人工不智能”啊! 分析 问题出在哪里呢? 模型 根本就没有学 到东西。 每一轮下来,结果都一样,毫无进步。 说到这里,你可能会有疑惑: 老师,是不是你讲解出错了? 两周前,我在 UNT 给学生上课的时候,他们就提出来了这疑问。 我早有准备,立即布置了一个课堂练习。 让他们用这套流程,处理另外的一个数据集。 这个数据集你也见过,就是我在《 贷还是不贷:如何用Python和机器学习帮你决策? 》里面用过的贷款审批数据。 我把数据放在了 这个链接 ( http://t.cn/ESJ3x3o ),你如果感兴趣的话,不妨也试着用前文介绍的流程,自己跑一遍。 学生们有些无奈地做了这个练习。 他们的心理活动大概是这样的: 你教的这套流程,连演示数据都搞不定,更别说练习数据了。做了也是错的。是不是先纠正了错误,再让我们练啊? 然后,当运行结果出来的时候,我在一旁,静静看着他们惊诧、沉思,以至于抓狂的表情。 同一套流程,在另外的数据上使用,机器 确实学习到了规律 。 数据集的细节里面,藏着什么魔鬼? 归一 直接说答案: 流程上确实有问题。数值型数据 没有做归一化 (normalization)。 归一化是什么? 就是让不同特征列上的数值,拥有类似的分布区间。 最简单的方法,是根据训练集上的对应特征,求 Z 分数。 Z 分数的定义是: Mean 是均值 Standard Deviation 是标准差 为什么一定要做这一步? 回顾一下咱们的数据。 我这里用红色标出来了所有数值特征列。 看看有什么特点? 对,它们的分布迥异。 NumOfProducts 的波动范围,比起 Balance 或者 EstimatedSalary ,要小得多。 机器学习,并不是什么黑科技。 它的背后,是非常简单的数学原理。 最常用的迭代方法,是梯度下降(Gradient descent)。如下图所示: 其实就是奔跑着下降,找局部最优解。 如果没跑到,继续跑。 如果跑过辙了,再跑回来。 但问题在于,你看到的这张图,是只有1维自变量的情况。 咱们观察的数据集,仅数值型数据,就有6个。因此至少是要考察这6个维度。 不好意思,我无法给你绘制一个六维图形,自己脑补吧。 但是注意,对这六个维度,咱们用的,却是同一个 学习速率 (learning rate)。 就好像同一个老师,同时给6个学生上数学课。 如果这六个维度分布一致,这样是有意义的。 这也是为什么大多数学校里面,都要分年级授课。要保证授课对象的理解能力,尽量相似。 但假如这“6个学生”里,有一个是爱因斯坦,一个是阿甘。 你说老师该怎么讲课? 爱因斯坦听得舒服的进度,阿甘早就跟不上了。 阿甘能接受的进度,爱因斯坦听了可能无聊到想撞墙。 最后老师决定——太难了,我不教了! 于是谁都 学不到东西 了。 对应到我们的例子,就是因为数据分布差异过大,导致不论往哪个方向尝试改变参数,都按下葫芦浮起瓢,越来越糟。 于是模型判定,呆在原地不动,是 最好的策略 。 所以,它 干脆不学 了。 怎么办? 这个时候,就需要归一化了。 对应咱们这个不恰当的举例,就是在课堂上,老师要求每个人都保持每天一单位(unit)的学习进度。 只不过,爱因斯坦的一单位,是100页书。 阿甘同学……两行,还能接受吧? 新代码 请你点击 这个链接 ( http://t.cn/ESJBJHW )访问更新后的代码。 按照之前的方式,点击“在 Colab 打开”(Open in Colab)。使用 “COPY TO DRIVE” 按钮,存放在你自己的 Google Drive 中。 对比观察后,你会发现,改动只有 1个代码段落 。 就是把原先的数值型特征采集从这样: for header in numeric_columns: feature_columns.append(feature_column.numeric_column(header)) 变成这样: for header in numeric_columns: feature_columns.append( feature_column.numeric_column( header, normalizer_fn= lambda x:(tf.cast(x,dtype=float)-train .mean())/train .std())) 尤其要注意,我们要保证平均值和标准差来自于 训练集 。只有这样,才能保证模型对验证集和测试集的分布一无所知,结果的检验才有意义。否则,就如同考试作弊一样。 这就是为了归一化,你所需做的全部工作。 这里我们依然 保持 原先的 随机种子设定 。也就是凡是使用了随机函数的功能(训练集、验证集和测试集的划分等),都与更新代码之前 完全一致 。 这样做,改变代码前后的结果才有 可对比性 。 下面我们使用菜单栏里面的 Run All 运行一下代码。 之后查看输出。 首先我们可以注意到,这次的训练过程,数值终于有变化了。 因为其他变量全都保持一致。所以这种变化,没有别的解释,只能是因为使用了归一化(normalization)。 我们更加关心的,是这次的分类报告,以及混淆矩阵。 分类报告是这样的: 注意这一次,类别1上面的几项指标,终于不再是0了。 混淆矩阵中,类别1里,也有36个预测正确的样本了。 成功了! …… 别急着欢呼。 虽然机器在学习和改进,但是效果好像也不是很好嘛。例如类别1的 Recall 简直惨不忍睹。 有没有什么办法改进呢? 这个问题,就需要你了解如何微调模型,以及超参数的设定了。 我把推荐的学习资料,放在了公众号的对应文章里,欢迎查看。 小结 这篇文章里,我为你介绍了以下知识点: 分类模型性能验证(尤其是 Accuracy 之外的)评测指标; 预处理过程中数值数据归一化(Normalization)的重要性; 如何在 Tensorflow 2.0 的数据预处理和特征抽取中使用归一化; 如何利用模型预测分类结果,并且使用第三方软件包功能快速统计汇报。 希望上述内容,能对你使用深度神经网络进行机器学习有帮助。 祝深度学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 《文科生数据科学上手指南》分享 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 题图 :来自于 freepixels
8440 次阅读|1 个评论
文科生 Python 与数据科学入门教材推荐
wshuyi 2019-4-22 10:50
从入门到精通,给你推荐几本 Python 与数据科学好书。 需求 最近读者数量增长了不少。有许多新读者留言,说自己想入门 Python 与数据科学,希望我能够推荐一些教材书籍。 老读者们都知道,我经常会在教程末尾的“资源”或者“小结”章节,推荐相关的书目。我推荐的书籍,有个特点,就是写得简明易懂,适合文科生阅读。 那种一打开,公式便随处可见的书,也许内容质量非常高,但确实不适合文科生的 入门级阅读 。许多人就是这样被吓跑,然后干脆放弃了的。 所以,如果你是专业人士,看完之后,按捺不住想要发飙: 为什么没有提到XXX和XXX,那才是经典!你还好意思自称老师,到底懂不懂行?! 请保持理智,注重文明举止,多一份同理心给文科生们。 谢谢合作! 考虑到这些书籍推荐散落各处,新读者一篇篇翻找起来不是很方便,我这里把它们汇总一下。同时,我也加入了一些新的书籍,有的只是之前没有提到,有的却甚至 新到还没出版 的地步。 下面我分成 Python,数据科学,机器学习这几个部分,分别给你谈一谈。 Python 第一本,当然是《笨办法学 Python 》(Learn Python the Hard Way)。 我在《 如何高效学Python? 》一文里,隆重推荐过它。 书名起成这样,居然还能卖得出去,实在是 营销界的奇迹 啊! 能卖出去,想必不是因为书名吸引人。 吸引人的书名应该叫做《XX天 Python 从入门到精通》,《X天学会数据科学》,或者《深度学习24小时教程》…… 能有这么多人购买学习,说明了它的 口碑效应 相当好。 这本书,最适合自学入门。如同《新概念英语》,它采用 螺旋上升、以练促学、温故知新 的形式来讲解和辅导你练习。 你得相信口碑的力量。 别人能拿它学会, 你也行 。 若购买中文版,请选择最新的 Python 3 版本,链接在 这里 。 第二本,是我这学期在北得克萨斯大学(University of North Texas)讲授的《面向信息系统的计算方法》( Computational Methods for Information Systems )课程的教材之一。 书名叫做:“Think Python: How to Think Like a Computer Scientist”,我用的是第二版。 你对这个书名,不应该陌生。因为我在《 如何高效学Python? 》一文中,为你介绍过这本书和传奇 Python MOOC Programming for Everybody 之间的关联。 你可以 点击链接 查看具体说明。 经过这一学期的教学实践,我确认这本书不愧为经典教材。配合上 翻转教学 的形式,以及 Google Colab 的环境支持 ,学生们上手 Python 特别迅速。 这本书的中文版叫做《像计算机科学家一样思考Python》,购买链接在 这里 。 数据科学 第三本书,是数据科学的入门读物,也是我本学期课程的另一本指定教材。 书名叫做:“Data Science from Scratch”。 该书的特点,可以这样概括: 就是 不 教你调包。 大家都知道,现在的数据科学工具丰富。许多时候,你只要知道如何调用一个第三方软件包,就可以轻松完成某项任务,例如下载数据、绘图,甚至是机器学习建模。 但是这本书偏反其道而行之,从最简单问题入手,让你 从头实现 功能。 这样一来,你就不止知其然,还充分明白其 所以然 。 为了调动你的兴趣,书中选择的样例,都是非常实用而有趣的。虽然你的代码比较基本,但是麻雀虽小五脏俱全,成就感一点也不会差。 因为成书时间比较早,这本书原始代码,都是用 Python 2 写成的。因此在今天的 Python 3 环境下运行,会有差别。 好在作者非常贴心,从头更新了所有的代码,把 Python 3 版本发布在了 Github 上面。 你可以访问 这个链接 ,查看与尝试最新版代码。 中译本名称为《数据科学入门》,链接在 这里 。 第四本,是关于 Python 数据框 Pandas 的 。如果你用 Python 做数据分析,不会 Pandas 也能完成很多任务,只是会更痛苦一些。 我曾经有多篇教程,展示了 Pandas 的功能强大。简单的一两行代码,就可以让你从原始数据中提炼与绘制出这样的统计图形来。 还记得吧?上图来自《 如何用 Python 和 Pandas 分析犯罪记录开放数据? 》一文。要注意复习哦。 这本书的名字叫做 “Python for Data Analysis”。 作者是 Wes McKinney ,Pandas 项目的 创始人 。 软件包的创造者亲自写书,权威程度可想而知。 这本书第一版就很畅销,后来在2017年又推出了使用 Python 3 的第二版。 中译本目前还只有第一版的,链接在 这里 。不过 Wes McKinney 在个人主页说第二版就快要面世了。 机器学习 第五本书,是 Aurélien Géron 的 “Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems”。 这本书简直就是个教材出版界的奇迹。 发行量咱就不提了,就连放在 Github 上 的配套代码,居然都获得了超过 14000 星。 这本书同时涉及了经典机器学习和深度神经网络,适合你从零基础了解到最新前沿内容。 中文译版叫做《机器学习实战:基于Scikit-Learn和TensorFlow》。链接 在这里 。 且慢下单! 还记得我前面说的那句话吗? 有的甚至 新到还没出版 的地步。 这本书的第二版,快要上市了。 书名更新为 Hands-on Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems。 其实你看,第二版的书名里面,也就是加了个 Keras 。但是如果你阅读我的那篇《 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 》比较仔细,应该不难理解这意味着什么。 由于 Keras 已经成了 Tensorflow 2.0 中**深度整合且官方推荐的高阶 API **,所以这本书实际上讲的,就是 Tensorflow 2.0 。 作者也表示说,可能需要跟出版社沟通,看要不要在封面上显著标识一下 Tensorflow 2.0 字样。 不过,第二版的出版时间,预定是 2019年8月 。 咱们还真得 等些日子 。 等待的这些日子,就不能学习 Tensorflow 2.0 了吗? 当然不是。 再次强调,现在你学 Keras ,就是学习 Tensorflow 2.0 的 最佳铺垫 。 第六本书,我不止一次推荐过,叫做“Deep Learning with Python”。书名很霸气,但实际上讲的,就是 Keras 这一个框架。 豆瓣评分,高达9.7。 这评分,看着跟刷出来的似的。 但实际上, 名至实归 。 又一次,教材作者,就是 Keras 框架作者本人 。 这本书,不仅教你 Keras 的用法,更深入浅出地讲解了深度学习的底层逻辑。尤其是表征(representation)的概念,讲得真是透彻。 读它之前,我原本就已经学过了 Andrew Ng 的深度学习课程,还拿到了证书。但可以说,看完了这本书后,我才对深度学习 真正 有了 清晰 的感觉。 这本书的中译本,在 这个链接 。 第七本,咱们得提一下 PyTorch 了。 深度学习框架领域的竞争结果,基本上明朗化了。 一方面,是 Google 阵营的 Tensorflow 2.0;另一方面,就是 Facebook 阵营的 Pytorch。 现在你要想入门,这两边你恐怕得挑一个。主流的学术论文,基本上都是用这两种框架来实现的。想要复现实验结果,学习设计思路,你绕不开它们。 PyTorch 的1.0正式版本出现不久。相关的教材,还不完备。 这本书的名称是“Beginner's Guide To Using PyTorch For Deep Learning”,确实,就是给 初学者入门 预备的。 作者 Ian Pointer 已经宣称,书中不仅会有 PyTorch 的基础内容,而且一直还会延伸到图像领域 ResNet 架构迁移学习,甚至是 BERT 与 GPT-2 这样的自然语言处理最新研究成果。 想想吧,一书在手,从入门到专业全方位覆盖。 可惜的是,根据亚马逊官网显示,这本书的上市时间,要等到2019年11月份。 看来,好的作品,都需要时间来打磨啊。 其他 哦,差点儿忘了,我自己也写了一本书,名字叫做《 文科生数据科学上手指南 》,包含了我对自己系列数据科学教程的梳理。现在网上 免费开放获取 。 你可以点击 这个链接 ( http://t.cn/EvMHAyo )查看。 小结 本文给你推荐了若干本教材,适合文科生初学者入门 Python 与数据科学。这些书籍的特点是: 门槛很低,但是天花板足够高。 例如其中提到的 BERT 和 GPT-2 等,都是目前前沿的领域研究成果。 希望读过本文之后,能对你的学习有帮助。 祝深度学习愉快! 延伸阅读 你可能也会对以下话题感兴趣。点击链接就可以查看。 如何高效学 Python ? 如何用 Python 和 fast.ai 做图像深度迁移学习? 如何用 Python 和深度迁移学习做文本分类? 如何用 Python 和 BERT 做中文文本二元分类? 如何用 Python 和 Tensorflow 2.0 神经网络分类表格数据? 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。 题图:Photo by Sharon McCutcheon on Unsplash
10043 次阅读|0 个评论
神经网络是怎么火起来的?
热度 1 yxgyylj 2019-4-19 02:33
目录: 0. 引子 1. 人工神经网络发家史 2. 深度学习——从横空出世到广泛应用 四个例子:--计算机视觉 --自然语言处理 --自动驾驶系统 --生成对抗网络 3. 神经网络背后的算法 三大要点:--反向迭代算法 --激活函数的选择 --随机梯度下降法 4. 神经网络的局限性 --要求大量训练数据 --过度拟合 --超参数选取和数学理论的缺乏 5. 笔者点评 0. 引子 近几年,“人工智能”(AI)、“深度学习”这类字眼越来越频繁地出现在我们的视野中。和十年前相比,我们的生活已经被 AI 和深度学习改变了太多太多,而今年的图灵奖得主也颁发给了深度学习领域的三位奠基人: 2019 年图灵奖得主,图片来自纽约时报(The New York Times) 正所谓几家欢喜几家愁,有人把它们当作赚钱的利器;有人对这类野蛮生长的科技深表忧虑;还有人则只愿意安静地当吃瓜群众,扔掉瓜皮吐光瓜籽后继续自己的美好或并不美好的生活。 无论您是哪类人,一个既定事实是,人工智能和深度学习已经在短短数年之内对人们的生活带来了太多的改变。近年来最为著名的一个例子也许就是 DeepMind 团队的阿尔法狗战胜李世石和柯洁 —— 尽管在国际象棋方面,人工智能在 30 年前就足以吊打所有人类大师,但由于围棋在计算复杂度吊打国际象棋,阿尔法狗的辉煌战绩依然被认为是人工智能领域的一大里程碑。 国际象棋和围棋的计算复杂度对比。两者皆为决策树模型,国际象棋使用了 α-𝛽 修剪算法,围棋则使用了蒙特卡洛决策树搜索+神经网络。图片来自 DeepMind 官网 有读者也许依然会对此不屑一顾:“围棋虽然复杂,但本质上和象棋一样,也只有有限多种可能结果啊,人工智能只需要把最佳结果意义列举并比较比较罢了!” 然而对于具有无限多种可能结果的情况,人工智能也不甘示弱,这在去年的一些电竞比赛中得到了证实。例如,在团队型即时战略游戏 Dota 2 中 (一个 5 v 5 的在线游戏),人类顶尖玩家团队被 OpenAI 团队的 OpenAI Five 战胜。 OpenAI Five(左下方)对战人类玩家(右上方) 一些资深游戏玩家或许认为 Dota 毕竟是五个人的游戏,出现“猪队友”的概率比“猪人工智能”大多了。不过在以单人竞技为主的即时战略游戏《星际争霸》中,人类顶尖玩家也败于 DeepMind 团队开发的人工智能 , 阿尔法星(AlphaStar) 之手。(关于《星际争霸》和人工智能的早期介绍,可以参考笔者的另一篇文章《 数学模型教你如何成为星际争霸高手·下 》) AlphaStar 的训练过程。动图来自 https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii/ 注: 笔者表示,Dota 和星际争霸的复杂度都可以趋向于无穷,因为这类游戏的操作界面在时间和空间上都是连续的,无法用 AlphaGo 的蒙特卡洛搜索树算法来穷举。做为即时战略游戏迷,笔者以后会更加详细地介绍上面两个团队各自的算法。 不管是 DeepMind 也好,还是 OpenAI 也好,他们在训练人工智能的时候都用到了 深度学习 ,也就是有很多层的 人工神经网络 (artificial neural network,以下简称神经网络)。想必大部分读者对“神经网络”的最初印象都来自于大脑神经,顾名思义,神经网络必然和脑神经有着千丝万缕的联系。那么神经网络为什么会这么火呢?我们先来看看神经网络的发家史。 1. 人工神经网络发家史 人工神经网络的首次提出可以追溯到上世纪 40 年代,美国神经科学家 Warren McCulloch 和 Walter Pitts 提出的 神经逻辑计算模型 (Neural Logical Calculus Model, )。不过做为神经科学家,McCulloch 和 Pitts 提出该模型的初衷只是为了解释大脑是如何运行的,他们不会想到这个模型会成为神经网络的先驱,为人工智能领域带来天翻地覆的影响。 图一:McCulloch-Pitts 模型,后来的各种人工神经网络都可以归纳于这个大框架。我们会在后面的章节中详细介绍 由于受到时代的限制,McCulloch-Pitts 模型乃至于之后出现的 感知元 (Perception)都并不能体现出神经系统的特点。到了 1959 年,加拿大神经科学家 David Hubel 和瑞典神经科学家 Torsten Wiesel(两位都是诺贝尔生理学或医学奖得主,神经科学家的牛 x 是不分国界的)发现视觉神经系统中存在两种不同细胞, 复杂细胞 (complex cell)和 简单细胞 (simple cell),分别位于大脑的不同部位。受此启发,人们便在原来的神经网络中加入 隐藏层 (Hidden Layer),以体现复杂细胞可以跨层次存在。 图二 不过归根结底,人工神经网络终究是个数学模型,层数越多,模型越复杂。由于缺少有效的算法支持,在 60-80 年代期间,神经网络的研究进入一个低谷期。直到 1984 年,深度学习之父,杰弗里·辛顿(Geoffrey Hinton)等人将所谓的 反向迭代算法 (Backpropagation)引入神经网络中,神经网络的研究方才再次步入正规。例如如今炙手可热的 玻尔兹曼机 (Boltzmann machine)、 卷积神经网络 (CNN, Convolutional Neural Network)和 长短期记忆 (LSTM, Long-Short Term Memory)等,实际上在上世纪 80-90 年代就出现了。 图三:神经网络界的几大网红。笔者会在后续的文章中更加详细地介绍这些神经网络的工作原理 2. 深度学习——从横空出世到广泛应用 当神经网络真正成为网红概念时,它已经有了一个更加高大上的名字—— 深度学习 (Deep learning) 。2012 年,深度学习之父杰弗里·辛顿和他的两个学生设计了一个有 7 个隐藏层的卷积神经网络,不仅赢得了该年度计算机图像分类大赛的冠军(ILSVRC),并且其分类错误率远低于传统的图像分类方法 。 笔者注: 在计算机视觉领域,“传统”方法也是上世纪 90 年代以后才提出来的方法了,例如支持向量机、稀疏编码、SIFT方法等。该领域更新换代速度也许只略逊于生物医学的某些领域(例如癌症研究),远超其他大多数行业。 图四:你能准确分辨拖把和拖把狗吗?基于深度学习的计算机已经可以了! 从此以后,深度学习渐渐变成了越来越多领域的香饽饽。文章开头提到的阿尔法狗、阿尔法星和 OpenAI Five 就都用到了深度神经网络,以及 强化学习 (Reinforcemence Learning)的框架。 图五:新东西总是最美好的 又如在 自然语言处理 (Natural Language Processing, 一般指不同于计算机语言的人类语言)领域,2012 年,谷歌团队开发出了一种用高维向量来表示单词的方法(俗称 word2vec),于是文本变成了数据,为使用深度学习方法(例如长短期记忆 LSTM网络)提供了理论架构 。 图六:文本处理与深度学习的结合。多数聊天机器人就是用这种方式被训练出来的 再如自动驾驶系统的实现。最著名的框架也许是英伟达(NVIDIA)公司在 2016 年提出来的“端对端系统” (end-to-end system)。该系统采用三个不同相机以通过不同视角记录和随机生成路况信息,然后将这些生成的路况信息用一个卷积神经网络进行训练,并不断地用实际操纵指令来纠正神经网络产生的错误。该系统的训练过程如下所示: 图七:英伟达的“端对端系统”训练过程。原图来自 的图片 2 英伟达提出的这个架构十分类似于另一个近年来应用十分火爆的神经网络架构 —— 生成对抗网络 (Generative Adversarial Nets)。也许很多读者并不清楚这是何方神圣,所以我们先来看一下它的几个应用: 智能换脸 AI 合成表情 新华社的 AI 合成主播 也就是说,我们平常在网上看到的一些看似不可思议的视频或动图,其实都是通过生成对抗网络合成出来的!而这个网络的魔力就在于,它拥有 生成器 (Generator)和 判别器 (Discriminator)两个不同的神经网络,其中生成器通过随机输入的数据来生成图像,判别器则负责鉴别生成器生成的图像是否达到标准,以此来达到训练的目的。 3. 神经网络背后的算法 注:本节要求读者有高等数学和线性代数基础,并对梯度下降法有一定了解 到这里,相信读者们已经对神经网络的应用有了一些大体的认识。我们经常听说一个神经网络需要接受“训练”,这个“训练”到底是怎么做到的呢? 答案就是 反向迭代算法 (Backpropagation)。读者不要被这个算法高大上的名字吓到了,它的核心只有两个—— 偏导数 和 链式法则 。反向迭代算法的目的在于 通过减小输出值与实际值的差异,来不断更新神经网络里的各种参数 。这便是“训练”一个神经网络的全部内容。 听上去训练一个 AI 比训练小孩子容易多了!然而实际上,训练神经网络最大的挑战就在于 更新模型中的大量参数 。一图以蔽之,神经网络隐藏层的每个神经元本质上都是这样运作的: 图八:神经网络算法总结 从上图中我们可以看到,神经元起到的作用无非就是把一系列输入数据转化为输出,只不过需要引入一系列未知参数——权重 w_{ij} 和 偏差 b_{j} 罢了(j 表示神经网络的第 j 层,i 表示第 j-1 层的第 i 个神经元)。而 如何更新这些未知参数,则是训练神经网络的核心所在 。下面的图表明了反向迭代算法和向前迭代算法的区别,以及为什么在训练神经网络(尤其是深层神经网络)的过程中必须用到反向迭代算法的原因: 图九:反向迭代vs向前迭代 在实际训练过程中,我们需要不断地更新权重 w_{ij} 和偏差 b_{j},这可以通过不断地最小化某个损失函数 L 来完成。根据实际问题,常用的损失函数有 均方差 (L2 损失)、DL 距离和 交叉熵 (Cross Entropy)等等。确定好损失函数后,我们使用 梯度下降法 分别对 w_{ij} 和 b_{j} 求偏导数,然后利用 链式法则 计算出每一步需要更新的步长,例如对于权重参数 w_{ij},更新方法如下: 图十:上角标 t 表示训练(迭代)次数 其中“学习效率”一般取值在 0 和 1 之间。就像小孩一样,如果学习效率太高,遇到不好的输入数据时就很容易学到坏东西,但如果学习效率太低,那么学习成本又会过高。因此选取适当的学习效率值,是训练一个好神经网络的关键。 图十一:学如江流徒杠,不可鹅行鸭步,亦不可操之过急 此外值得一提的是,从数学的观点看来,神经网络中 激活函数 (Activation Function)的非线性性是神经网络的一大特色。早期的激活函数选择受到了生物神经元的影响(可参考笔者之前的文章《 读懂你的大脑——漫话神经元 》),一般选择 Sigmoid 函数或双曲正切函数(tanh): 图十二:生物神经元模型中常用的两种激活函数 不过由于当输入比较大时,上面这两兄弟关于输入的导数接近于 0 (读者可自行验证),这在反向迭代过程中并不是个好消息 —— 图十中在 L 对 s_{i} 的偏导数几乎为 0,因而在迭代过程中权重 w_{ij} 几乎不变!这在十年之前一直是一个难题,不过 2011 年以后,上面这两兄弟便很快被一种叫做 线性整流 (ReLU,Retified Linear Unit)的激活函数所取代。这个函数长这样: 图十三:ReLU 函数 容易验证,只要 u 0, 那么 f'(u) = 1, 于是损失函数 L 对 s_{i} 的偏导数不会接近 0,更新参数困难的问题得以解决! 到此为止,神经网络算法的理论基础已经被搞定了。然而在实际操作中还有另外一个问题——计算时间。试想如果要训练一个非常深层的神经网络,势必需要更新大量未知参数(未知参数的个数随着网络层数呈指数上升),如果采用图十那样的每更新一个参数都需要把 N 个训练数据(输入数据的一种)都用进去,那么当训练数据很多的时候,计算复杂度将非常高!为了解决这个方法,人们通常采用一种叫做 随机梯度下降 (Stochastic Gradient Descent)的算法,来代替常规的梯度下降法: 图十四:梯度下降 vs 随机梯度下降。其中 L_k 表示只依赖于第 k 个训练数据的损失函数, k 从 N 个总训练数据中随机取出的一个 可以看到,相比常规的梯度下降法,每一步随机梯度下降的计算量小了很多。不过由于训练数据的随机性,这样带来的后果便是收敛速度变慢,训练所需的迭代次数增加了(t 的取值上界更高)。所以如今常用的迭代方法一般是经过两者综合的 微小块梯度下降法 (Mini Batch Gradient),或者收敛速度更快的的 自适应动量估计 (Adam, Adaptive Moment Estimation) 算法等等。限于文章篇幅,具体细节在此不做介绍,有兴趣的读者可以参考一篇不错的综述 。 4. 神经网络的局限性 到此为止,我们已经对深度学习和神经网络的历史、应用,以及背后的算法有了初步的认识。但话说回来,世间万物皆有破绽,那么神经网络还存在哪些局限性呢? 也许一些读者会思考这样的问题:如果神经网络真的这么厉害,历史也不算短了,为什么直到 21 世纪以后才开始普遍投入使用呢?其中主要原因其实是硬件层面的,因为进入 21 世纪,电子硬件的成熟,尤其是通用性 GPU 的广泛使用才得以胜任深层神经网络的训练任务。换言之,神经网络和深度学习的火爆在 很大程度上依赖于芯片技术的不断更新换代 。关于 GPU 计算的更多内容,可参考笔者之前的文章《 让 GPU 也参加到计算中来 》。 CPU 和 GPU 计算力(以浮点数计算效率为测度)对比。图片来自网络 既然有了如此强大硬件的支持,如果没有足够的训练数据集的话,神经网络也并不见得比传统方法高效多少了。这是因为神经网络的一大主要特色就是,其未知参数数量可以非常多,因此在理论上可以逼近出任何函数。但这样做的代价就是需要有足够的训练和测试数据集(测试数据集用于测试训练出来的神经网络表现如何)。 另一方面,如果模型参数太多,很容易出现 过度拟合 (overfitting)的情况,反而降低模型的准确率。为了解决过度拟合,人们会采用许多不同的 正则化 (regularization)技巧,例如 随机失活 (Dropout)、加入惩罚项、自助式聚合(Bagging, Bootstrap Aggragation)等方法来达到减少参数个数的目的。限于篇幅,这里不做进一步介绍了。 神经网络的另一大特色就是架构非常灵活——如引言中所述,卷积神经网络(CNN)、长短记忆(LSTM)、玻尔兹曼机等等都是很常用的神经网络,而且每种神经网络都有大量 超参数 (Hyperparameter,例如神经网络的深度、宽度、学习效率、激活函数等等)供选择,没有一个可靠的数学定理保证应该如何选取超参数以及神经网络种类。 做为数学系出身的笔者对此表示遗憾。限于学识水平,笔者所知道的关于神经网络的数学定理都不算十分本质,例如 万有近似定理 (Universal Approximation Theorem),用本科的泛函分析工具(哈恩-巴拿赫定理 + 里兹表示定理)证明了任一连续有界的 n 维实函数可被一个至少一层的神经网络任意逼近,且该定理对不同的激活函数(Sigmoid 和 ReLU)又有不同的证明方法,尽管证明过程都非常漂亮。这个定理不算十分本质的原因在于,其他许多非神经网络系统,例如 模糊系统 (Fuzzy System),也有类似的万有近似定理。 万有近似定理的核心就是证明上面这个函数的值域在 R^N 上是稠密的 从数学上看来,还有一些其他有趣结论和神经网络有关。例如 2016 年有人严格地证明了在模型复杂度的意义下,深层的神经网络比浅层的更为高效 。不过从证明过程中可以看出,这个定理只是在渐进意义(单层神经元数目趋向于无穷)下有效,对实际应用的指导依然非常有限。笔者十分希望以后有机会能看到一个能真正具有广泛指导意义的数学定理。 5. 笔者点评 我们不难看出,深度学习虽然在很大程度上改变了我们的生活,但它依然存在不少软肋。天下没有免费的午餐,深度学习之所以有今天的火爆,很大程度上依赖于芯片技术的发展(计算力的提升),而芯片生产是一个很长的产业链,有设计、设备、材料和测封等过程,涉及到大量基础学科。因此笔者认为, 基础学科才是科技发展的重中之重,而并非盲目地追求人工智能、深度学习这些热门词汇 。 另一方面,深度学习虽然火爆至今,但这种火热能持续多久,笔者持以保留态度。其一,深度学习的理论基础,神经网络,在上世纪 90 年代就已经被研究透测,而据笔者所知,该领域至今并未出现一个如同广义相对论(可参考笔者和小伙伴合作的文章《 广义相对论 是如何被一步步构思出来的?》)或规范场论(可参考笔者和小伙伴合作的文章《 带你认识高大上的规范场 》)那样具有框架性的数学理论;其二,深度学习只是众多机器学习方法的其中一种,每种机器学习方法都有自己的优缺点,并不存在一种万能的方法。因此,笔者建议打算入行深度学习的朋友们, 要先打好微积分、线性代数、概率论与数理统计、离散数学、最优化算法和数据挖掘这些课程的基础 ,毕竟也许几年以后,便会有一种全然不同的机器学习方法凌驾于深度学习之上。 参考文献: McCulloch WS, Pitts W. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics. 1943 Dec 1;5(4):115-33. https://www. nobelprize.org/prizes/m edicine/1981/hubel/biographical/ Ackley DH, Hinton GE, Sejnowski TJ. A learning algorithm for Boltzmann machines. Cognitive science. 1985 Jan 1;9(1):147-69. LeCun Y, Boser B, Denker JS, Henderson D, Howard RE, Hubbard W, Jackel LD. Backpropagation applied to handwritten zip code recognition. Neural computation. 1989 Dec;1(4):541-51. Hochreiter S, Schmidhuber J. Long short-term memory. Neural computation. 1997 Nov 15;9(8):1735-80. Krizhevsky A, Sutskever I, Hinton GE. Imagenet classification with deep convolutional neural networks. InAdvances in neural information processing systems 2012 (pp. 1097-1105). Mikolov T, Chen K, Corrado G, Dean J. Efficient estimation of word representations in vector space. arXiv preprint arXiv:1301.3781. 2013 Jan 16. Bojarski M, Del Testa D, Dworakowski D, Firner B, Flepp B, Goyal P, Jackel LD, Monfort M, Muller U, Zhang J, Zhang X. End to end learning for self-driving cars. arXiv preprint arXiv:1604.07316. 2016 Apr 25. Goodfellow I, Pouget-Abadie J, Mirza M, Xu B, Warde-Farley D, Ozair S, Courville A, Bengio Y. Generative adversarial nets. In Advances in neural information processing systems 2014 (pp. 2672-2680). Ruder S. An overview of gradient descent optimization algorithms. arXiv preprint arXiv:1609.04747. 2016 Sep 15. Cybenko G. Approximation by superpositions of a sigmoidal function. Mathematics of control, signals and systems. 1989 Dec 1;2(4):303-14. Eldan R, Shamir O. The power of depth for feedforward neural networks. In Conference on learning theory 2016 Jun 6 (pp. 907-940). 欢迎大家关注我的公众号“科普最前线”(id:kpzqxyxg),对话前沿科学!每篇文章都由笔者亲自完成或修改,希望和大家一起交流!
981 次阅读|2 个评论
数据科学如何助力科研?
热度 1 wshuyi 2018-11-30 12:32
硬件平台、软件环境和算法模型的一站式支持,可以让各学科的研究都能从数据科学的发展获益。 开放 今天是北得克萨斯大学(University of North Texas, UNT)科研信息技术服务中心(Research IT Services)的开放日(Open House)。 昨天丁老师告诉了我们这个消息。于是今天上午,我们实验室的几个小伙伴,就过来参观学习了。 在工作人员的带领下,我们参观了高性能计算机房。那里面真是壮观。 磁盘阵列都在高速运转。拉开抽屉,里面整整齐齐数十个6TB的硬盘。用户的数据可以同时在上面读取。 走近机架,CPU和GPU们制造的热风铺面而来;旁边就是冷却管线。从一排排服务器中间穿梭,真有冰火两重天的感受。 因为噪声很大,讲解人员不得不提高音量。他告诉我们,因为要保证冷却、供电等设施的持续正常运转,整个建筑的结构都是独特的。单单是买来设备之后做布线,就是一个十足的技术活儿。 10点钟,我们在535房间,听了科研信息技术服务中心4名工作人员联合做的报告。报告的内容,极大地改变了我对服务中心功能的印象。 原本以为,他们不过就是网络管理员。为学校里面的师生,提供基础设施。设置用户账号,预装软件,然后解决一些需要重启电脑之类的问题而已。就像英剧《IT》里面这帮家伙一样。 然而,Richard 用一个案例,说明了他的工作,令我感觉到了震撼。 案例 案例来自于一个研究生,叫做 Sheela ,学生物的。 她自己的 LinkedIn 页面,有不少内容没有更新。当初她给自己的预计,是 2017 年底毕业。 事实上,她不仅没有按照预期时间毕业,而且差点儿就没法毕业了。 她的研究方向是生育。希望对比4种不同的治疗方法,在不同条件下对生育的促进影响。 我是外行,不知道这里面数据采集究竟需要多高的成本。但是 Richard 告诉我们,很贵。 Sheela 用了好几年的时间,终于采集到了 104 个样本,每个样本包括 29 个特征变量。 然后,她就试图采用回归和方差分析(Analysis of variance,ANOVA)的手段,来构造模型。结果发现——一点儿显著关系都没有!这几年白干了。 欲哭无泪啊。 是不是就此放弃毕业呢? Sheela 跑来服务中心,找到 Richard 所在的数据科学与分析(Data Science and Analysis)部门求援。 Richard 发现,由于数据量小,可能的相互作用和潜在模型数量却很多,因此传统方法不适合这个研究的数据分析。 而 Richard 的爱好,恰好就是玩儿各种新鲜的统计工具。 于是,他很快帮助 Sheela 设定了新的分析思路:基于决策树的监督学习+遗传算法,然后采用 BIC 做模型选择。 Sheela 一听就懵了:这说的都是什么?…… 没错,这就是具体研究领域人员面临的现实问题——追踪本领域前沿,已经让他们投入了全部精力。他们没有余力,在研究方法和工具上时刻刷新自己的知识和技能。 但是, Richard 说,数据科学与分析(Data Science and Analysis)部门就是在这种情况下,体现自身价值的。 我们参观了 Richard 的办公室。里面就如同一座小型图书馆,摆满了各种书籍和资料。他平时乐此不疲地追踪数据科学进展,因此对于他来说,新的数据分析思路,其实无非对应着 3.5 个 R 软件包(其中有一个软件包,可视化模块独立,所以他认为算半个)而已。 不过,如果你拿普通的电脑试图做这种数据分析,依然是很困难的。 Richard 的电脑是一台配置不错的 Macbook Pro ,16GB的内存,6核CPU。但是为了帮 Sheela 跑这个分析,连续运转了25个小时,依然看不见尽头。 这时候,高性能计算设备的作用就来了。 Richard 旋即把任务扔到了服务器集群上面,同时使用超过200个核心……就是这样,依然跑了10多个小时,才完成。 出来的结果,让 Sheela 欣喜不已。这是 ROC 曲线图: 那 0.5 个软件包,还顺便把决策树的可视化做了。 在这张图里面,4种不同疗法,在不同的条件下,对应的效果差别,一目了然。 Sheela 不仅顺利毕业,而且还把论文发在了一份很好的期刊上面。 这是个皆大欢喜的结局。 功能 Richard 是这样描述部门使命的: 可以看到,数据科学与分析部门,从软件、硬件、算法和模型构造,全方位为有需要的师生提供支持。 不仅帮助学生搞定毕业论文,他们还和教授们合作,共同申请科研项目经费。 他们还利用教程的方式,把数据科学的基础知识与技能分享给大家。 这种分享,是超越学校范围的,每个人都可以获取。你可以访问 这个链接 ,看看他们精心制作的 R 语言教程。 每一段教程里面,都不仅给出了完整的代码,可以拷贝粘贴直接用,而且还有详细的注释,甚至是附带数据的下载链接。 师生们可以根据自己的需求,找到相应的教程,直接应用到自己的研究问题和数据上面。 数据科学与分析部门还会经常提供培训讲座。例如明天,就会有利用服务集群做机器学习和深度学习的教学演示。我听了很兴奋。 Richard 的同事 Jon 介绍说,他们不仅有 R 语言教程,还有 SPSS 和 SAS,甚至是 Latex 的教程。这些教程会经常更新,并且不断补充新的应用场景。 我很兴奋地询问,有没有 Python 教程? Jon 面露难色,告诉我说“不好意思,我们属于 R 阵营”。 小结 一上午的参观学习,让我们收获良多。令我们印象最深刻的,并不只是那些硬件基础设施,而是这种数据科学对科研的真正有效推动。 数据科学是专业领域,并非每个人都需要成为数据科学家。门槛的降低,可以让更多人应用数据科学提供的便捷工具,来推进自己的科研,尤其是其中的数据分析环节。 更可宝贵的,是这种一站式咨询与合作方式,不仅可以帮助有困难的师生解决燃眉之急,更有助于形成良性互动循环,使得科研项目做大做强。就像下图中展现的一样。 喜欢请点赞和打赏。还可以微信关注和置顶我的公众号 “玉树芝兰”(nkwangshuyi) 。 如果你对 Python 与数据科学感兴趣,不妨阅读我的系列教程索引贴《 如何高效入门数据科学? 》,里面还有更多的有趣问题及解法。
11705 次阅读|1 个评论
科研数据共享影响因素分析及作用阐释
terahertz 2018-11-26 14:04
(本文发表于《图书馆论坛》2018年第11期) 摘要: 文章通过对64篇文献的深度阅读和分析,运用扎根理论方法概括科研数据共享的若干影响因素,从整体性思维视角展现影响因素之间的关系以及与数据共享活动之间的作用。在此基础上,进一步从数据生命周期、利益相关者、数据治理三个理论视角探析科研数据共享影响因素的关联关系,为科研数据共享提供借鉴。 关键词:科研数据;数据共享;扎根理论;数据管理;数据科学
个人分类: 发表论文|1942 次阅读|0 个评论
严谨规范,学术精进,激励后学,奋力拼搏。
geneculture 2018-7-12 08:50
无论是谁?哪怕他或她再有学术资历和荣誉地位,在学术问题上都应该严谨规范,尤其是对后学的学术研究成果,更是不能主观臆断,而要多多鼓励和支持!否则,学界如何进步?因此,我们一定要提倡各种有利于激励千百万后学奋进的社会氛围!否则,整个学界和社会都会缺乏后劲。凡事都有其相应的规律或概率。一旦发现其科学的概念、原理和方法,就可获得相应的诀窍。这就意味着决策和执行的过程会事半功倍。融智学理论与三大系统工程实践结合,有化腐朽为神奇的功用。这是意料之外情理之中的。合情合理又合法就是其实际发挥作用的基本准则。懂会熟巧用则是必经之路。否则,充其量也就是一个业余爱好者。基于理性的哲学反思与基于经验的科学预言,外加个性化的艺术应对与标准化的技术操作,可充分体现集大成、融大智、共大享的格局(这就是融智学理论与三大系统工程实践可发挥作用的情形)。相比之下,古希腊和先秦诸子、近现代以及现当代的各路才俊英豪,都没有这样千载难逢的机会。因此,我们生逢其时,必然对人类近期的未来以及长远的未来,产生影响。这就是我们每一个人的机会(至于是否能把握?那就另当别论了)!-zxh 附图暨附录
个人分类: 学术研究|3386 次阅读|1 个评论
可多校合作的国际国内重大特大项目的三个关键内核
geneculture 2018-6-11 08:16
“基于科学方法体系的双语逻辑” (UNILOG2018国际统一逻辑会议报告题目)和“自然语言处理的新方向”(ICIS2018智能科学国际会议报告题目)与前面我报告过的“两大类形式化方略”即上海计算中心报告题目的改进版三个报告一道可组成做未来我们可多方多校合作的国际国内重大特大项目的三个关键内核(有此基础理论和方法以及广大师生皆可参加的网络工具平台暨新一代广义双语开发环境做支撑,各式各样的发明创造和发现创新的活动都会有一个自由发挥的虚拟现实世界来配套)!-邹晓辉(塞尔科技) 附录1:“两大类形式化方略”即上海计算中心报告题目及摘要 摘要: 阐述机器翻译的两大类形式化方略。其中,第一大类形式化方略涉及:编程语言和英语(自然语言);第二大类形式化方略涉及:二进制数与十进制数、十进制数与汉字中文、中文和英文(可换)三类双语协同变换,属于形式化及其拓展研究领域。其结果是:凸显了第二大类形式化方略。其意义是:揭示了其理论依据,并为含语言学在内的学科知识系统工程提供了广义双语信息处理技术,有利于母语为非英语的计算机用户改善人机对话的语言环境。 关键词: 机器翻译; 形式化; 双语信息处理; 分类号:TP391.2 两大类形式化方略.pdf http://xuewen.cnki.net/CJFD-JYRJ201309055.html 附录2:ICIS2018智能科协国际会议报告题目及摘要 2017-09-07 ZouXiaohui and ZouShunpeng: Logic of sequence and position.pdf 附录3:ULILOG2018国际逻辑会议报告题目及摘要 11. New Approaches to Natural Language Understanding Xiaohui Zou Sino-American Saerle Research Center, Abstract: This talk aims to disclose the know-how of launching a new generation of excellent courses and to develop the learning environment in which human-computer collaboration can optimize the expert knowledge acquisition. The method is to form a teaching environment that can be integrated online and offline with some technical platform of cloud classrooms, cloud offices and cloud conference rooms. Taking Chinese, English, classical and summary abstracts as examples, human-computer coordination mechanism, to do the appropriate new generation of quality courses. Its characteristics are: teachers and students can use the text analyzed method to do the fine processing of the same knowledge module, and only in Chinese or English, through the selection of keywords and terminology and knowledge modules, you can use the menu to select as the way to achieve knowledge. The module's precision machining can adopt the big production method that combines on the line first, complete coverage and accurate grasp each language point and knowledge point and original point even their respective combination. This method can finish fine processing instantly for any text segment. The result is the learning environment that enables human-computer collaboration to optimize the expert knowledge acquisition. Its significance is that this project of this learning environment software based on the National Excellent Courses is already owned by Peking University and that is constructed by using the numbers-words chessboard with the feature of the introduction on the knowledge big production mode for the textual knowledge module finishing. Biography Xiaohui, Zou, male, Chengdu, Sichuan Province, chief researcher, Working in the Project Team on the new generation Excellent Courses of Natural Science Foundation in Peking University and the Sino-American Searle Research Center, head of the group on collaborative intelligent education research, deputy director of the Artificial Intelligence Committee of the China Branch of the International Information Research Society, and Assistant Director of the Education Information Professional Committee, The research direction is language, information and intelligence science. http://www.intsci.ac.cn/icis2018/committees.jsp http://www.intsci.ac.cn/icis2018/speaker.jsp
个人分类: 融智学前期探索|1768 次阅读|1 个评论
为什么机器学习/数据科学的数据探索中要进行数据可视化?
iggcas010 2018-5-31 22:27
不要说数据可视化的优点,以及为了展示给老板看。 本文参考维基百科: https://en.m.wikipedia.org/wiki/Anscombe%27s_quartet 下图是著名的安斯库母四重奏, 它们具有相同的统计值,但不同的x,y,然而结果用简单的线性回归建模却得到同样的结果,事实上,拟合的结果的准确性是值得商榷的,有的效果可以,有的却是错误的。 Property Value Accuracy Mean of x 9 exact Sample variance of x 样本方差 11 exact Mean of y 7.50 to 2 decimal places Sample variance of y 4.125 plus/minus 0.003 Correlation between x and y 0.816 to 3 decimal places Linear regression line y =3.00+0.500 x to 2 and 3 decimal places, respectively Coefficient of determination of the linear regression 线性回归的确定系数 0.67 to 2 decimal places 好好看看,第二个图和第四个图是不是直接错误,第三个图勉强算对,但不准确,有个离群值明显可以舍去。第一个图是正确的。 由此可见,在数据探索中,有必要进行简单的验证,查看数据是否可以用已有的模型,模型重要,但数据质量更重要。
2607 次阅读|0 个评论
[转载]ICIS2018:Language cognition
geneculture 2018-5-21 00:46
CFP - ICIS2018(最新版).pdf http://www.intsci.ac.cn/icis2018
个人分类: 学术研究|915 次阅读|0 个评论
如何高效入门数据科学?
热度 3 wshuyi 2018-5-14 16:32
链接散落的教程文章,做个详细的导读,助你更高效入门数据科学。 问题 2017年6月以来,我陆续在自己的简书专栏《 玉树芝兰 》里,写了一系列 数据科学 教程。 这源于一次研究生课编程工作坊尝试。受阎教练的创新思维训练营启发,我在课后把词云制作流程详细记录转述,分享给了大家。 没想到,这篇《 如何用Python做词云? 》受到了读者们非常热烈的欢迎。 此后,一发不可收拾。 应读者的要求,结合我自己的学习、科研和教学实践,我陆续分享了更多与 数据科学相关的文章 。 读者越来越多,我收到的问题也愈发五花八门。 许多读者的问题,我其实都已经在其他的文章里面讲解过了,因此有时用“请参考我的另一篇文章《……》,链接为……”来答复,也帮助读者解决了问题。 在建构 同理心 (empathy)之前,估计我会问出这样的问题: 他们为什么不翻翻我的其他文章呢? 但现在,我能感受到他们的疑惑: 我哪里知道你写过另一篇文章? 散落在各处的文章,不容易系统学习和检索。于是我在2017年11月,把写过的数据科学系列教程汇集到了一起,做了个 索引贴 。 我把这个索引贴链接置于每篇新教程的末尾,并不断更新维护。 然而,这样简单的标题索引,依然 无法满足 许多读者的 需求 。 有的读者跟着 教程 做完了词云,发现如果对中文文本做分析,就会出现乱码: 这时候,你该怎么办呢? 更进一步,如果你希望把词云的外边框变成指定的形状,又该如何操作? 光看标题,你可能不容易发现哪一篇文章会帮助自己解决这些问题,甚至可能会选择 放弃 。 我决定做这个导读。 这篇文章,不再是从任务出发,简单罗列文章标题和链接;而是从先易后难的认知习惯,重新组织文章顺序,简要介绍内容,提示可能遇到的问题。 希望对你的学习能 有帮助 。 基础环境 大部分的教程,都是在 Python 运行环境 Jupyter Notebook 下运行和演示。 安装这个运行环境,最简单的方法,就是安装 Anaconda 集成套件。 请先收看这个视频教程《 如何安装Python运行环境Anaconda?(视频教程) 》,自己尝试安装Anaconda,运行起第一个Jupyter Notebook,输出一个“Hello world!”出来。 有了这个基础,你就可以尝试不同的数据科学任务了。 我的建议是先做词云。 因为简单,而且有成就感。 词云 跟着图文教程《 如何用Python做词云? 》一步步执行。用几行Python代码,你就可以做出这样的词云来。 我还专门把它升级做成了视频教程《 如何用Python做词云?(基础篇视频教程) 》,供你观看。 参看这篇文章《 如何用Python做中文分词? 》,你就能做出这样的中文词云。 如果你希望改变词云边框外观,就参考这篇文章《 Python编程遇问题,文科生怎么办? 》的 最后部分 。 到这里,你已掌握Python运行环境安装、文本文件读取、常见软件包调用、可视化分析与结果呈现和中文分词等基本功夫了。 回头望去,是不是成就感爆棚呢? 虚拟环境 细心的你,可能已经发现,图文教程和视频内容 并不完全一致 。 视频教程目前全系列采用Python 3.6版本,未来得及重新整理的词云图文教程,展示的确实2.7版本Python。 为什么呢? 因为随着技术的发展,Python已经逐步要过渡到3.X版本了。 许多第三方软件包都已经宣布了时间表,尽快支持3.X,放弃2.X版本的支持。 才半年,你就可以感受到技术、社群和环境的变化之快。 可是 目前 某些软件包,依然只能支持2.X版本Python。虽然这样的软件包越来越少了。 你需要暂时做个“ 两栖动物 ”,千万不要束缚自己,因为“立场原因”固执着不肯用低版本Python。这样吃亏的是自己。 怎样才能做个“两栖动物”呢? 办法之一,就是使用Anaconda的虚拟环境。可以参考《 如何在Jupyter Notebook中使用Python虚拟环境? 》。 你初始安装版本针对Python 2.7的Anaconda,并不妨碍你快速建立一个3.6版本Python的 虚拟环境 。 有了这个秘籍,你就可以在不同版本的Python之间左右逢源,游刃有余了。 自然语言处理 下一步,我们来尝试自然语言处理(Natural Language Processing, NLP)。 情感分析,是NLP在许多社会科学领域热门的应用之一。 《 如何用Python做情感分析? 》这篇文章,分别从英文和中文两个案例,分别采用不同的软件包,针对性地解决应用需求。 你只需要几行代码,就能让Python告诉你情感的取向。是不是很厉害? 有了情感分析做基础,你可以尝试增加维度,对更大体量的数据做分析。 增加时间维度,就可以持续分析变化的舆情。 《 如何用Python做舆情时间序列可视化? 》这篇文章,一步步指引你在时间刻度上可视化情感分析结果: 这图难看了一些。 不过我们需要容忍自己起步时的笨拙,不断迭代与精进。 希望一出手就满分,对极少数天才,确实无非是日常。 但对大多数人,是 拖延症 的开始。 你可能迫不及待,尝试换自己的数据做时间序列可视化分析。 不过日期数据如果与样例有出入,可能会出现问题。 这时候,不要慌,请参考《 Python编程遇问题,文科生怎么办? 》的 第二部分 ,其中有详细的错误原因分析与对策展示。 看过后,分析结果图也会迭代成这个样子: 到这里,你对情感分析有点儿感觉了吧? 如果你不打算使用第三方提供的情感分类算法,打算自己动手训练一个更为精确的情感分类模型,可以参考《 如何用Python和机器学习训练中文文本情感分类模型? 》一文。 刚刚这些情感分析,其实只是极性分析(正面vs负面)。但是我们都知道,人的情感其实是多方面共同构成的。 如何从文本中,分解出 多维度 的情感特征变化呢? 《 如何用Python和R对《权力的游戏》故事情节做情绪分析? 》一文分析了《权力的游戏》中某一集剧本,你会获得这样的结果: 如果你是《权力的游戏》剧迷,请告诉我,这张图描绘的是哪一集? 先猜猜看,然后再打开 文章 ,跟结尾做对比。 这篇文章的可视化分析部分,用的是R。 R也是数据科学领域一个非常受欢迎的 开源工具 。它的通用性和热度可能不如Python(毕竟Python除了数据科学,还能干许多其他的事儿),但是因为有统计学界诸多科学家的拥护和添砖加瓦,因此有非常好的一套生态系统。 如果你希望对单一长文本提取若干重要关键词,该怎么办呢? 请你阅读《 如何用Python提取中文关键词? 》一文。它采用词汇向量化、TextRank等成熟的关键词提取算法来解决问题。 课间答疑 随着知识、技能和经验的积累,你的疑问可能也逐渐增多了吧? 有的同学对这种教学方式有疑问——案例挺有意思,也很简单易学,但是怎么把它用到我自己的学习、工作和科研中呢? 我为你写了一篇答疑说明,叫做《 文科生如何高效学数据科学? 》。文中提到了以下几个方面: 如何指定目标? 如何确定深度? 如何加强协作? 提到协作,就不能不说Github这个全球最大的开源代码托管仓库了。 在咱们的教程里,也多次使用Github来存储代码和数据,以便你能够重复运行教程中的结果。 《 如何高效入门Github? 》一文提供了文档和视频教程资源,希望能对你掌握这个数据富矿提供帮助。 不少读者在这个阶段常提出这个问题:老师,想学Python,推荐本书呗。 看来,你已经明白了Python的好处了,对吧? 《 如何高效学Python? 》帮助你给自己的学习特性做出了分类。根据分类的结果,你可以选择更适合自己的学习路径。 推荐的教材,不仅包括书籍,还包括MOOC。希望这种充满互动的教学方式,对你入门数据科学有帮助。 机器学习 你可以尝试做更进一步的分析了。 例如机器学习(Machine Learning)。 机器学习的妙用,就是在那些你(其实是人类)无法准确描述解决步骤的问题上,让机器通过大量案例(数据)的观察、试错,构建一个 相对有用的模型 ,来自动化处理问题,或者为人类的决策提供辅助依据。 大体上,机器学习主要分为3类: 监督学习(Supervised Learning) 非监督学习(Unsupervised Learning) 强化学习(Reinforcement Learning) 目前本专栏介绍了前两类的一些例子。 监督学习与非监督学习最大的差别,在于数据。 数据已有标注(一般是人工赋予标签),一般用监督学习; 数据没有标注,一般只能用非监督学习。 监督学习部分,我们举了分类(classification)任务的例子。 《 贷还是不贷:如何用Python和机器学习帮你决策? 》中的案例,选择了贷款审批辅助决策。 具体的机器学习算法,是决策树(decision tree)。 有同学表示,绘制这棵决策树的时候,遇到了问题。 这主要是因为运行环境的差异和依赖工具的安装没有正确完成。 《 Python编程遇问题,文科生怎么办? 》的第一部分,对这些问题做了详细的阐述,请根据列出的步骤尝试解决。 不仅如此, 这篇文章 展示给你了一种 任务导向 的学习方式,期望它可以提升你Python语言和数据科学学习效率。 非监督学习部分,我们讲述了《 如何用Python从海量文本抽取主题? 》。 文中用一种叫做LDA的聚类(clustering)方法,帮你从可能感兴趣的浩如烟海文档中,提取出可能的类别,对应的主要关键词,并且做可视化处理。 文中提及了停用词(stopwords)的处理,但是没有给出中文停用词的具体应用方法。 《 如何用Python和机器学习训练中文文本情感分类模型? 》一文中,我不仅对停用词处理方式进行了详细的介绍,而且把监督学习Naive Bayes模型应用于情感分析,手把手教你如何训练自己的情感分类模型。 深度学习 深度学习,指用深度神经网络(Deep Neural Network)进行机器学习。 相对于传统机器学习方法,它使用的模型结构更为复杂,需要更多的数据支持,并且训练起来要消耗更多的计算资源和时间。 常见的深度学习应用,包括语音识别、计算机视觉和机器翻译等。 当然,新闻里面最爱提的,是下围棋这个事儿: 我们提供的案例,没有那么挑战人类智能极限,而是跟日常工作和生活更加相关。 《 如何用Python和深度神经网络发现即将流失的客户? 》为你介绍了深度神经网络的基本结构。 这篇文章通过客户流失预警的例子,讲述了使用前馈神经网络进行监督式学习的基本样例。 实际操作部分,我们采用Tensorflow作为后端,tflearn作为前段,构造你自己的第一个深度神经网络。 《 如何用Python和深度神经网络发现即将流失的客户? 》一文末尾还为你提供了进一步掌握深度学习的相关资源。 如果你需要安装Tensorflow深度学习框架(Google出品哦),欢迎先阅读这篇《 Tensorflow执行pip升级安装的坑 》。 有了深度神经网络的基础知识,我们折腾计算机视觉。 《 如何用Python和深度神经网络识别图像? 》一文,举例分类哆啦a梦和瓦力这两个机器人的各种花式图像集合。 卷积神经网络(Convolutional Neural Network, CNN)这时就大放异彩了。 这篇文章,帮你分析了卷积神经网络中,不同层次(Layer)的作用。 我们尽量避免用公式,而是用图像、动图和平实简洁的语言描述来为你解释概念。 我们使用的深度学习框架,是苹果的TuriCreate。你会调用一个非常深层次的卷积神经网络,帮我们迁(tou)移(ji)学(qu)习(qiao),用很少的训练数据,获得非常高的分类准确率。 有的读者自己尝试,测试集准确率居然达到100%(视运行环境不同,有差异),大呼过瘾。可同时又觉得不可思议。 为了解释这种“奇迹”,同时解答读者“如何在私有数据集上以图搜图”的疑问,我写了《 如何用Python和深度神经网络寻找近似图片? 》。 希望读过此文,你对迁移学习(Transfer Learning)有了更深入的认识。 如果这两篇文章学完,你对卷积神经网络的基础知识依然不是很清晰,也没关系,因为我的研究生们遭遇了同样的问题。 为此,我专门录制了一段 讲解答疑视频 。 这段视频 里,我主要谈及了以下几个方面: 深度神经网络的基本结构; 神经元的计算功能实现; 如何对深度神经网络做训练; 如何选择最优的模型(超参数调整); 卷积神经网络基本原理; 迁移学习的实现; 疑问解答。 希望看过之后,你再从论文里读到计算机视觉的神经网络模型,就可以游刃有余了。 另一批作者又来发问了: 老师,我用Windows,死活就是装不上TuriCreate,可怎么办? 我替他们着急的时候,恰好找到了一个宝贝。于是写了《 如何免费云端运行Python深度学习框架? 》。 免费使用GPU,用极为简易的操作,就可以在Google云端Linux主机上部署和执行苹果深度学习框架…… 听着是不是像做梦啊? 感谢Google这家为人类知识积累做出贡献的企业。 数据获取 学完深度学习之后,你会发现自己变成了“数据饥渴”症患者。 因为如果没有大量的数据,就无法支撑你的深度神经网络。 如何获取数据呢? 我们先要区分数据的来源。 数据来源很多。但是对于研究者来说,网络数据和文献数据比较常用。 目前主流(合法)的网络数据方法,主要分为3类: 开放数据集下载; API读取; 爬虫爬取(Crawling)。 《 如何用Python读取开放数据? 》一文中,我为你讲解了如何把开放数据集下载并且在Python中使用。 这篇文章介绍了常见的CSV/Excel, JSON和XML等开放数据文件格式的读取、初步处理和可视化方法与流程。 如果没有开放数据集整理好供你下载,网站只提供API接口,你该怎么办呢? 《 如何用R和API免费获取Web数据? 》一文,我们使用R读取维基百科API,获得指定条目的访问数量记录,并且做了可视化。 如果没有人为你整理好数据,网站也没有开放API给你,那你就得“直接上大锤”了。 《 如何用Python爬数据?(一)网页抓取 》一文为你介绍了非常人性化、易用的网页抓取软件包 requests_html ,你可以尝试抓取网页内的指定类型链接。 文献数据可能存储为各种格式,但其中pdf格式较为常见。 应诸多读者的要求,我写了《 如何用Python批量提取PDF文本内容? 》。 你可以批量提取pdf文档的文本内容,并且进行各种分析。 文中的分析相对简单,我们只是统计了文档字符数量。 但是发挥想象力,你可能会做出非常有价值的分析结果。 希望这些文章可以帮助你高效获得优质数据,支撑起你自己的机器学习模型。 小结 本文把《 玉树芝兰 》专栏目前的数据科学类文章进行了梳理和归类,建立了链接,以帮你看清它们之间的逻辑依赖关系。 专栏中,数据科学类文章主要围绕以下方面展开: 环境搭建; 基础入门; 自然语言处理; 机器学习; 深度学习; 数据获取; 答疑。 你可能早已发现,我们还有很多话题,没有来得及涉及。 别着急。 本专栏会持续添加新的内容。这篇导读也会不定期更新。欢迎关注。 讨论 本专栏数据科学类的文章里,你更喜欢哪个方面的主题?除此以外,你还希望读到哪些内容?欢迎留言,把你的经验和思考分享给大家,我们一起交流讨论。 如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。 如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。
14891 次阅读|6 个评论
高级科普:如何把科字真正或完全加到这些重要学科上去?
geneculture 2018-4-29 19:27
会当临绝顶: \0 www.webmeeting.com.cn:8800/pub_recording_view_ecard.php?id=79
个人分类: 融智学前期探索|2444 次阅读|0 个评论
语言信息与智能教育:时代呼唤知识大生产方式
geneculture 2018-4-12 20:23
语言信息与智能教育:时代呼唤知识大生产方式
个人分类: 学术研究|1493 次阅读|1 个评论
孪生图灵机及其蕴含的科学原理(举例说明其应用)
geneculture 2018-4-12 11:19
报告题目:孪生图灵机及其蕴含的科学原理(举例说明其作用、价值和意义) 报告嘉宾:邹晓辉 报告时间:2018-4-13上午10点30分至11点30分 报告地点:成都理工大学 …… 智能科学实验室 内容提要: 1.引言 背景:图灵机、密码学和图灵测试。由中文房间论题引出的强与弱的AI两极对立的理论观点而进一步再上一个台阶导出形式化理论的两大类方略。 目的:针对信息、智能和数据等方面由技术向科学的跃迁过程遭遇两大类形式化方略的挑战,提出双重形式化方略进而展示其坚实的科学基础理论和可检验的实际场景,即:人机双脑结合的综合实践场景。 2.正文 直接形式化方略的内部歧义 (逻辑、数学、编程) 间接形式化方略的外部歧义 (算术、语文、双语) 3.结语 双重形式化方略的独特优势 (序位、联动、转换) 孪生图灵机的理论和实际以及实践意义 4.附录一典型用例 新一轮人机大赛 新一代精品课程 知识大生产方式 5.附录二信息安全 公法的信息安全(主权和人权里的隐私权的保护) 私法的信息安全(知识产权和各类组织的自主权) 附图:
个人分类: 学术研究|2345 次阅读|1 个评论
用知识大生产方式做新一代国家精品课程
geneculture 2018-3-21 08:21
1. 农业时代 物质小生产 的问题与工业时代 物质大生产 的创新之间的社会历史发展或变迁,现在回顾起来,仍然 记忆犹新 。前两个时代的 知识小生产 的问题与信息、智能和大数据时代的 知识大生产 的创新(酝酿过渡乃至阵痛期)之间的社会现实发展或变迁,虽然已经走过了大半个世纪,但是,对于人们而言,至今仍然呈现出 扑朔迷离 的情状。 究竟是 什么原因让这一次的社会大跃迁如此困难 呢?对此,经过深刻的理性反思和经验预测, 笔者发现了“牵一发而动全身”的问题与症结之所在 (见以下2.2. 核心科学问题:在 知识小生产方式 方法上的问题)。发现问题、分析问题和解决问题之间有着内在的逻辑联系与历史必然。在合适的地点、时间和人群就会自然而然地对创新的幼芽一路呵护地前行直到有一天,它的爆发点,就会 水到渠成,瓜熟蒂落 。这个契机就是 目标管理与自我管理 可协同兑现之时。笔者 教管学用结合的社会化系统工程 遵循的目标导向,它们的兑现方式,见以下2.1. 项目的科学目标: 知识大生产方式 方法上的创新)。 2.1. 项目的科学目标:知识大生产方式方法上的创新 用基于广义文本的文化基因系统工程,把 言识软硬结合的形式化系统工程 与 教管学用结合的社会化系统工程 ,在蕴涵着 语言、知识、信息、智能、数据等关键词 共同指向的科学发展道路上,从逻辑的定性分析和数学的定量分析,进而再发展成为 定性、定向、结构、程序、定位、定量的综合系统分析 ,尤其是 基于三类信息处理的方法和原理的双字棋盘 ( 既是开发环境,又是用户平台 )在各级各类学校对于广大师生的普适性,这就把 知识大生产方式 方法逼到了前台(之前它是隐在后台的)。 这样的创新及其蕴涵的威力之所以巨大无比 ,不在于其复杂性而在于其简单性( 实际上是简单与复杂、标准与非标、抽象与具体的高度统一 )。 2.1.1 . 融智观念 框架:“七个字”概括的 基本范畴框架 即知识管理定性分类的 顶层设计 2.1.2 . 融智方法 架构:“五层级”凝聚的 基本学科架构 即知行合一刚柔相济的 方法体系 2.2. 核心科学问题:在知识小生产方式方法上的问题 科学 学科的形成与发展,终于到了这么一个节点 ,不仅语言、知识、信息、智能、数据等长期在某某学与某某哲学之间 两极摇摆 ,就是很难在科学的严格限制条件下成立,而且,更有甚者的是, 就连逻辑与数学这样以严谨而著称的学科,也再次复现在某某学与某某哲学之间两极摇摆的情形 。近十年左右,在相关这些学科的国际国内学术交流中,特别是教育学和教育哲学的问题也加入了该基础研究和前沿研究的探讨视野, 这就进一步加速了这类问题收敛的进程 。特别是高等教育学和马克思主义(思想政治教育学)理论以及软件工程这样的大跨度的学科建制的过程,联系到前述一系列学科的 内在建制 问题, 促使笔者认识到了一个超级复杂问题,完全可以采用最合适同时也是最简单的优选方案来一揽子地统一化解 。这就是本项目的方案 为什么要从小生产这个根上的问题切入来优选知行统一的解决方案的缘由 。 2.3. 围绕解决核心科学问题拟开展的主要研究内容及建议研究方案(科学目标应该明确集中, 所凝练的核心科学问题具有基础性和前沿性,学科交叉性强 ) 2.3.1 . 主要研究内容 既然 诸多关键学科的内在建制 都遭遇了相似乃至本质上相同的一连串牵一发而动全身的问题,即 知识小生产的方式 方法已经再也不能适应如今 学科交叉日益复杂的局面 了,那么,本项目干脆就直接从 知识大生产的方式 方法颠覆既有的延续了两千多年的 知识小生产格局 。 2.3.1 .1. 研究对象 2.3.1 .2. 学科属性 2.3.1 .3. 概念框架 2.3.1 .4. 方法架构 2.3.2 . 建议研究方案 有了以上的问题分析和内容划分,一个明确的方案也就顺理成章地凸显了出来,即:采用知识大生产与知识小生产 双重方式方法并行的新格局 。其具体步骤是: 步骤一是 从人脑的特点入手,采用自然语言理解的方式,来帮助电脑做自然语言处理 ,其特征在于 教管学用结合的社会化系统工程 ; 步骤二是 从电脑的特点切入,采用专家知识表达的方式,来帮助人脑做专家知识获取 ,其特征在于 言识软硬结合的形式化系统工程 ; 步骤三是 从双脑的互补导入,采用广义双语翻译的方式,来帮助人机做言和语的识别 ,其特征在于 广义文本基因的智能化系统工程 。 附录: 今晨灵感(对外稿件): 重大项目的名称:用 知识大生产方式 做新一代国家精品课程 是 信息科学和技术以及智能教育乃至知识管理的巨大发展 ,有巨大的社会与经济双重效益。 昨晚构想(内部草稿): 题目:采用 人机双脑协同智慧能力形成的科学机理 来启动北京大学新一代精品课程 属于 基础研究的科学机理 即三大类信息处理的方法和原理 具有普及推广意义的北京大学新一代精品课程即 可创造巨大社会经济价值 的实际应用 理论的前瞻性和实际的普适性 共同 奠定了本重大项目的战略意义
个人分类: 学术研究|4 次阅读|1 个评论
跨学科跨领域跨行业学术交流 (智能科学国际会议预备会) 目录
geneculture 2018-2-9 17:12
跨学科跨领域跨行业学术交流 (智能科学国际会议预备会) 第一期大讨论班的焦点是人和机两类脑的思维科学问题。11月(已完成) 第二期大讨论班的焦点是人和机两类脑的数据科学问题。12月(已完成) 英国彭永红教授到场讲了大数据处理技术与数据科学的问题。 同期引出了三信、三智、三数的一系列错综复杂的问题。 第三期大讨论班的焦点是人和机两类脑的记忆机理问题。1月(已完成) 同期探讨了人工智能之魂的问题及其应用及智权的问题。 第四期大讨论班的焦点是人和机两类脑的智能科学问题。2月(过年团拜) 同期林建祥教授通过远程技术来组织一系列的专题报告。(进行中,昨天完成第一讲) 由于正是寒假过年期间,因此,特意考虑了后续的安排: 第五期大讨论班的焦点是人脑的心智与脑保健科学问题。3月(计划中) 普林斯顿大学教授到场。 同期介绍了终身教育信息化尤其是其中职业教育的问题。 第六期大讨论班的焦点是人和机两类脑的基础理论问题。4月(计划中) 该期除了成都理工大学的多学科探讨之外争取在北大也有进展即相关院系的教授也参与。 同期召开 第三届智能科学国际会议内部会 第七期大讨论班的焦点是人和机两类脑的信息科学问题。5月(计划中) 同期伯克利分校脑与神经生物学教授会有一个主题报告。 第八期大讨论班的焦点是人和机两类脑的智能科学问题。6月 第九期大讨论班的焦点是人和机两类脑的数据科学问题。7月 第十期大讨论班的焦点是人和机两类脑的教育科学问题。8月 第11期大讨论班的焦点是人和机两类脑的语言科学问题。9月 第12期大讨论班的焦点是人和机两类脑的交叉科学问题。10月 接下来召开 第三届智能科学国际会议。11月
个人分类: 学术研究|2297 次阅读|1 个评论
Python回归分析五部曲(一)—简单线性回归
jackyguitar 2017-12-30 23:02
回归最初是遗传学中的一个名词,是由英国生物学家兼统计学家高尔顿首先提出来的,他在研究人类身高的时候发现:高个子回归人类的平均身高,而矮个子则从另一方向回归人类的平均身高; 回归整体逻辑 回归分析(Regression Analysis) 研究自变量与因变量之间关系形式的分析方法,它主要是通过建立因变量y与影响它的自变量 x_i(i=1,2,3… …)之间的回归模型,来预测因变量y的发展趋向。 回归分析的分类 线性回归分析 简单线性回归 多重线性回归 非线性回归分析 逻辑回归 神经网络 回归分析的步骤 根据预测目标,确定自变量和因变量 绘制散点图,确定回归模型类型 估计模型参数,建立回归模型 对回归模型进行检验 利用回归模型进行预测 简单线性回归模型 1.基础逻辑 y = a + b x + e 该模型也称作一元一次回归方程,模型中: y:因变量 x:自变量 a:常数项(回归直线在y轴上的截距) b:回归系数(回归直线的斜率) e:随机误差(随机因素对因变量所产生的影响) e的平方和也称为残差,残差是判断线性回归拟合好坏的重要指标之一 从简单线性回归模型可以知道,简单线性回归是研究一个因变量与一个自变量间线性关系的方法 2.案例实操 下面我们来看一个案例,某金融公司在多次进行活动推广后记录了活动推广费用及金融产品销售额数据,如下表所示 因为活动推广有明显效果,现在的需求是投入60万的推广费,能得到多少的销售额呢?这时我们就可以使用简单线性回归模型去解决这个问题,下面,我们用这个案例来学习,如何进行简单线性回归分析; (1)第一步 确定变量 根据预测目标,确定自变量和因变量 问题:投入60万的推广费,能够带来多少的销售额? 确定因变量和自变量很简单,谁是已知,谁就是自变量,谁是未知,就就是因变量,因此,推广费是自变量,销售额是因变量; import numpy from pandas import read_csv from matplotlib import pyplot as plt from sklearn.linear_model import LinearRegression data = read_csv( 'file:///Users/apple/Desktop/jacky_1.csv' , encoding = 'GBK' ) (2)第二步 确定类型 绘制散点图,确定回归模型类型 根据前面的数据,画出自变量与因变量的散点图,看看是否可以建立回归方程,在简单线性回归分析中,我们只需要确定自变量与因变量的相关度为强相关性,即可确定可以建立简单线性回归方程,根据jacky前面的文章分享《Python相关分析》,我们很容易就求解出推广费与销售额之间的相关系数是0.94,也就是具有强相关性,从散点图中也可以看出,二者是有明显的线性相关的,也就是推广费越大,销售额也就越大 #画出散点图,求x和y的相关系数 plt.scatter(data.活动推广费 , data.销售额) data.corr() (3)第三步 建立模型 估计模型参数,建立回归模型 要建立回归模型,就要先估计出回归模型的参数A和B,那么如何得到最佳的A和B,使得尽可能多的数据点落在或者更加靠近这条拟合出来的直线上呢? 统计学家研究出一个方法,就是最小二乘法,最小二乘法又称最小平方法,通过最小化误差的平方和寻找数据的最佳直线,这个误差就是实际观测点和估计点间的距离; 最小二乘法名字的缘由有二个:一是要将误差最小化,二是使误差最小化的方法是使误差的平方和最小化;在古汉语中,平方称为二乘,用平方的原因就是要规避负数对计算的影响,所以最小二乘法在回归模型上的应用就是要使得实际观测点和估计点的平方和达到最小,也就是上面所说的使得尽可能多的数据点落在或者说更加靠近这条拟合出来的直线上; 我们只要了解最小二乘法的原理即可,具体计算的过程就交给Python处理。 #估计模型参数,建立回归模型 ''' (1) 首先导入简单线性回归的求解类LinearRegression (2) 然后使用该类进行建模,得到lrModel的模型变量 ''' lrModel = LinearRegression() #(3) 接着,我们把自变量和因变量选择出来 x = data ] y = data ] #模型训练 ''' 调用模型的fit方法,对模型进行训练 这个训练过程就是参数求解的过程 并对模型进行拟合 ''' lrModel.fit(x , y) (4)第四步 模型检验 对回归模型进行检验 回归方程的精度就是用来表示实际观测点和回归方程的拟合程度的指标,使用判定系数来度量。 解释:判定系数等于相关系数R的平方用于表示拟合得到的模型能解释因变量变化的百分比,R平方越接近于1,表示回归模型拟合效果越好 如果拟合出来的回归模型精度符合我们的要求,那么我们可以使用拟合出来的回归模型,根据已有的自变量数据来预测需要的因变量对应的结果 #对回归模型进行检验 lrModel.score(x , y) 执行代码可以看到,模型的评分为0.887,是非常不错的一个评分,我们就可以使用这个模型进行未知数据的预测了 (5)第五步 模型预测 调用模型的predict方法,这个就是使用sklearn进行简单线性回归的求解过程; lrModel.predict( , ]) 如果需要获取到拟合出来的参数各是多少,可以使用模型的intercept属性查看参数a(截距),使用coef属性查看参数b #查看截距 alpha = lrModel.intercept_ #查看参数 beta = lrModel.coef_ alpha + beta*numpy.array( ) 3.完整代码 import numpy from pandas import read_csv from matplotlib import pyplot as plt from sklearn.linear_model import LinearRegression data = read_csv( 'file:///Users/apple/Desktop/jacky_1.csv' , encoding = 'GBK' ) #画出散点图,求x和y的相关系数 plt.scatter(data.活动推广费 , data.销售额) data.corr() #估计模型参数,建立回归模型 ''' (1) 首先导入简单线性回归的求解类 LinearRegression (2) 然后使用该类进行建模, 得到lrModel的模型变量 ''' lrModel = LinearRegression() #(3) 接着,我们把自变量和因变量选择出来 x = data ] y = data ] #模型训练 ''' 调用模型的fit方法,对模型进行训练 这个训练过程就是参数求解的过程 并对模型进行拟合 ''' lrModel.fit(x , y) #对回归模型进行检验 lrModel.score(x , y) #利用回归模型进行预测 lrModel.predict( , ]) #查看截距 alpha = lrModel.intercept_ #查看参数 beta = lrModel.coef_ alpha + beta*numpy.array( ) 总结sklearn建模流程 建立模型 lrModel = sklearn.linear_model.LinearRegression() 训练模型 lrModel.fit(x,y) 模型评估 lrModel.score(x,y) 模型预测 lrModel.predict(x)
7240 次阅读|0 个评论
跨学科、跨领域和跨行业第二次大讨论班(2)
geneculture 2017-12-4 16:01
第三届智能科学国际会议配套的跨学科、跨领域和跨行业第二次大讨论班 主题:成长中的数据科学与三类信息协同处理之间的关系 学术对话主讲人:彭永红(IEEE计算智能学会大数据专委会主席,IEEE Transaction on Big Data 副主编,英国桑德兰大学数据科学讲席教授)和邹晓辉(IS4SI-CC教育信息化专委会主任助理,人工智能专委会副主任,中美塞尔研究中心主任) 时间:2017-12-21下午2点~5点(邹晓辉教授主持),晚上6:30~9:30点(马尽文教授主持)这两段时间的线上JionNet远程互联互通均由林建祥教授主持(北京大学教师教学发展中心提供JionNet远程技术支持) 地点:北京大学数学科学学院理科一号楼1365教室 到会代表涉及的相关学科领域: 数据科学、信息科学、智能科学、思维科学、脑科学、数学、计算机科学、软件工程、计算语言学、认知心理学、教育技术学等诸多学科领域。 读书人摄制组将全程录音录像。
个人分类: 学术研究|2716 次阅读|2 个评论
文科生如何高效学数据科学?
热度 2 wshuyi 2017-11-26 11:42
看似无边无际、高深难懂而又时刻更新的数据科学知识,该怎样学才更高效呢?希望读过本文后,你能获得一些帮助。 疑惑 周五下午,我给自己的研究生开组会。主题是工作坊教学,尝试搭建 自己的第一个 深度神经网络。 参考资料是我的文章《 如何用Python和深度神经网络发现即将流失的客户? 》。我带着学生们从下载最新版Anaconda安装包开始,直到完成第一个神经网络分类器。 过程涉及编程虚拟环境问题,他们参考了《 如何在Jupyter Notebook中使用Python虚拟环境? 》一文,比较顺利地掌握了如何在虚拟环境里安装软件包和执行命令。 我要求他们,一旦遇到问题就立即提出。我帮助解决的时候,所有人围过来一起看解决方案,以提升效率。 我给学生们介绍了神经网络的层次结构,并且用Tensorboard可视化展示。他们对神经网络和传统的机器学习算法(师兄师姐答辩的时候,他们听过,有印象)的区别不是很了解,我就带着他们一起玩儿了一把深度学习实验场。 看着原本傻乎乎的直线绕成了曲线,然后从开放到闭合,把平面上的点根据内外区分,他们都很兴奋。还录了视频发到了微信朋友圈。 欣喜之余,一个学生不无担忧地问我: 老师,我现在能够把样例跑出来了,但是里面有很多内容现在还不懂。这么多东西该怎么学呢? 我觉得这是个非常好的问题。 对于非IT类本科毕业生,尤其是“文科生”(定义见 这里 ),读研阶段若要用到数据科学方法,确实有很多知识和技能需要补充。他们中不少人因此很 焦虑 。 但是焦虑是没有用的,不会给你一丝一毫完善和进步。学会拆解和处理问题,才是你不断进步的保证。 这篇文章,我来跟你谈一谈,看似无边无际、高深难懂而又时刻更新的数据科学知识,该怎样学才更高效。 许多读者曾经给我留言,询问过类似的问题。因此我把给自己学生的一些建议分享给你,希望对你也有一些帮助。 目标 你觉得自己在数据科学的知识海洋里面迷失,是因为套用的学习模式不对。 从上小学开始,你就习惯了把要学习的内容当成学科知识树,然后系统地一步步学完。前面如果学不好,必然会影响后面内容的理解消化。 知识树的学习,也必须全覆盖。否则考试的时候,一旦考察你没有掌握的内容,就会扣分。 学习的进程,有教学大纲、教材和老师来负责一步步 喂给你 ,并且督促你不断预习、学习和复习。 现在,你突然独自面对一个新的学科领域。没了教学大纲和老师的方向与进度指引,教材又如此繁多,根本不知道该看哪一本,茫然无措。 其实如果数据科学的知识是个凝固的、静态的集合,你又有无限长的学习时间,用原先的方法来学习,也挺好。 可现实是,你的时间是有限的,数据科学的知识却是日新月异。今年的热点,兴许到了明年就会退潮。深度学习专家Andrej Karpathy评论不同的机器学习框架时说: Matlab is so 2012. Caffe is so 2013. Theano is so 2014. Torch is so 2015. TensorFlow is so 2016. :D 怎么办呢? 你需要以目标导向来学习。 例如说,你手头要写的论文里,需要做数据分类。那你就研究分类模型。 分类模型属于监督学习。传统机器学习里,KNN, 逻辑回归,决策树等都是经典的分类模型;如果你的数据量很大,希望用更为复杂而精准的模型,那么可以尝试深度神经网络。 如果你要需要对图片进行识别处理,便需要认真学习卷积神经网络(Convolutional Neural Network),以便高效处理二维图形数据。 如果你要做的研究,是给时间序列数据(例如金融资产价格变动)找到合适的模型。那么你就得认真了解递归神经网络(recurrent neural network),尤其是长短期记忆(Long short-term memory, LSTM)模型。这样用人工智能玩儿股市水晶球才能游刃有余。 但如果你目前还没有明确的研究题目,怎么办? 不要紧。可以在学习中,以 案例 为单位,不断积累能力。 实践领域需求旺盛,数据科学的内容又过于庞杂,近年来MOOC上数据科学类课程的发展,越来越有案例化趋势。 一向以技术培训类见长的平台,如Udacity, Udemy等自不必说。就连从高校生长出来的Coursera,也大量在习题中加入实际案例场景。Andrew Ng最新的Deep Neural Network课程就是很好的例证。 我之前推荐过的华盛顿大学机器学习课程,更是非常激进地在第一门课中,通过案例完整展示后面若干门课的主要内容。 注意,学第一门课时,学员们对于相关的技术(甚至是术语)还一无所知呢! 然而你把代码跑完,出现了结果的时候,真的会因为不了解和掌握细节就一无所获吗? 当然不是。 退一万步说,至少你 见识 了可以用这样的方法成功解决该场景的问题。这就叫 认知 。 告诉你一个小窍门:在生活、工作和学习中,你跟别人比拼的,基本上都是认知。 你获得了认知后,可以快速了解整个领域的概况。知道哪些知识对自己目前的需求更加重要,学习的优先级更高。 比案例学习更高效的“找目标”方式,是参加项目,动手实践。 动手实践,不断迭代的原理,在《 如何高效学Python? 》和《 创新怎么教? 》文中我都有详细分析,欢迎查阅。 这里我给你讲一个真实的例子。 我的一个三年级研究生,本科学的是工商管理。刚入学的时候按照我的要求,学习了密歇根大学的Python课程,并且拿到了系列证书。但是很长的一段时间里,他根本就不知道该怎么实际应用这些知识,论文自然也写不出来。 一个偶然的机会,我带着他参加了另一个老师的研究项目,负责技术环节,做文本挖掘。因为有了实际的应用背景和严格的时间限定,他学得很用心,干得非常起劲儿。之前学习的技能在此时真正被 激活 了。 等到项目圆满结束,他主动跑来找我,跟我探讨能否把这些技术方法应用于本学科的研究,写篇小论文出来。 于是我俩一起确定了题目,设计了实验。然后我把数据采集和分析环节交给了他,他也很完满地做出了结果。 有了这些经验,他意识到了自己毕业论文数据分析环节的缺失,于是又顺手改进了毕业论文的分析深度。 恰好是周五工作坊当天,我们收到了期刊的正式录用通知。 看得出来,他很激动,也很开心。 深度 确定目标后,你就明白了该学什么,不该学什么。 但是下一个问题就来了,该学的内容,要学到多深、多细呢? 在《 贷还是不贷:如何用Python和机器学习帮你决策? 》一文里,我们尝试了决策树模型。 所谓应用决策树模型,实际上就是调用了一个包。 from sklearn import tree clf = tree.DecisionTreeClassifier() clf = clf.fit(X_train_trans, y_train) 只用了三行语句,我们就完成了决策树的训练功能。 这里我们用的是默认参数。如果你需要了解可以进行哪些参数调整设置,在函数的括号里使用 shift+tab 按键组合,就能看到详细的参数列表,并且知道了默认的参数取值是多少。 如果你需要更详细的说明,可以直接查文档。在搜索引擎里搜索 sklearn tree DecisionTreeClassifier 这几个关键词,你会看到以下的结果。 点击其中的第一项,就可以看到最新版本scikit-learn相关功能的官方文档。 当你明白了每个函数工作的方法、参数可以调整的类型和取值范围时,你是否可以宣称自己了解这个功能了? 你好像不太有信心。 因为你觉得这只是“知其然”,而没有做到“知其所以然”。 但是,你真的需要进一步了解这个函数/功能是如何实现的吗? 注意图中函数定义部分,有一个指向 source 的链接。 点开它,你就会导航到这个函数的源代码,托管在github上。 如果你是个专业人士,希望 研究 、 评估 或者 修改 该函数,认真阅读源代码就不仅必要,而且必须。 但是作为文科生的你,如果仅是为了 应用 ,那完全可以不必深入到这样的细节。将别人写好的,广受好评的软件包当成黑箱, 正确地使用 就好了。 这就如同你不需要了解电路原理,就可以看电视;不需要了解川菜的技艺和传承,就可以吃麻婆豆腐。只要你会用遥控器,会使筷子,就能享受这些好处。 越来越多的优秀软件包被创造出来,数据科学的门槛也因此变得越来越低。甚至低到被声讨的地步。例如这篇帖子,就大声疾呼“进入门槛太低正在毁掉深度学习的名声!” 但是,不要高兴得太早。觉得自己终于遇到一门可以投机取巧的学问了。 你的基础必须打牢。 数据科学应用的基础,主要是编程、数学和英语。 数学(包括基础的微积分和线性代数)和英语许多本科专业都会开设。文科生主要需要补充的,是编程知识。 只有明白基础的语法,你才能和计算机之间无障碍交流。 一门简单到令人发指的编程语言,可以节省你大量的学习时间,直接上手做应用。 程序员圈子里,流行一句话,叫做: 人生苦短,我用Python。 Python有多简单?我的课上,一个会计学本科生,为了拿下证书去学Python基础语法,一门课在24小时内,便搞定了。这还包括做习题、项目和系统判分时间。 怎么高效入门和掌握Python呢?欢迎读读《 如何高效学Python? 》,希望对你快速上手能有帮助。 协作 了解了该学什么,学多深入之后,我们来讲讲提升学习效率的终极 秘密武器 。 这个武器,就是 协作 的力量。 协作的好处,似乎本来就是人人都知道的。 但是,在实践中,太多的人根本就没有这样做。 因为,我们都过于长期地被训练“独立”完成问题了。 例如考试的时候跟别人交流,那叫作弊。 但是,你即便再习惯一个人完成某些“创举”,也不得不逐渐面对一个真实而残酷的世界——一个人的单打独斗很难带来大成就,你必须学会协作。 这就像《权力的游戏》里史塔克家族的名言: When the cold winds blow the lone wolf dies and the pack survives. (凛冬将至,独狼死,群狼活。) 文科生面对屏幕编程,总会有一种孤独无助的感觉,似乎自己被这个世界抛弃了。 这种错误的心态会让你变得焦虑、恐慌,而且很容易放弃。 正确的概念却能够拯救你——你正在协作。而且你需要主动地、更好地协作。 你面前这台电脑或者移动终端,就是无数人的 协作 成果。 你用的操作系统,也是无数人的 协作 成果。 你用的编程语言,还是无数人的 协作 成果。 你调用的每一个软件包,依然是无数人的 协作 成果。 并非只有你所在的小团队沟通和共事,才叫做协作。协作其实早已发生在地球级别的尺度上。 当你从Github上下载使用了某个开源软件包的时候,你就与软件包的作者建立了协作关系。想想看,这些人可能受雇于大型IT企业,月薪6位数(美元),能跟他们协作不是很难得的机会吗? 当你在论坛上抛出技术问题、并且获得解答的时候,你就与其他的使用者建立了协作关系。这些人有可能是资深的IT技术专家,做咨询的收费是按照秒来算的。 这个社会,就是因为分工协作,才变得更加高效的。 数据科学也是一样。Google, 微软等巨头为什么开源自己的深度学习框架,给全世界免费使用?正是因为他们明白协作的终极含义,知道这种看似吃亏的傻事儿,带来的回报无法估量。 这种全世界范围内的协作,使得知识产生的速度加快,用户的需求被刻画得更清晰透彻,也使得技术应用的范围和深度空前提高。 如果你在这个协作系统里,就会跟系统一起日新月异地发展。如果你不幸自外于这个系统,就只能落寞地看着别人一飞冲天了。 这样的时代,你该怎么更好地跟别人协作呢? 首先,你要学会寻找协作的伙伴。这就需要你掌握搜索引擎、问答平台和社交媒体。不断更新自己的认知,找到更适合解决问题的工具,向更可能回答你问题的人来提问。经常到 Github 和Stackoverflow上逛一逛,收获可能大到令你吃惊。 其次,你要掌握清晰的逻辑和表达方式。不管是搜寻答案,还是提出问题,逻辑能力可以帮助你少走弯路,表达水平决定了你跟他人协作的有效性和深度。具体的阐释,请参考《 Python编程遇问题,文科生怎么办? 》。 第三,不要只做个接受帮助者。要尝试主动帮助别人解决问题,把自己的代码开源在Github上,写文章分享自己的知识和见解。这不仅可以帮你在社交资本账户中储蓄(当你需要帮助的时候,相当于在提现),也可以通过反馈增长自己的认知。群体的力量可以通过“赞同”、评论等方式矫正你的错误概念,推动你不断进步。 可以带来协作的链接,就在那里。 你不知道它们的存在,它们对你来说就是虚幻。 你了解它们、掌握它们、使用它们,它们给你带来的巨大益处,就是实打实的。 小结 我们谈了 目标 ,可以帮助你分清楚哪些需要学,哪些不需要学。你现在知道了找到目标的有效方法——项目实践或者案例学习。 我们聊了 深度 ,你了解到大部分的功能实现只需要了解黑箱接口就可以,不需要深入到内部的细节。然而对于基础知识和技能,务必夯实,才能走得更远。 我们强调了 协作 。充分使用别人优质的工作成果,主动分享自己的认知,跟更多优秀的人建立链接。摆脱单兵作战的窘境,把自己变成优质协作系统中的关键节点。 愿你在学习数据科学过程中,获得认知的增长,享受知识和技能更新带来的愉悦。放下焦虑感,体验心流的美好感受。 讨论 到今天为止,你掌握了哪些数据科学知识和技能?你为此花了多少时间?这个过程痛苦吗?有没有什么经验教训可以供大家借鉴?欢迎留言,把你的感悟分享给大家,我们一起交流讨论。 如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。 如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。
12772 次阅读|3 个评论
高校科研数据管理理论与实践
terahertz 2017-11-17 14:32
(发表于《图书馆报》2017年11月17日A09版) 本报讯 近日,江苏大学图书馆副研究馆员,江苏大学科技信息研究所所长刘桂锋著《高校科研数据管理理论与实践》一书由江苏大学出版社出版。 该 书基 于大数据、数据管理、数据生命周期等基本理论,综合运用文献调研、网络调查、现场考察、案例研究、内容分析、比较研究等方法,详细阐述了科研数据管理研究领域的发展脉络、体系架构、最新理论成果与优秀科研数据管理实例,主要分为科研数据管理政策、科研数据管理服务与科研数据管理教育三个方面。 该书具备三个特点。一是具备一定的理论前瞻性。科研数据管理是一个发展快速的领域,新思想、新理论、新方法、新工具不断涌现,数据管理的内涵与外延越来越丰富。二是具备一定的实践操作性。本书选取的科研数据管理服务案例均来自国内外高校图书馆的实践一线,确保可操作、可推广、可复制。三是具备一定的学术价值性。本书力图构建科研数据管理的理论大厦,回答了为什么开展科研数据管理服务,科研数据管理服务的内容有哪些,怎样更好的开展科研数据管理服务等问题。 该书力求精炼,具备一定的理论性、实践性与学术性,来自图书馆又高于图书馆。 链接: http://124.207.48.191/epaper/tsgb/2017/11/17/A09/story/54448.shtml
个人分类: 教材专著|2420 次阅读|0 个评论
国外科研数据管理研究综述
terahertz 2017-10-13 08:41
(本文发表于《情报理论与实践》2017年第10期P130-134) 摘要 : 深入探析国外科研数据管理研究热点,能够为我国科研数据管理提供更为清晰的发展规划和更具针对性的建议。 通过网络调研和文献调研对国外科研数据管理的文献进行概念辨析和热点探讨。 国外科研数据管理研究热点主要集中在数据生命周期理论和科研数据管理服务。文章从科研数据管理政策、数据生命周期理论和科研数据管理服务体系构建3个角度提出我国开展科研数据管理活动的对策建议。 关键词 : 数据科学;科研数据;数据管理;开放数据
个人分类: 发表论文|2889 次阅读|0 个评论
数据科学支撑的知识服务创新对策思考
terahertz 2017-9-14 10:32
2017年9月 13日 下午3点 , 南京理工大学王曰芬教授 在图书馆一楼报告厅做了题为 “ 数据科学支撑的知识服务创新对策思考 ”的报告。 报告内容主要分为大数据时代知识服务面临的挑战、数据科学的兴起与发展、数据科学与知识服务、数据科学支撑的知识服务创新四个部分。
个人分类: 图书馆|2472 次阅读|0 个评论
养廉不仅需要大数据而且还需要大智慧
geneculture 2017-9-4 00:52
个人分类: 管理学|270 次阅读|0 个评论
社会科学中的定性数据共享实践研究
timy 2017-6-27 10:11
时间 :2017.6.29(周四)15:00~17:00 地点 :南京理工大学经济管理学院106报告厅 主讲人 :何大庆(匹兹堡大学教授) 内容简介: 社会科学家们长期以来共享数据,然而大部分系统和全面的研究是基于定性数据来进行的。关于社会科学家如何共享定性数据,人们了解甚少。本报告介绍了我们针对社会科学中的定性数据共享实践所做的三个案例研究。我们的研究建立在知识基础设施工程(KI)和远程科学协作理论(TORSC)等两个已有的概念框架,探究了三个研究目标:社会科学中的定性数据共享实践的现状,研究参与者的定性数据共享行为中的决定性因素,和世界上最大的社会科学数据基础设施工程中对社会科学数据管理的具体实践。我们的研究结果证实:第一,处于职业生涯早期的社会科学家的数据共享意识较低且不活跃;第二,社会科学家共享研究成果的偏好与方法论相关,而与实验原始数据无关;第三,可感知的技术支持和奖励是定性数据共享行为的有力预测因素。最后,我们总结了社会科学中数据共享的最佳实践,并为如何在社会科学和其他领域打造一个可持续的数据共享环境提出了建议。 讲人简介 : 何大庆博士现为匹兹堡大学计算与信息学院(iSchool)教授,并担任iSchool图书馆与信息博士计划委员会主任。何教授在苏格兰爱丁堡大学获得人工智能专业的博士学位。在2004年加盟匹兹堡大学之前,何教授曾在苏格兰罗伯特戈登大学、美国马里兰大学等地从事研究工作。何教授的研究工作主要集中在:信息检索(单语言和多语言)、社交网络上的信息获取、自适应Web系统与用户建模、交互检索界面设计、Web日志挖掘与分析和研究数据管理。 何博士是十余个研究项目的主持人或共同主持人,研究项目包括:美国国家科学基金会项目、美国国防部高级研究计划署资助项目、匹兹堡大学以及其他机构资助的项目。何教授在国际公认的期刊与会议上发表论文120余篇,期刊与会议包括Journal of Association for Information Science and Technology,Information Processing and Management,ACM Transaction on Information Systems,Journal of Information Science,ACM SIGIR,CIKM,WWW,CSCW等等。另外,他是信息检索及Web技术领域的二十多个主要的国际会议程序委员会成员,并且是该领域多个国际一流期刊的审稿人,他是SCI索引杂志Information Processing and Management、Internet Research和Aslib Journal of Information Management的编委。
个人分类: 同行交流|5863 次阅读|0 个评论
美国高校科研数据管理实践个案研究
terahertz 2017-1-18 09:07
(本文发表于《图书情报研究》2016年第4期P24-34) 摘要: 在调研国内外科研数据管理典型案例的基础上,选取伊利诺伊大学香槟分校(UIUC)为个案,采用网络调查和实地考察相结合的方法,从科研数据管理服务阶段、科研数据管理服务体系和科研数据管理教育实践三个方面对UIUC的科研数据管理实践进行详细介绍和分析。研究结果表明,美国伊利诺伊大学香槟分校形成了“以用户为中心”的科研数据管理服务体系和“四位一体”的科研数据管理教育体系。从长期积累、多方合作、体系构建三个方面总结其对我国高校数据管理的启示。 关键词: 数据科学;;科研数据;;数据管理;;数据服务;;数据保存;;伊利诺伊大学香槟分校
个人分类: 发表论文|2370 次阅读|0 个评论
数据科学简介
热度 2 郭崇慧 2016-1-2 11:58
大数据的兴起,催生了一门新的学科,即数据科学( Data Science )或 数据学( Dataology ) ,有时也被称为数据解析学( Data Analytics )。数据科学是关于数据的科学 。从事数据科学研究的学者更关注数据的科学价值,试图把数据当成一个 “ 自然体 ( Data Nature )” 来研究,提出所谓 “ 数据界( Data Universe ) ” 的概念,颇有把计算机科学划归为自然科学的倾向。但脱离各个领域的 “ 物理世界 ” ,作为客观事物间接存在形式的 “ 数据界 ” 究竟有什么共性问题还不清楚。物理世界在网络空间中有其数据映像,目前一些学者认为,数据界的规律其本质可能是物理世界的规律(还需要在物理世界中测试验证)。除去各个领域的规律,作为映像的 “ 数据界 ” 还有其独特的共同规律吗?这是一个值得深思的问题。 作为一门学科,数据科学所依赖的两个因素是数据的广泛性和多样性,以及数据研究的共性。现代社会的各行各业都充满了数据。而且这些数据也是多种多样,不仅包括传统的结构化数据,也包括网页、文本、图像、视频、语音等非结构化数据。鄂维南教授认为,数据解析本质上都是在求解反问题,而且是随机模型的反问题 。所以对它们的研究有着很多的共性。例如自然语言处理和生物大分子模型里都用到隐马尔科夫过程和动态规划方法。其最根本的原因是它们处理的都是一维的随机信号。再如图像处理和统计学习中都用到的正则化方法,也是处理反问题的数学模型中最常用的一种手段。所以用于图像处理的算法和用于压缩感知的算法有着许多共同之处 。 除了新兴的学科如计算广告学之外,数据科学主要包括两个方面:用数据的方法来研究科学和用科学的方法来研究数据。前者包括生物信息学、神经信息学、网络信息学、天体信息学、数字地球、社会计算与商务智能等领域。后者包括统计学、机器学习、模式识别、数据挖掘、数据库、数据可视化等领域。这些学科都是数据科学的重要组成部分。但只有把它们有机地放在一起,才能形成整个数据科学的全貌。 在数据科学领域里工作的人才(即数据科学家)需要具备两方面的素质:一是概念性的,主要是对概念模型和数学模型的理解和运用;二是实践性的,主要是处理实际数据的能力以及业务理解能力。培养这样的人才,需要数学、统计学、计算机科学和管理科学等学科之间的密切合作,同时也需要和产业界或其他拥有数据的部门之间的合作。 参考文献 李国杰,程学旗.大数据研究:科技及经济社会发展的重大战略领域 . 中国科学院院刊 , 2012 , 27(6):647-657. 朱扬勇,熊赟 . 数据学 . 复旦大学出版社, 2009. 赵国栋,易欢欢,糜万军,鄂维南 . 大数据时代的历史机遇——产业变革与数据科学 . 北京 : 清华大学出版社 ,2013.
个人分类: 科研笔记|19916 次阅读|2 个评论
数据科学家有一个梦
热度 18 tangchangjie 2015-9-30 11:23
   从数据库到数据科学的升华 近几年,云(计算)、物(联网)、人(社会计算)、海(大数据)给人们太多的新概念,太多的意外,太多的目不暇接和太多的惊喜。   在太多意外和目不暇接中,“数据库”已经深化和升华为“数据科学”。Data Scientists (数据科学家或数据科学工作者)有一个梦,通过数据,像传说中的上帝那样认知世界和改造世界;中国的数据科学家(数据科学工作者)有一个梦,在世界数据科学的大潮前头,创新、奉献并占有一块高地。   在太多的惊喜里,第32界数据库学术会议(NDBC2015)还有15天,将在成都召开了。川大和成都多个高校的数据库研究团队经过两年申请和一年准备,现在各项会务的准备工作基本就绪。 三年岁月,终于凝聚成这一刻。         会议环节向国际会议靠拢 近年来,NDBC数据库学术大会越办越好,逐渐向国际会议靠拢,NDBC2015继续并加强了这一良性趋势,办齐了国际会议的的基本环节:如大会报告(Keynotes),新技术报告,企业界报告(industry Repoert),研究生辅导(tutorial),专题讨论与辩论(Panel) ,优秀研究生论文,最佳论文等;此外,还有第二届搜狗-中国数据库学术年会智慧杯万维网知识提取竞赛颁奖仪式。   大会报告面向前沿,面向基础,面向应用, 本次邀请了众多国内外知名学者和企业家的报告,内容涉及时空信息金字塔模型与数据库, 大数据、传感器,新型存储架构,数据管理技术的机遇与挑战,等等。      And More ... 留一点悬念 团队里的年轻人,为办好这次会议倾注了很多心力。在网站上有更详细的信息,( 点击这里 ) 而更多的圆梦体验。暂留作悬念,让参会者自己体验。      还有15天,就要开会了,借用一位伟人的话语,“它是站在海岸遥望 海 中已经看得见桅杆尖头了的一只航船,.....,它是躁动于母腹中的快要成熟了的一个婴儿”。  数据科学界的朋友,举起你的双手,欢迎他吧,迈动你的健步,参与它吧, 来成都, 来圆数据之梦, 成都欢迎你! 半年来,关于申办国际会议体会的博文(2010.7.23加) 申办学术会议的酸甜苦辣 办好学术会议的ABCD--研教散记17 Coming WAIM2010 :来岷山论剑,比射雕英雄 两年岁月凝一刻,四海宾朋汇一堂--WAIM2010召开(图文) 视办会如作品—WAIM2010办会心得(本文) 国际会议办会方式的回归,兼议应对的方法 虽有苦痛折磨,还是觉得幸福更多 -- 也说办会 国际会议办会方式的回归,兼议应对的方法 数据科学家有一个梦 其它系列博文的入口 唐常杰博客主页 科学博客主页
个人分类: 观察感悟|26399 次阅读|35 个评论
[转载]数据分析师的完整知识结构
热度 1 yngcan 2014-11-28 12:48
作为数据分析师,无论最初的职业定位方向是技术还是业务,最终发到一定阶段后都会承担数据管理的角色。因此,一个具有较高层次的数据分析师需要具备完整的知识结构。 为数据分析师,无论最初的职业定位方向是技术还是业务,最终发到一定阶段后都会承担数据管理的角色。因此,一个具有较高层次的数据分析师需要具备完整的知识结构。 1. 数据采集 了解数据采集的意义在于真正了解数据的原始面貌,包括数据产生的时间、条件、格式、内容、长度、限制条件等。这会帮助数据分析师更有针对性的控制数据生产和采集过程,避免由于违反数据采集规则导致的数据问题;同时,对数据采集逻辑的认识增加了数据分析师对数据的理解程度,尤其是数据中的异常变化。比如: Omniture中的Prop变量长度只有100个字符,在数据采集部署过程中就不能把含有大量中文描述的文字赋值给Prop变量(超过的字符会被截断)。 在Webtrekk323之前的Pixel版本,单条信息默认最多只能发送不超过2K的数据。当页面含有过多变量或变量长度有超出限定的情况下,在保持数据收集的需求下,通常的解决方案是采用多个sendinfo方法分条发送;而在325之后的Pixel版本,单条信息默认最多可以发送7K数据量,非常方便的解决了代码部署中单条信息过载的问题。(Webtrekk基于请求量付费,请求量越少,费用越低)。 当用户在离线状态下使用APP时,数据由于无法联网而发出,导致正常时间内的数据统计分析延迟。直到该设备下次联网时,数据才能被发出并归入当时的时间。这就产生了不同时间看相同历史时间的数据时会发生数据有出入。 在数据采集阶段,数据分析师需要更多的了解数据生产和采集过程中的异常情况,如此才能更好的追本溯源。另外,这也能很大程度上避免“垃圾数据进导致垃圾数据出”的问题。 2.数据存储 无论数据存储于云端还是本地,数据的存储不只是我们看到的数据库那么简单。比如: 数据存储系统是MySql、Oracle、SQL Server还是其他系统。 数据仓库结构及各库表如何关联,星型、雪花型还是其他。 生产数据库接收数据时是否有一定规则,比如只接收特定类型字段。 生产数据库面对异常值如何处理,强制转换、留空还是返回错误。 生产数据库及数据仓库系统如何存储数据,名称、含义、类型、长度、精度、是否可为空、是否唯一、字符编码、约束条件规则是什么。 接触到的数据是原始数据还是ETL后的数据,ETL规则是什么。 数据仓库数据的更新更新机制是什么,全量更新还是增量更新。 不同数据库和库表之间的同步规则是什么,哪些因素会造成数据差异,如何处理差异的。 在数据存储阶段,数据分析师需要了解数据存储内部的工作机制和流程,最核心的因素是在原始数据基础上经过哪些加工处理,最后得到了怎样的数据。由于数据在存储阶段是不断动态变化和迭代更新的,其及时性、完整性、有效性、一致性、准确性很多时候由于软硬件、内外部环境问题无法保证,这些都会导致后期数据应用问题。 3.数据提取 数据提取是将数据取出的过程,数据提取的核心环节是从哪取、何时取、如何取。 从哪取,数据来源——不同的数据源得到的数据结果未必一致。 何时取,提取时间——不同时间取出来的数据结果未必一致。 如何取,提取规则——不同提取规则下的数据结果很难一致。 在数据提取阶段,数据分析师首先需要具备数据提取能力。常用的Select From语句是SQL查询和提取的必备技能,但即使是简单的取数工作也有不同层次。第一层是从单张数据库中按条件提取数据的能力,where是基本的条件语句;第二层是掌握跨库表提取数据的能力,不同的join有不同的用法;第三层是优化SQL语句,通过优化嵌套、筛选的逻辑层次和遍历次数等,减少个人时间浪费和系统资源消耗。 其次是理解业务需求的能力,比如业务需要“销售额”这个字段,相关字段至少有产品销售额和产品订单金额,其中的差别在于是否含优惠券、运费等折扣和费用。包含该因素即是订单金额,否则就是产品单价×数量的产品销售额。 4.数据挖掘 数据挖掘是面对海量数据时进行数据价值提炼的关键,以下是算法选择的基本原则: 没有最好的算法,只有最适合的算法,算法选择的原则是兼具准确性、可操作性、可理解性、可应用性。 没有一种算法能解决所有问题,但精通一门算法可以解决很多问题。 挖掘算法最难的是算法调优,同一种算法在不同场景下的参数设定相同,实践是获得调优经验的重要途径。 在数据挖掘阶段,数据分析师要掌握数据挖掘相关能力。一是数据挖掘、统计学、数学基本原理和常识;二是熟练使用一门数据挖掘工具,Clementine、SAS或R都是可选项,如果是程序出身也可以选择编程实现;三是需要了解常用的数据挖掘算法以及每种算法的应用场景和优劣差异点。 5.数据分析 数据分析相对于数据挖掘更多的是偏向业务应用和解读,当数据挖掘算法得出结论后,如何解释算法在结果、可信度、显著程度等方面对于业务的实际意义,如何将挖掘结果反馈到业务操作过程中便于业务理解和实施是关键。 6.数据展现 数据展现即数据可视化的部分,数据分析师如何把数据观点展示给业务的过程。数据展现除遵循各公司统一规范原则外,具体形式还要根据实际需求和场景而定。基本素质要求如下: 工具。PPT、Excel、Word甚至邮件都是不错的展现工具,任意一个工具用好都很强大。 形式。图文并茂的基本原则更易于理解,生动、有趣、互动、讲故事都是加分项。 原则。领导层喜欢读图、看趋势、要结论,执行层欢看数、读文字、看过程。 场景。大型会议PPT最合适,汇报说明Word最实用,数据较多时Excel更方便。 最重要一点,数据展现永远辅助于数据内容,有价值的数据报告才是关键。 7.数据应用 数据应用是数据具有落地价值的直接体现,这个过程需要数据分析师具备数据沟通能力、业务推动能力和项目工作能力。 数据沟通能力。深入浅出的数据报告、言简意赅的数据结论更利于业务理解和接受,打比方、举例子都是非常实用的技巧。 业务推动能力。在业务理解数据的基础上,推动业务落地实现数据建议。从业务最重要、最紧急、最能产生效果的环节开始是个好方法,同时要考虑到业务落地的客观环境,即好的数据结论需要具备客观落地条件。 项目工作能力。数据项目工作是循序渐进的过程,无论是一个数据分析项目还是数据产品项目,都需要数据分析师具备计划、领导、组织、控制的项目工作能力。 1. 数据采集 了解数据采集的意义在于真正了解数据的原始面貌,包括数据产生的时间、条件、格式、内容、长度、限制条件等。这会帮助数据分析师更有针对性的控制数据生产和采集过程,避免由于违反数据采集规则导致的数据问题;同时,对数据采集逻辑的认识增加了数据分析师对数据的理解程度,尤其是数据中的异常变化。比如: Omniture中的Prop变量长度只有100个字符,在数据采集部署过程中就不能把含有大量中文描述的文字赋值给Prop变量(超过的字符会被截断)。 在Webtrekk323之前的Pixel版本,单条信息默认最多只能发送不超过2K的数据。当页面含有过多变量或变量长度有超出限定的情况下,在保持数据收集的需求下,通常的解决方案是采用多个sendinfo方法分条发送;而在325之后的Pixel版本,单条信息默认最多可以发送7K数据量,非常方便的解决了代码部署中单条信息过载的问题。(Webtrekk基于请求量付费,请求量越少,费用越低)。 当用户在离线状态下使用APP时,数据由于无法联网而发出,导致正常时间内的数据统计分析延迟。直到该设备下次联网时,数据才能被发出并归入当时的时间。这就产生了不同时间看相同历史时间的数据时会发生数据有出入。 在数据采集阶段,数据分析师需要更多的了解数据生产和采集过程中的异常情况,如此才能更好的追本溯源。另外,这也能很大程度上避免“垃圾数据进导致垃圾数据出”的问题。 2.数据存储 无论数据存储于云端还是本地,数据的存储不只是我们看到的数据库那么简单。比如: 数据存储系统是MySql、Oracle、SQL Server还是其他系统。 数据仓库结构及各库表如何关联,星型、雪花型还是其他。 生产数据库接收数据时是否有一定规则,比如只接收特定类型字段。 生产数据库面对异常值如何处理,强制转换、留空还是返回错误。 生产数据库及数据仓库系统如何存储数据,名称、含义、类型、长度、精度、是否可为空、是否唯一、字符编码、约束条件规则是什么。 接触到的数据是原始数据还是ETL后的数据,ETL规则是什么。 数据仓库数据的更新更新机制是什么,全量更新还是增量更新。 不同数据库和库表之间的同步规则是什么,哪些因素会造成数据差异,如何处理差异的。 在数据存储阶段,数据分析师需要了解数据存储内部的工作机制和流程,最核心的因素是在原始数据基础上经过哪些加工处理,最后得到了怎样的数据。由于数据在存储阶段是不断动态变化和迭代更新的,其及时性、完整性、有效性、一致性、准确性很多时候由于软硬件、内外部环境问题无法保证,这些都会导致后期数据应用问题。 3.数据提取 数据提取是将数据取出的过程,数据提取的核心环节是从哪取、何时取、如何取。 从哪取,数据来源——不同的数据源得到的数据结果未必一致。 何时取,提取时间——不同时间取出来的数据结果未必一致。 如何取,提取规则——不同提取规则下的数据结果很难一致。 在数据提取阶段,数据分析师首先需要具备数据提取能力。常用的Select From语句是SQL查询和提取的必备技能,但即使是简单的取数工作也有不同层次。第一层是从单张数据库中按条件提取数据的能力,where是基本的条件语句;第二层是掌握跨库表提取数据的能力,不同的join有不同的用法;第三层是优化SQL语句,通过优化嵌套、筛选的逻辑层次和遍历次数等,减少个人时间浪费和系统资源消耗。 其次是理解业务需求的能力,比如业务需要“销售额”这个字段,相关字段至少有产品销售额和产品订单金额,其中的差别在于是否含优惠券、运费等折扣和费用。包含该因素即是订单金额,否则就是产品单价×数量的产品销售额。 4.数据挖掘 数据挖掘是面对海量数据时进行数据价值提炼的关键,以下是算法选择的基本原则: 没有最好的算法,只有最适合的算法,算法选择的原则是兼具准确性、可操作性、可理解性、可应用性。 没有一种算法能解决所有问题,但精通一门算法可以解决很多问题。 挖掘算法最难的是算法调优,同一种算法在不同场景下的参数设定相同,实践是获得调优经验的重要途径。 在数据挖掘阶段,数据分析师要掌握数据挖掘相关能力。一是数据挖掘、统计学、数学基本原理和常识;二是熟练使用一门数据挖掘工具,Clementine、SAS或R都是可选项,如果是程序出身也可以选择编程实现;三是需要了解常用的数据挖掘算法以及每种算法的应用场景和优劣差异点。 5.数据分析 数据分析相对于数据挖掘更多的是偏向业务应用和解读,当数据挖掘算法得出结论后,如何解释算法在结果、可信度、显著程度等方面对于业务的实际意义,如何将挖掘结果反馈到业务操作过程中便于业务理解和实施是关键。 6.数据展现 数据展现即数据可视化的部分,数据分析师如何把数据观点展示给业务的过程。数据展现除遵循各公司统一规范原则外,具体形式还要根据实际需求和场景而定。基本素质要求如下: 工具。PPT、Excel、Word甚至邮件都是不错的展现工具,任意一个工具用好都很强大。 形式。图文并茂的基本原则更易于理解,生动、有趣、互动、讲故事都是加分项。 原则。领导层喜欢读图、看趋势、要结论,执行层欢看数、读文字、看过程。 场景。大型会议PPT最合适,汇报说明Word最实用,数据较多时Excel更方便。 最重要一点,数据展现永远辅助于数据内容,有价值的数据报告才是关键。 7.数据应用 数据应用是数据具有落地价值的直接体现,这个过程需要数据分析师具备数据沟通能力、业务推动能力和项目工作能力。 数据沟通能力。深入浅出的数据报告、言简意赅的数据结论更利于业务理解和接受,打比方、举例子都是非常实用的技巧。 业务推动能力。在业务理解数据的基础上,推动业务落地实现数据建议。从业务最重要、最紧急、最能产生效果的环节开始是个好方法,同时要考虑到业务落地的客观环境,即好的数据结论需要具备客观落地条件。 项目工作能力。数据项目工作是循序渐进的过程,无论是一个数据分析项目还是数据产品项目,都需要数据分析师具备计划、领导、组织、控制的项目工作能力。
个人分类: 利用R进行专利分析|2825 次阅读|1 个评论
复杂系统与数据科学周刊 (第1期,2014-03-09)
bigdataage 2014-1-19 15:24
============================================================ Welcome to Complex Systems and Data Science Weekly 关于本周刊及其所有内容: click here ============================================================ 复杂系统与数据科学周刊 (第1期,2014-03-09)
2 次阅读|0 个评论
复杂系统与数据科学周刊
bigdataage 2014-1-19 14:40
  =====================================================   复杂系统与数据科学周刊 Complex Systems and Data Science Weekly   =====================================================   欢迎来到复杂系统与数据科学周刊 各位生活在太阳系的第三颗行星上的女士们和先生们,复杂系统与数据科学周刊,包括各种记录和总结,都是平时自己看过的内容,总结过来方便大家阅读、交流想法,也方便自己查阅。只提供中文版,面向广大国内爱好者,内容涉及到复杂系统科学、数据科学、系统生物学、生物信息学、定量社会科学、复杂网络、机器学习、数据挖掘、统计学、动力系统、计算机编程、生命科学等等,多数内容会比较通俗,认识汉字的非专业人士也能看懂。 纯属个人爱好,若有侵权之处,或作者不愿意以这种形式分享,请联系我: bigdataage@gmail.com 本周刊一般是每周六晚上更新。欢迎所有人评论和交流。 (注: 感谢各位访问我的博客! 这个博客非常欢迎评论。我不可能回复所有评论,甚至不可能回复所有写得最好的评论,这纯粹是因为我不可能每天都上来看看有什么新评论。但我想大多数人写评论并不是为了给我看的,更是为了让后来的读者看。文章发出来应该被视为是讨论的开始,评论应该被视为这篇文章的一部分。 欢迎在评论中留下自己的博客或者微博地址,这样如果别的读者想关注你就可以关注到。 广告评论会被删除,因为这会影响别人阅读。 如果一定要求回复的话,请直接给我发电子邮件,地址在右边栏上方。 所有文章都可以被非商业转载,不用再问我了!但商业转载需要跟我或者文章首发的媒体联络。 如果有什么好书、好思想、好文章,请用各种方便的办法向我推荐,多谢! ) 每期包括10部分: 1. 头条 2. 活动与会议预告 3. 历史与经验 4. 论文评论 5. 书籍评论 6. 新书推荐 7. 本期大神 8. 本期研究机构 9. 自然界中的链接 10. 各种课程与资源 11. 各种新闻 12. 主题之外     ====================================================  ===================   Archive     =======================================================================     2014年: 第1期
1 次阅读|0 个评论
数据科学(大数据处理)领域的大牛和研究机构总结
bigdataage 2012-12-8 19:36
数据科学(大数据处理)领域的大牛和研究机构总结 (第3次修改) 1 Jeffrey David Ullman ( Stanford University) http://infolab.stanford.edu/~ullman/ Mining of Massive Datasets (大数据:互联网大规模数据挖掘与分布式处理) Compilers: Principles, Techniques, and Tools 这两本书的作者。 2 Anand Rajaraman Mining of Massive Datasets 的一作。 3 Jim Gray http://research.microsoft.com/en-us/um/people/gray/ 可惜已经消失在大海里,估计喂鱼了,非常可惜!! 4 Andrew Ng(吴恩达) , Stanford University, 会说中文, 很NB的一个人。 http://ai.stanford.edu/~ang/ 5 Daphne Koller , Stanford University http://ai.stanford.edu/~koller/index.html 6 Michael I. Jordan , University of California, Berkeley http://www.cs.berkeley.edu/~jordan/ 7 David M. Blei, Princeton University http://www.cs.princeton.edu/~blei/ 8 Geoffrey E. Hinton , University of Toronto godfather of neural networks, 人工神经网络之父 deep learning的领军人物 http://www.cs.toronto.edu/~hinton/
6565 次阅读|0 个评论
[转载]数据科学与信息服务产业应融合发展
shawn360 2012-9-11 09:08
我们生活在一个海量信息和海量数据的时代:互联网、计算技术、电子商务和各种其他新兴技术使我们获取数据、分析数据和利用数据的能力有了一个质的变化。这个变化正在不断深入、全面影响着我们的日常生活,由此也影响着社会、文化、国防和国民经济的发展。   信息服务产业已成为发达国家经济转型的主要支柱。以谷歌和脸谱为代表的信息服务企业,在短短几年时间里就进入全世界最大、最受瞩目企业的行列。它们的发展速度是在传统的工业模式下难以想象的。它们的成功也展示了信息服务产业巨大的发展空间。另外,数据和信息资源已成为继人力资源和物质资源以外的第三大资源。数据资源的开发和利用将是未来社会和经济发展的主要手段之一,也应该成为制定国家长远发展计划需要考虑的主要因素之一。    科学研究可归结为数据研究   由此,信息时代对社会、政府特别是教育和科学研究体制提出了什么样的新要求?信息服务产业的科学基础是什么?   传统工业,尤其是制造业的科学基础是自然科学。物理学提供了自然科学最基本的原理。在此之上,化学、生命科学、地球物理、天文学以及各种各样的工程科学为传统工业提供了科学指导。从大学、科研机构到企业、政府部门,都已经建立起了一整套从教学、科研、开发、生产到市场的机制。   信息服务产业的科学基础是数据科学。简单说来,它由两个部分组成,即用数据的方法来研究科学和用科学的方法来研究数据。   先谈第一点。科学研究有两个最基本的模式,姑且叫做开普勒模式和牛顿模式。开普勒关于行星运动的三大定律完全是从前人所观察到的数据中总结出来的。而牛顿则更进了一步,他寻求的是基本原理。他对行星运动规律的认识是建立在基本原理的基础之上的。牛顿不仅知其然,而且知其所以然。牛顿的认识无疑比开普勒要深刻得多。所以牛顿模式成了科学研究的首选模式。几百年来的科学研究都是沿着一条以寻求基本原理为目标,而从根本上认识世界、认识自然这样一条道路走过来的。   时至今日,科学家在对基本原理的寻求方面取得了长足进步。随着量子力学的建立,人们已经基本了解了在生命科学、化学、能源、环境等与日常生活息息相关的领域所需要的基本原理。现实的困难在于这些系统的复杂性——从基本原理出发去理解这些系统在目前和不太遥远的未来基本上都是一件不可能的事情。牛顿模式因此而面临着难以逾越的困难。而另一方面,由于人们获取数据和分析数据能力的提高,从数据中直接总结出客观规律的开普勒模式的优势就体现了出来。生物信息学的成功就是一个很好的例子。   再谈第二点。从传统的角度来看,分析数据属于统计学的范畴。但近年来,随着机器学习、数据挖掘、生物信息、图像处理、信号处理等方面的发展,数据分析已经深入到了计算机科学、社会学、电子工程、生命科学、天文、地理、气象等领域。而且,从数据分析的角度来看,这些不同学科中的不同问题有着相当程度的统一性。正是这种统一性,使得数据科学有存在和发展的必要。    现行教育方式抑制创新   这里特别值得一提的是数学的作用。从根本上来讲,自然科学的基本原理来自于物理;而数据科学的基本原理则来自于数学。数据分析的主要手段就是给数据建立起数学结构。这种数学结构可以是多方面的:拓扑的、几何的或代数的。最简单的结构是图的结构,这也可以看做是一种拓扑结构。传统的统计学中最常用的是分析方面的结构,如参数化模型。所以数据科学给数学也带来了许多根本性的问题:例如怎样把数据集(如网页)坐标化,怎样给数据集定义拓扑结构或曲率,怎样利用数据集中可能隐含的对称性,怎样设计高效的算法,怎样处理噪声等等。数据和数、方程以及图形一样,也将成为数学研究的基本元素之一。这不仅能给数学的各个领域提供新的问题,同时也会加深我们对数学中一些最基本概念的认识。   数据科学中最受瞩目的成就之一是小波理论。系统的小波理论出现之前,人们对在信号处理中引进局部基函数和对信号按尺度作分解都有过很多的尝试。但这些工作都是经验性的,缺乏系统性,小波理论从根本上解决了这一问题。它使这些尝试性的工作由经验变成了科学,这样的转变是本质性的。它所带来的变化也是有目共睹的。压缩感知理论也经历了一个类似的过程,它所产生的影响也将是巨大的。   另外需要强调的一点是,由自然科学的成就转换成工业产品往往要经过一个漫长的过程。而数据科学则不同,数据科学与应用、与产业有着更为密切的联系。从小波理论的出现到它在图像处理方面的应用仅仅经过了几年的时间。正因为如此,对数据科学的研究更应该努力地走在最前沿,因为落后一步就意味着彻底失去机会。   目前数据科学的发展存在着如下几个问题:一是缺乏一个统一的平台。数据科学被瓜分到计算机科学、统计、数学、生物等学科。它们之间还缺乏应有的联系。这使数据科学的发展受到制约。二是数学作为数据科学的基础,其作用还没有被充分认识到,更没有充分发挥出来。这在一定程度上限制了数据科学研究的深度。三是企业界与学术界之间的相互影响还不够完善。企业界搜集的数据经常不够规范,企业界和学术界之间协同创新的模式还有待完善。   具体到我国的实际情况,在很多方面更是令人担忧。我国现行的教育和科研体制几乎将学科分类推到了极致。这更加不利于数据科学这样一个新型的、跨学科的领域的发展。另一方面,从谷歌、脸谱等例子来看,信息服务产业中许多最有创造性的想法都来自于年轻人。而我们国家所通行的教育方式,如中学的应试式教育和大学的灌输式教育都极大抑制了年轻人的创造性。    统一规划数据科学和信息产业发展   认识到这些以后,我们自然要问:怎样应对数据科学和信息服务产业所提出的新的要求?   从大学的层面来看,应该充分认识到数据科学发展的巨大空间,将数据科学提高到一个和自然科学并列的高度。以数学、计算机科学、统计、生物信息、金融和经济学、社会学等学科为依托,建立起一个数据科学的教育和科研平台。同时要建立起一个完整的本科生和研究生培养计划。这个教学计划的基础课程应该包括线性代数、逼近论、离散数学、概率论和随机过程以及数理统计等数学课程;同时也应包括数据库、数据结构、机器学习、数据挖掘等计算机科学的课程。   这里应该特别强调算法的重要性:没有高效的算法,所有的理论模型都将被束之高阁。而在传统的框架下,算法被分割到了计算数学和计算机科学两个学科中。这两个学科对算法研究的风格和出发点各不相同,但它们所研究的许多问题在本质上是相同的。数据科学的发展更是要求把这两种不同风格、不同背景的算法研究紧密结合起来。   课程设置仅仅是教学计划的一部分,更富有挑战性的是怎样创造出一个能充分发挥学生主动性和积极性的教育环境,并能使教学计划和信息服务产业的前瞻性需求紧密结合起来。   从企业界的角度来看,要充分认识到创新的重要性。中国本身就是一个很大的市场。其很多方面,如政策、语言、经济等方面的特点给国内的企业在占据国内市场方面提供了很多优势。但应该认识到,仅仅依靠这样的自然保护是难以持久发展的。要保证中国的信息产业能走到世界的前列,就必须走创新的道路,必须开拓国际市场。企业界应该学会充分利用大学和其他研究机构等资源来提高自己的创新能力。   从政府的层面来看,要把发展数据科学和信息服务产业作为一项战略计划来抓。充分认识到这是关系到国计民生,关系到国家的经济、科学和文化发展的根本利益和长远利益的一件大事。从组织、资源、政策等多方面制定出一整套的相关计划。   从我国的具体情况来看,政府的指导作用尤其重要。首先,我们必须有意识地积累数据这种资源并使之成为可利用的资源。这就需要政府在数据搜集、存储,特别是在开放数据等方面提供一系列的指导政策。其次,数据科学和信息服务产业的发展需要学术界和企业界的密切配合。政府可以通过各种方式鼓励这种配合,尤其是在前瞻性的研究方面。最后,数据科学是一门跨学科的领域,而我国目前的科研和教育体系对跨学科领域的发展是极为不利的。我们不能等体制方面的问题都解决了再去发展数据科学,而应该通过政府的一些引导措施有效避免体制方面的问题所造成的困难。   总的来说,数据科学的研究还处在一个初级阶段,尽管一些西方国家占据着领先位置,但所形成的差距还不是太大。从另一方面来讲,有理由相信数据科学和相关的信息产业比较适合中国人的习惯性思维。关键是我们必须把握住这个历史时机,迅速建立起一整套适合数据科学及相关的信息产业发展的体制和环境。要做到这一点,政府、学术界和企业界之间的密切配合是必不可少的。 作者简介 :鄂维南,男,泰州靖江人,1963年9月出生。中国科学院院士。现任北京大学长江讲座教授,同时也是美国普林斯顿大学教授。1978年考入中国科技大学数学系,1985年获得中科院计算数学所硕士学位,并在著名应用数学家BjornEngquist教授指导下获得美国加州大学洛杉矶分校博士学位。鄂维南教授从事的研究领域极其广泛,分布在数学、力学和理论物理的诸多方向,并均有重要的发现和贡献。他的研究把数学模型、分析和计算美妙地结合起来,并能对现实世界的重要现象提供新的见解。他还曾获得过美国青年科学家和工程师总统奖以及第五届国际工业与应用数学家大会科拉兹奖。
2764 次阅读|0 个评论
数据科学与信息服务产业
热度 10 WeinanE 2012-8-27 14:57
我们生活在一个信息时代,一个海量信息和海量数据的时代:互联网,计算技术,电子商务和各种其它的新兴技术使我们获取数据、分析数据和利用数据的能力有了一个本质的变化。这个变化正在不断深入地、全面地影响着我们的日常生活。由此也影响着社会、文化、国防和国民经济的发展。信息服务产业已成为发达国家经济转型的主要支柱。以谷歌和脸书为代表的信息服务企业,在短短几年的时间里就进入了全世界最大、最受瞩目的企业的行列。它们的发展速度是在传统的工业模式下难以想象的。它们的成功也展示了信息服务产业巨大的发展空间。另外,数据和信息资源已成为继人力资源和物质资源以外的第三大资源。数据资源的开发和利用将是未来社会和经济发展的主要手段之一,也应该成为制定国家长远发展计划需要考虑的主要因素之一。 我们自然要问,信息时代对社会,对政府,特别是对我们的教育和科学研究体制提出了什么样的新的要求;信息服务产业的科学基础是什么? 传统工业,尤其是制造业的科学基础是自然科学。物理学提供了自然科学最基本的原理。在此之上、化学、生命科学、地球物理、天文学以及各种各样的工程科学为传统工业提供了科学指导。从大学、科研机构,到企业、政府部门,我们都已经建立起了一整套教学、科研、开发、生产到市场的机制。 信息服务产业的科学基础是数据科学。简单说来,它由两个部分组成:即用数据的方法来研究科学和用科学的方法来研究数据。 先谈第一点。科学研究有两个最基本的模式,姑且叫做开普勒模式和牛顿模式。开普勒关于行星运动的三大定律完全是从前人所观察到的数据中所总结出来的。而牛顿则更进了一步,他寻求的是基本原理。他对行星运动规律的认识是建立在基本原理的基础之上的。牛顿不仅知其然,而且知其所以然。牛顿的认识无疑比开普勒要深刻得多。所以牛顿模式成了科学研究的首选模式。几百年来的科学研究都是沿着一条以寻求基本原理为目标,而从根本上认识世界,认识自然这样一条道路走过来的。 时至今日,科学家们在对基本原理的寻求方面取得了长足的进步。随着量子力学的建立,人们已经基本了解了在生命科学、化学、能源、环境等与日常生活息息相关的领域所需要的基本原理。现实的困难在于这些系统的复杂性 —— 从基本原理出发去理解这些系统在目前和不太遥远的未来基本上都是一件不可能的事情。牛顿模式因此而面临着难以逾越的困难。而另一方面,由于人们获取数据和分析数据能力的提高,从数据中直接总结出客观规律的开普勒模式的优势就体现了出来。生物信息学的成功就是一个很好的例子。 再谈第二点。从传统的角度来看,分析数据属于统计学的范畴。但近年来,随着机器学习、数据挖掘、生物信息、图像处理、信号处理等方面的发展,数据分析已经深入到了计算机科学、社会学、电子工程、生命科学、天文、地理、气象等各个领域。而且,从数据分析的角度来看,这些不同学科中的不同问题有着相当程度的统一性。正是这种统一性,使得数据科学有存在和发展的必要。 这里特别值得一提的是数学的作用。从根本上来讲,自然科学的基本原理来自于物理;而数据科学的基本原理则来自于数学。数据分析的主要手段就是给数据建立起数学结构。这种数学结构可以是多方面的:拓扑的、几何的、或代数的。最简单的结构是图的结构。 这也可以看作是一种拓扑结构。传统的统计学中最最常用的是分析方面的结构,如参数化模型。所以数据科学给数学也带来了许多根本性的问题:例如怎样把数据集(如网页)坐标化?怎样给数据集定义拓扑结构或曲率?怎样利用数据集中可能隐含的对称性?怎样设计高效的算法?怎样处理噪声,等等?数据和数,方程以及图形一样,也将成为数学研究的基本元素之一。这不仅能给数学的各个领域提供了新的问题,同时也会加深我们对数学中一些最基本的概念的认识。 数据科学中最受瞩目的成就之一是小波理论。系统的小波理论出现之前,人们对在信号处理中引进局部基函数和对信号按尺度作分解都有过很多的尝试。但这些工作都是经验性的,缺乏系统性。小波理论从根本上解决了这一问题。它使这些尝试性的工作由经验变成了科学。这样的转变是本质性的。它所带来的变化也是有目共睹的。压缩感知理论也经历了一个类似的过程。它所产生的影响也将是巨大的。 另外需要强调的一点是,由自然科学的成就转换成工业产品往往要经过一个漫长的过程。而数据科学则不同,数据科学与应用,与产业有着更为密切的联系。从小波理论的出现到它在图像处理方面的应用仅仅经过了几年的时间。正因为如此,对数据科学的研究更应该努力地走在最前沿:因为落后一步就意味着彻底失去机会。 目前数据科学的发展存在着如下几个问题:一是缺乏一个统一的平台。数据科学被瓜分到计算机科学、统计、数学、生物等等学科。他们之间还缺乏应有的联系。这使数据科学的发展受到了制约。二是数学作为数据科学的基础,其作用还没有被充分认识到,更没有充分发挥出来。这在一定程度上限制了数据科学研究的深度。三是企业界与学术界之间的相互影响还不够完善。企业界搜集的数据经常不够规范,企业界和学术界之间协同创新的模式还有待完善。 具体到我国的实际情况,在很多方面更是令人担忧。我国现行的教育和科研体制几乎将学科分类推到了极致。这更加不利于数据科学这样一个新型的,跨学科的领域的发展。另一方面,从谷歌、脸书等例子来看,信息服务产业中许多最有创造的想法都来自于年青人。而我们国家所通行的教育方式,如中学里的应试式教育和大学里的灌输式教育都极大地抑制了年青人的创造性。 认识到这些以后,我们自然要问:怎样应对数据科学和信息服务产业所提出的新的要求? 从大学的层面来看,应该充分认识到数据科学发展的巨大空间,将数据科学提高到一个和自然科学并列的高度。以数学、计算机科学、统计、生物信息、金融和经济学、社会学等学科为依托,建立起一个数据科学的教育和科研平台。要建立起一个完整的本科生和研究生培养计划。这个教学计划的基础课程应该包括象线性代数、逼近论、离散数学、概率论和随机过程、以及数理统计等数学课程;同时也应包括象数据库、数据结构、机器学习、数据挖掘等计算机科学的课程。 这里应该特别强调算法的重要性:没有高效的算法,所有的理论模型都将被束之于高阁。而在传统的框架下,算法被分割到了计算数学和计算机科学两个学科中。这两个学科对算法研究的风格和出发点各不相同,但它们所研究的许多问题在本质上是相同的。数据科学的发展更是要求把这两种不同风格,不同背景的算法研究紧密结合起来。 课程设置仅仅是这个教学计划的一部分,更富有挑战性的是怎样创造出一个能充分发挥学生主动性和积极性的教育环境,并能使教学计划和信息服务产业的前瞻性需求紧密结合起来。 从企业界的角度来看,要充分认识到创新的重要性。中国本身就是一个很大的市场。其很多方面,如政策、语言、经济等方面的特点给国内的企业在占据国内市场方面提供了很多优势。但应该认识到,仅仅依靠这样的自然保护是难以持久发展的。要保证中国的信息产业能走到世界的前列,就必须走创新的道路,必须开拓国际市场。企业界应该学会充分利用大学和其它研究机构等资源,来提高自己的创新能力。 从政府的层面来看,要把发展数据科学和信息服务产业作为一项战略计划来抓。充分认识到这是关系到国计民生,关系到国家的经济、科学、和文化发展的根本利益和长远利益的一件大事。从组织、资源、政策等多方面制定出一整套的相关计划。 从我国的具体情况来看,政府的指导作用尤其重要。首先,数据作为一种资源,我们必须有意识地积累这种资源并使之成为可利用的资源。这就需要政府在数据搜集、存储、特别是在开放数据等方面提供一系列的指导政策。其次,数据科学和信息服务产业的发展需要学术界和企业界的密切配合。政府可以通过各种方式鼓励这种配合,尤其是在前瞻性的研究方面。再次,数据科学是一门跨学科的领域,而我国目前的科研和教育体系对跨学科领域的发展是极为不利的。我们不能等体制方面的问题都解决了以后再去发展数据科学,而应该通过政府的一些引导性的措施来有效地避免体制方面的问题所造成的困难。 总的来说,数据科学的研究还处在一个初级阶段:尽管一些西方国家占据着领先位置,但所形成的差距还不是太大。从另一方面来讲,有理由相信数据科学和相关的信息产业比较适合于中国人的习惯性思维。关键是我们必须把握住这个历史时机,迅速建立起一整套适合于数据科学及相关的信息产业发展的体制和环境。要做到这一点,政府,学术界和企业界之间的密切配合是必不可少的。
2204 次阅读|14 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-16 04:09

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部