Skip to main content

向科学家学习,养成一些好习惯

向科学家学习,养成一些好习惯:

数据科学家/统计学家应该养成哪些好习惯?

关丹辉,For Data Science: www.datakit.cn
个人观点,仅供参考:

1、永远不要轻信自己的分析结果,多用业务和常识去检验。

很多时候,我们的分析都是含有一些潜在的假设,而在分析过程中被忽略。比如最经典的案例是在 1948 年,盖洛普错误地预测了杜威能击败杜鲁门而当选总统,原因是多方面的,但是抽样中的潜在不平均是不可否认的。再比如有个人分析结果得到刚毕业的专科的平均薪资比同专业的本科要高,就找一堆理由来说明这个结论。但是领导说这个不符合常识,打回去重新分析。之后发现是因为样本男女比例不均衡导致的。所以,我们不要轻信自己的分析结果,尤其是不能给自己的分析找正向的理由。因为只有你找理由,总会能给自己的结论找到一堆理由。有多从实际出发,如果不符合常识,那就更要多方面论证,才能发声。否则,就会是个笑话。

2、阅读人文:数据科学不仅是一门科学,也是一门艺术。

数据科学,你可以认为是一门探索人性的科学。我经常跟周围做数据或者 IT 人的说的一点是,因为我们是做数据或者写一些代码的,这里的数字是 1 就是 1,不会是 2,TRUE 了就不会是 FALSE,所以做久了,人容易偏执,不会享受生活,那就无法引进艺术。也举一个例子,美国有一家大型商场,业务经理想能否预测一个客户是否是孕妇,以此来针对性的营销呢?之后他们的数据科学家通过分析找到了一个模型来预测。那么他们是直接把孕妇相关产品推荐给客户吗?不是的,因为这个数据科学家不仅是数学好还是一个社会学家,他说如果全部推荐相关产品,那么客户会觉得自己的隐私被侵犯,甚至会觉得反感,所以他的策略是把真正想要推荐的东西放在一堆其他东西里。当然,这里只是简写,实际过程非常有趣。

3、了解行业信息和业务信息

这一点非常重要。分析和挖掘,最终都是要落到具体的业务上来的。所以做数据,不能脱离业务和行业规律。了解行业信息,能够让你在分析的时候更加的接地气、更好的把握分析框架。尤其是,联系刚才说的第一点,你积累的行业信息和业务信息都会帮助你检验你的分析,同时让你更还的认识到什么样的分析是有价值的分析。此外,对于业务中的乱七八糟的各种概念更是要深入理解,不能停留在表面。有时候,一个业务概念理解失误(比如 0 是否有参与计算),会导致分析出完全相反的结论。据说,数据分析会导致经验累积加速,简单的说一般业务人员工作 10 年的工作经验,数据分析 5 年就能掌握。

4、好奇心与多沟通

在我个人经验中,按照既定的一些分析框架分析,一般都只是完成了既定的任务而已。但是,你对分析中的一些异常多问几个为什么,很容易找到一些业务的突破口。比如你分析销售业绩,你发现一个人,成单比例总是比别人高,甚至有时候比特别有经验的人还高,你就问问为什么呢?否则,你就只能发现这个数字而已。后来,你通过分析和直接询问等方法,发现他发现了新注册的用户容易成单,所以每天盯着新用户呢!当然,这样的例子是比较多的,比如为什么要让用户自己选择一些信息呢?然后一个数据产品就出来了。

5、多实践与多走一步

这里涉及到模型了,也是我个人做的比较多的地方。

在数值计算(或者任何其他工程领域)里,知道一个东西的基本算法和写出一个能在实际中工作得很好的程序之间还是有一段不小的距离的。有很多可能看似无关紧要的小细节小 trick,可能会对结果带来很大的不同。当然这样的现象其实也很合理:因为理论上的工作之所以漂亮正是因为抓住了事物的主要矛盾,忽略“无关”的细节进行了简化和抽象,从而对比较“干净”的对象进行操作,在一系列的“assumption”下建立起理论体系。但是当要将理论应用到实践中的时候,又得将这些之前被忽略掉了的细节全部加回去,得到一团乱糟糟,在一系列的“assumption”都不再严格满足的条件下找出会出现哪些问题并通过一些所谓的“engineering trick”来让原来的理论能“大致地”继续有效,这些东西大概就主要是 Engineer 们所需要处理的事情了吧?这样说来 Engineer 其实也相当不容易。这样的话其实 Engineer 和 Scientist 的界线就又模糊了,就是工作在不同的抽象程度下的区别的样子。
在工作和平时学习练习中,都是这样。很多人问的太多,做的太少,导致眼高手低。比如你问用 Ensemble,会怎么怎么样呢?对哇,很多人能问这个问题,但是就是不去试一试。再比如,有偏样本的问题,有过抽样、欠抽样、阈值调整等等方法,都可以去自己实践一下,才会有更加直观的认识,否则只停留在讨论阶段是没用的。多走一步,每个问题都是自己成长的阶梯。

对于其他的,比如责任心、细心啥的,这些是其他职业也要求的,而专业性,这个就更不用说了。

注意:本人不是统计学家,也不是数据科学家。只是在数据科学道路上,个人的一点感受。望各位知晓。




Comments

Popular posts from this blog

使用PHP Webhook方式打造Telegram Bot

一、找BotFather拿到bot token     在telegram中私聊BotFather建立自己的bot,给bot取名,名字必须要以bot结尾。建好后自己的bot就有一个唯一的token,类似下面的一串字符 164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8 二、确认bot响应文件的位置     在写好bot响应文件后,要把bot放在网络上的一个位置,并且这个位置必须要加密的,即以https开头的一串网址。比如响应文件的名称为telbot.php,把它放在下面这个网址的位置: https://my.webhost.com/ 164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8 /telbot.php 上面网址中的红色设置和bot的token一样是为了确定这个唯一的位置,当然也可以任意设置。 三、告诉Telegram响应文件的位置 Telegram用下面网址的形式来设定webhook响应方式 https://api.telegram.org/bot [myauthorization-token] /setwebhook?url= [myboturl] 按照上面的网址形式,把自己创建的bot的token以及响应文件的位置填入,然后在浏览器中运行一下即可设置成功。比如: https://api.telegram.org/bot164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/setwebhook?url=https://my.webhost.com/164354723:AAEjT6-IyNoXjt7miD0dwa-P5VmDTtHQC8/telbot.php 设置成功后,页面会显示下面的内容: {"ok":true,"result":true,"description":"Webhook is already set"} 四、在Telegram中给自己的bot发消息进行验证 php响应文件例子 <?php  define('BOT_TOKEN', 'YOURBOT:TOK

MatLab中patch函数的基本用法

patch是用来构建多边形的一个基本函数。 用法一 patch(X,Y,C) patch(X,Y,Z,C) patch( 'XData' ,X, 'YData' ,Y) patch( 'XData' ,X, 'YData' ,Y, 'ZData' ,Z) 1.1 说明 patch(X,Y,C)用来构建一个或者多个可填充的多边形,其使用X和Y作为每个点的坐标值,patch将会按顺序连接每个点。如果要得到一个多边形,将X和Y设置为向量;如果要得到多个多边形,将X和Y设置为矩阵,没一列对应一个多边形。C决定多边形的颜色,可以是系统认定的字符,也可以是一个数值,也可以是RGB向量。 patch(X,Y,Z,C)用来构建三维坐标下的多边形。 patch(‘XData’,X,’YData’,Y)和patch(‘XData’,X,’YData’,Y,’ZData’,Z)的用法与patch(X,Y,C)和patch(X,Y,Z,C)的用法类似,只是不设定颜色。 1.2 例子 1.2.1 x = [ 0 1 1 0 ] ; y = [ 0 0 1 1 ] ; patch(x,y, 'red' ) x和y都是1*4的向量,表示将四个点(0,0)、(1,0)、(1,1)和(0,1)依次连接,最后闭合形成一个四边形,设定颜色为红色。 1.2.2 x2 = [ 2 5 ; 2 5 ; 8 8 ] ; y2 = [ 4 0 ; 8 2 ; 4 0 ] ; patch(x2,y2, 'green' ) x2和y2都是3*2的向量,两列表示画两个多边形。第一个多边形连接的点依次是(2,4)、(2,8)和(8,4),第二个多边形连接的点依次是(5,0)、(5,2)和(8,0),颜色设定为绿色。 1.2.3 如果上例的三角形第一个是红色,第二个是绿色,那么patch代码修改为 x2 = [ 2 5 ; 2 5 ; 8 8 ] ; y2 = [ 4 0 ; 8 2 ; 4 0 ] ; patch(x2(:, 1 ),y2(:, 1 ), 'red' ) pat

telegram中的Sci-Hub机器人,又一文献下载利器

或许你看到标题会问什么是telegram,什么是Sci-Hub?请听我一一道来。 什么是Sci-Hub Sci-Hub是一个线上 数据库 ,其上提供48,000,000篇科学学术论文和文章。网站透过“.edu”代理服务器访问相关页面,每天会上传新的论文文章。2011年,哈萨克研究生亚历珊卓·艾尔巴金(Alexandra  Elbakyan)因为研究论文成本过高,每篇论文在付费墙机制下通常需要花费30美元,而决定成立Sci-Hub。2014年,学术界开始预测网站将会发展为类似Napster的服务。不过到了2015年,学术出版社爱思唯尔向纽约地方法院提交诉讼,指控Sci-Hub已经侵犯版权。纽约地方法院在2015年10月28日仍下令Sci-Hub原本使用的网域名称“Sci-Hub.org”必须终止。爱思唯尔在法院上获得胜诉后,一群研究人员、作家和艺术家则连署一封表态支持Sci-Hub和创世纪图书馆的公开信,声称这次诉讼对于世界各地的研究人员是“重大打击”,并指出:“它同样贬低我们、作者、编辑和读者。它寄生于我们的劳动,它阻挠我们为大众服务,它阻拦我们进入。”而该计划于11月因法院命令中止后,在同一个月内便改用网域名称“.io”重新上线,并开放使用Tor浏览。2016年1月时,Sci-Hub平均每天约有200,000人访问,Sci-Hub则声称网站服务每天平均有数十万次档案请求。  Sci-Hub是目前已知第一个提供大量自动且免费的付费学术论文的网站,使用者不需要事前订阅或付款,就能够使用原本存放在付费数据库的论文文章,并提供搜寻原先出版社网站内的文件档案服务。 以上介绍来源于维基百科词条 Sci-Hub Sci-Hub网站被屡次下线,但是又通过更换域名重新上线。以下三个网址经测试可以使用:  http://www.sci-hub.bz/   http://www.sci-hub.ac/   http://www.sci-hub.cc/   广大学者将自己的文章发表至学术期刊(免费或者支付版面费),然而当需要查看其他学者的文章时还需要向出版商付费,你是不是也觉得这完全阻碍了科学文化的传播。艾尔巴金在为自己辩护时援引联合国《世界人权宣言》第二十七条所提的:“人人有权自由参加社会之文化生活,欣赏艺术,并共同襄享科学进步及其利益。”关于这个问题,另一位被称