雷锋网按:本文原载于KDnuggets,译者为白雪(某大型国企10年+IT从业者,初稿译者)和龙星镖局(互联网从业者,终稿译者)。
在KDnuggets上,《检测伪数据科学家的20个问题》是1月份阅读量最高的文章,由于作者只是提问而没有给出答案,这篇文章也让厨子和火车司机们混入数据科学家队伍的难度大增。
现在好了!KDnuggets的编辑们凑在一块解答了这些问题。另外,我还增加了一个经常被忽略的问题。问题正好是21个,您一天掌握一个,正好三周时间,又可以找到混入数据科学家队伍的捷径了!
请大家特别注意文中用蓝色字体标出的关键词,即便你对于内容完全无法理解,只要在日常交流中经常使用这些术语,做到耗子啃尿盆儿——一肚子骚词儿,也能算半个数据科学家了。
第二部分内容包括防止过拟合(overfitting),实验设计(experimental design),高/宽数据(tall and wide data),理解媒体给出统计数据的有效性等等。由KDnuggets的Gregory Piatetsky编辑。这是第二部分问题及答案,先从附加日的问题开始。
附加日:什么是过拟合?怎么防止过拟合?【Gregory Piatetsky解答】
答:过拟合是发现偶然欺骗性的、不能被后续研究实验复现的结果。
我们在新闻报道上经常看到,有些工作推翻了以前的研究结论,像鸡蛋不再对健康不利,或者饱和脂肪(saturated fat)与心脏疾病无关。我们认为这些问题是由于许多研究人员(尤其是社会科学或医学领域的)经常犯数据挖掘(data mining)的大忌—过拟合导致的。研究者在没有合适的统计控制下进行了太多的假设检验,直到他们偶然发现了一些有趣的东西并报告出来。不足为奇的是,这次偶然的效应下次被发现的可能性会很小,或根本观测不到。
这些研究实验的缺陷被John P. A. Loannidis认识到,并写在了他具有里程碑意义的论文“为什么大多数发表的研究结果都是错的”(PLoS Medicine, 2005)中。Loannidis经常发现,要么是实验结果很夸张,要么是研究发现没法复现。在他的论文中,他给出的统计证据确实证实大多数声称的研究发现是错的。
Loannidis发现要使一项研究发现是可靠的,它必须具备以下条件:
大样本量(sample size)和显著的效果(effects)
更大数量的、更少选择的检验关系
更灵活的设计,定义,输出和分析方式
限于资金和其他因素(包括该科学领域的普及性)的最小偏差
遗憾的是,这些规则往往没有被遵守,这就产生了很多无法复现的结果。例如:从1981年至1993年,指标S&P500被发现与孟加拉国的黄油产量密切相关。
使用诸如Google correlate或Spurious correlations这样的工具,我们自己也可以发现更多有趣甚至是完全虚假的的结果。
有几个方法可以用来防止“过拟合”:
尽力找出最简单的可能假设(hypothesis)。
正则化(为复杂性增加惩罚项)
随机测试(Randomization Testing, 随机化类标记,并测试你的方法-如果出现了一样强有力的结果,那么一定是什么地方出错了)
嵌套交叉验证(Nested cross-validation, 在里层做特征选择,然后在外层运行整个交叉验证方法)
调节伪发现率(False Discovery Rate)
使用可重用保持法(reusable holdout method)—2015年提出的突破性方法
好的数据科学是站在科学认知世界的前沿,避免过拟合数据、让公众和媒体认识到坏的数据分析的危害性是数据科学家们的责任。
第十二天:举例说明怎样设计实验来回答有关用户行为(user behavior)的问题【Bhavya Geethika解答】
答:步骤1,制定要研究的问题:页面加载时间对用户满意度评级的影响是什么?
步骤2,识别变量:我们要识别出原因和结果,自变量是页面加载时间,因变量是用户满意度评级。
步骤3,构造假设:对一个网页来说,较低的页面加载时间会对用户满意度有更多影响。这里我们要分析的因素就是页面加载时间。
图12 你的实验设计有一个缺陷
步骤4,确定实验的设计:考虑实验的复杂性,即一次改变一个因素或者在同一时间改变多个因素,这样我们用的是因子设计(factorial design, 又称2ķ设计)。设计的选择要基于目标的类型(比较、筛选、响应面)[原文:Comparative, Screening, Response surface]和因素(factors)的个数。
我们还要确定采用何种实验形式,可以是参与者组内、参与者组间或者混合方式。例如:有两个版本的网页,一个在左边有购买按钮(点击购买)另一个网页这个按钮在右边。
参与者组内设计(Within-participants design) – 用户组的用户都可以看到两个版本的网页。
参与者组间设计(Between-participants design) – 一个用户组看到A版本,另一组的用户看到B版本的。
步骤5,制定实验任务和程序:
实验中涉及的步骤的详细描述,用来衡量用户行为的工具, 目标和成功度量这些都要定义。收集有关用户参与的定性数据,以便进行统计分析。
步骤6,确定操作和测量:操作(manipulation): 控制一个层级的因素,处理另一个。我们还要定义行为的衡量标准。
延迟(Latency)-从提示到行为发生的时间(从展示出商品到用户点击购买按钮用了多长时间)。
频次(Frequency)-一个行为发生的次数(在某个时间内点击特定页面的次数)。
持续时长(Duration)-特定行为持续时间(添加所有商品所用的时间)。
强度(Intensity)-行为发生的强烈程度(用户多快购买一个商品)。
步骤7,分析结果:
识别用户行为数据,根据观测到的结果,支持或反对该假设。例如:不同页面加载时间下用户满意度评级的分布是怎样的。
第十三天:“高/宽”数据(tall/wide data)的差别是什么?【 Gregory Piatetsky解答】
答:在大多数数据挖掘、数据科学的应用中,记录(行)比特征(列)多很多-这种数据有时被称做“高”数据。
在像基因组学或者生物信息学的一些应用中,你可能只有很少的记录(病人),例如100,但又可能会对每个病人做20,000个观察。这时,通常用在“高”数据上的标准方法会导致过度拟合数据,所以需要引入特殊的方法。
图13. 针对高数据和宽数据的不同方法
问题不仅仅是变形(reshape)数据(这里有R包 useful R packages),而是通过减少特征数来寻找最相关的特征,以避免假阳性(false positives)。特征约减(feature reduction)的方法像Lasso在"Statistical Learning with Sparsity: The Lasso and Generalizations"一书中有介绍, 请在公众号后台发送信息“data2”获取。
第十四天:怎样确定一篇文章里(报纸或其他媒体上)的统计数据是错的或者只是为了支持作者的观点,而不是关于某主题正确全面的真实信息?
答:Zack Lipton提出了一个简单的原则:如果这些统计数据发表在报纸上,那么它就是错的。这里有一个来自Anmol Rajpurohit的更严谨的解答。
每个媒体都有目标受众,对受众的选择在很大程度上决定了发布哪些文章、文章怎样措辞、重点突出文章的哪部分、怎样去讲这个事件等。
要判定发表在一篇文章上统计数据的有效性,第一步先要看发表它的机构和它的目标受众。你会发现即使是同样一个包含统计数据的新闻事件,福克斯新闻(Fox news)、华尔街新闻(wsj)和ACM/IEEE发布的会不那么一样。因此,数据科学家能聪明地知道从哪里获取资讯(以及要相信它几分)。
图14a:出现在“福克斯新闻”上一个十分具有误导性的柱状图
图14b:如何客观地呈现相同的数据
作者通常通过下面的方法试图隐藏他们研究的不足:巧妙的叙事技巧和忽略重要的细节直接跳到诱人的错误结论。因此,可以使用“拇指规则”(thumb’s rule)识别文章是否包含误导人的统计数据,检查文章是否包含了研究方法上的细节以及研究方法是否存在有感知限制的选择。注意查找像“样本容量(sample size)”,“误差范围(margin of error)”等词。尽管对“样本容量”,“误差范围”多少合适没有完美的答案,这些属性在阅读最终结论时要牢记于心。
另一个常见的错误报道案例是这样的,缺乏数据素养(data-education)的记者从已发表的研究报告的一两段中得到一个见解,并且为了得到他们的观点而忽略报告的其他部分。因此,以下一些方法能够避免你被这样的文章愚弄:首先,一篇可靠的文章不会含有任何无事实根据的观点。所有观点都必须能够对应研究结果的支持。否则,则必须明确将其区分为“意见”,而不是一个观点。其次,即便一篇文章引用了著名的研究论文,也并不代表它正确地运用了论文中的观点。这能通过全面阅读这些研究论文来判断其与手头文章的相关性。最后,虽然结论看起来是一篇文章最有趣的部分,但直接跳过研究方法(research methodology)的细节(例如明显错误,偏差等)[原文:spot errors, bias, etc.]往往是灾难性的。
理想情况下,我希望所有这些文章发表研究数据的时候也同时公布研究方法。这样,文章才能做到真正可信,因为每个人都可以分析这些数据,应用研究方法得出结论。
第十五天:解释Edward Tufte's的“图表垃圾”(chart junk)的概念【Gregory Piatetsky解答】
图表垃圾指的是图表或图片中所有可视元素对表达信息是不必要的,或者干扰观察者获取信息。图表垃圾这个名词是由Edward Tufte在他1983年的书《定量信息的视觉展示》里提出的。
图15 Tufte写到:“一个无意的内克尔错觉,像后面两个平面翻转到了前面来。有的角锥体遮住了其他的;一个变量(角锥体堆叠的深度)没有注明标识或比例”。
上图一个来自exceluser的更现代的例子,由于工人和吊车的干扰,图中的柱状图很难理解
这些修饰的存在迫使读者花更大力气而非必要地来发现数据的意义。
第十六天:怎样筛查异常点(outliers)以及发现异常点后该如何处理?【Bhavya Geethika解答】
答:一些筛查异常点的方法有Z分数(z-score)、改进的Z分数(modified z-score)、箱线图(box plots)、格拉布斯测试(Grubb’s test)、Tietjen-Moore测试指数平滑(Tietjen-Moore test exponential smoothing)、Kimber测试指数分布(Kimber test for exponential distribution)和移动窗口滤波算法(moving window filter algorithm)。下面是两种稳健(robust)方法的细节:
四分位距法(Inter Quartile Range)
异常值是给定数据集中一个小于第一四分位数(Q1)或者大于第三四分位数(Q3)1.5倍四分位距以上的数据点。
High = (Q3) + 1.5 IQR
Low = (Q1) - 1.5 IQR
Tukey法(Tukey Methond)
它使用四分位距来过滤太大或太小的数。它实际上与上面的方法一样,除了它使用了“围栏(fences)”的概念。有两个一高一低的围栏:
Low outliers = Q1 - 1.5(Q3 - Q1) = Q1 - 1.5(IQR)
High outliers = Q3 + 1.5(Q3 - Q1) = Q3 + 1.5(IQR)
在围栏之外的都是异常点。
当发现了异常值,不能在没有进行定性评估下就将它们移除,因为这样做是数据不再纯净。重要的是要理解分析问题的上下文或者说重要的是“为什么的问题-为什么异常值不同于其他数据点?”
这个原因很关键。如果是异常点导致了错误的发生,就可以把它扔掉。但如果异常点表示了一种新的趋势、模式或者揭示了数据中有价值的结论,那么它就应该被保留。
第十七天:怎样运用极值理论(extreme value theory)、蒙特卡洛模拟(Monte Carlo simulations)或其他数理统计方法来正确的估计一个小概率事件(rare event)的发生几率。【Matthew Mayo解答】
答:极值理论关注的是小概率事件或极值,这点和经典统计方法不太一样,后者更关注平均。极值理论认为有3种分布可以建模从一些分布中随机观察到的极值点:Gumble, Frechet, 和 Weibull分布,也被叫做极值分布(Extreme Value Distributions, EVD)I型、II型和III型。
极值理论认为,如果从一个给定分布中产生N个数据集,然后创建一个只包含了这N个数据集的最大值的新数据集,那么这个新数据集只能被一种EVD分布精确描述:Gumble, Frechet, 或者 Weibull分布。广义极值分布(GEV)则是一个可以组合这3种极值理论分布还有极值分布模型的模型。
首先要理解用来建模数据的模型,然后才能使用模型来建模数据,最后才是评估。一旦找到最合适的模型,就能对模型进行分析,包括计算可能性。
第十八天:什么是推荐引擎(recommendation engine)?它是怎么工作的?【Gregory Piatetsky解答】
我们现在都对推荐很熟悉,比如netflix的“你可能喜欢的其他电影”,亚马逊的“购买了X的用户还买了Y”。这些系统就叫做推荐引擎,或者更通俗地叫做推荐系统(recommender systems)。
两种典型的进行推荐的方法是:协同过滤(Collaborative filtering)和基于内容的推荐(Content-based filtering)。
协同过滤基于用户过去的行为(如买过的商品、看过的电影、评过的电影等)和用户以及其他用户的决定建模,然后模型被用于预测用户可能会感兴趣的物品(或者给物品的评分)。
基于内容的推荐方法基于一个物品特征来推荐更多具有类似特性的物品(items)。这些方法经常包含在混合推荐系统(Hybrid Recommender Systems)中。
这里有两种方法应用到两个流行音乐推荐系统中的比较:Last.fm和Pandora Radio(例子来自维基百科的推荐系统条目Recommender System)
Last.fm建立了一个歌曲推荐站。他们观察一个用户经常听的乐队或单曲,并与其他用户的听歌行为进行比较,然后Last.fm会给一个用户播放那些不在其曲库里,但和其兴趣相似的其他用户常听的歌曲。由于这种方法利用了用户行为,它是一个协同过滤技术的例子。
Pandora是一个可以播放具有相似属性音乐的站,它主要基于一首歌或艺术家的属性(一个由Music Genome Project提供的400个属性的子集)来推荐。用户的反馈用来修正曲库的结果,当用户不喜欢一首歌曲时就减弱对应的属性(attributes),而当用户喜欢一首歌曲时就增强对应的属性。这是一个基于内容过滤的例子。
第十九天:说明假阳性(false positive)和假阴性(false negative)分别是什么?为什么区分它们的差异性很重要?【 Gregory Piatetsky解答】
答:在二分类(或者医学检验)中,假阳性是指当一个算法或测试显示出现某种状况,但实际上并未出现。假阴性是指当一个算法或测试显示未出现某种状,但实际上却出现了。
在统计假设检验中,假阳性也叫做一类错误,假阴性也叫做二类错误。
很明显区分和区别对待假阳性和假阴性非常重要,因为这两类错误的代价可能会有巨大差异。
举例来讲,如果对一项重大疾病的检测是假阳性(检测结果是有病,但其实病人是健康的),那么就需额外的检测来做出正确的诊断。另一方面,如果一项检测是假阴性(检测结果是健康的,但其实病人有疾病),那么必要的治疗将会终止,可能会导致病人病情恶化而死亡。
第二十天:你使用什么工具来做可视化(visualization)?你觉得Tableau怎么样?R呢?SAS呢?怎样在一张图或视频里有效地展示5维数据?【Gregory Piatetsky解答】
答:数据可视化有很多很好的工具,如R, Python, Tableau 和 Excel等都是数据科学家经常使用的。
有很多方法可以在一个图表里展示多于2维的信息。第三维度可以用能旋转的三维散点来展示。还可以应用颜色、阴影、形状、尺寸。动画可以有效地展示时间维度(随着时间改变)。下面是个好例子。
图20a:5维Iris数据集的散点图
分别对应 尺寸: 花萼长度; 颜色: 花萼宽度; 形状: 类别标记; 横轴: 花瓣长度; 纵轴: 花瓣宽度
对多于5维的,一种方法是平行坐标法 (Parallel Coordinates),由Alfred Inselberg首创。
图20b: Iris数据集的平行坐标展示
当然,当有很多维度的时候,最好还是先减少维度或特征的数量。