提问



我是一名在数学和计算机科学方面具有良好背景的程序员。我在本科阶段研究了可计算性,图论,线性代数,抽象代数,算法以及一些概率和统计(通过几个CS类)。


然而,我觉得我对统计数据知之甚少。统计学在计算中越来越有用,统计自然语言处理有助于推动谷歌的一些搜索和机器翻译算法,以及硬件,软件和性能分析。需要适当统计基础的网络完全可信,并且生物信息学等领域每天都变得更加普遍。


我已经读过Google使用贝叶斯过滤的方式与微软使用if语句的方式,并且我知道保罗格雷厄姆的垃圾邮件和更好的贝叶斯过滤计划中存在的相当天真,简单的统计方法的能力,但是我想超越它。[1] [2] [3]


我试图研究更多的统计数据,但我有点失落。维基百科的文章有很多相关主题,但我不确定应该研究哪些。我觉得从我所看到的情况来看,很多统计数据都假设一切都是线性组合的因素组合,加上高斯分布中的一些随机噪声;我想知道除了线性回归之外我应该学到什么,或者在我转向其他技术之前我是否应该花时间真正理解它。我已经找到了一些很长的书籍列表;我应该从哪里开始?[4]


所以我想知道从哪里开始;学习什么,在哪里学习。特别是,我想知道:



  1. 编程,软件工程和计算机科学中的哪些问题是非常适合的统计方法?我将在哪里获得最大的回报?

  2. 我应该花时间学习什么样的统计方法?

  3. 我应该用什么资源来学习这个?书籍,论文,网站。我很欣赏讨论每本书(或其他资源)的内容,以及为什么它相关。



为了澄清我在寻找什么,我感兴趣的是程序员通常需要处理的问题可以从统计方法中受益,以及哪种统计工具可能有用。例如:



  • 程序员经常需要处理自然语言的大型文本数据库,并帮助对其进行分类,分类,搜索和处理。哪些统计技术在这里有用?

  • 更一般地说,人工智能已经从离散的,象征性的方法转向统计技术。对于工作程序员来说,现在最多提供哪种统计AI方法(与正在进行的可能会或可能不会提供具体结果的研究相反)?

  • 程序员经常被要求生产高性能系统,可以在负载下很好地扩展。但除非你能测量它,否则你不能真正谈论性能。你需要使用什么样的实验设计和统计工具才能自信地说结果是有意义的?

  • 物理系统的模拟,例如计算机图形学,通常涉及随机方法。

  • 程序员通常会遇到其他可以从统计方法中受益的问题吗?


最佳参考


有趣的问题。作为一个统计学家,他的兴趣越来越与计算机科学一致,或许我可以提供一些想法......



  1. 不要学习频繁的假设检验。虽然我的大部分工作都是在这个范例中完成的,但它并不符合业务或数据挖掘的需要。科学家们通常会考虑到特定的假设,并且可能希望衡量这样的可能性:鉴于他们的假设不是真的,数据会像现在一样极端。这很少是计算机科学家想要的答案类型。[5]

  2. 贝叶斯是有用的,即使你不知道为什么要假设你正在使用的先验。一个baysian分析可以给你一个精确的概率估计各种突发事件,但它很重要要意识到你有这个精确估计的唯一原因是因为你对先验概率做出了模糊决策。(对于那些不知道的人,使用baysian推理,你可以指定一个任意的先验概率,并根据数据更新它收集以获得更好的估计)。[6]



机器学习和分类可能是一个开始的好地方。机器学习文献更侧重于计算机科学问题,尽管它的任务几乎与统计学相同(参见:http://anyall.org/blog/2008/12/statistics-vs-machine-learning-fight/)。[7]


由于您谈到了包含大量变量的大型数据库,因此这里有一些算法可以派上用场。



  • adaboost:如果你有大量糟糕的分类器,并想制作一个好的分类器。 (另见logit boost)

  • 支持向量机:功能强大且灵活的分类器。可以学习非线性模式(如果你想对它非常挑剔,可以在非线性内核空间中线性化)。

  • k-nearest neighbor:一种简单但功能强大的算法。它不能很好地扩展,但是有一些近似的近邻替代方案并不是那么病态。

  • CART:此算法基于许多预测变量对数据进行分区。如果存在可变交互,或者存在仅适用于数据子集的非常好的预测器,则特别好。

  • 最小角度回归:如果您尝试预测的值是连续的,并且您有大量数据和大量预测变量。



这绝不是完整的,但应该给你一个很好的跳跃点。关于这一主题的一本非常好的和可访问的书是Duda,Hart,Stork:模式分类[8] [9] [10] [11] [12]


此外,统计数据的很大一部分是描述性可视化和分析。程序员特别感兴趣,因为他们允许他/她将信息传达给用户。在R中,ggplot2是我创建可视化的首选包。在描述性分析方面(并且在文本分析中有用)是多维缩放,其可以给出非空间数据的空间解释(例如参议员的意识形态http://projecteuclid.org/DPubS?service=UI\u0026amp;版本= 1.0&安培;动词=显示&安培;手柄= euclid.aoas/1223908041)[14] [15] [16]

其它参考1


作为一个观点,不是作为评论家,但你的问题应该以不同的方式表达:任何人知道什么统计数据?。


事实上,不幸的是我们都处理统计数据。这是生活中的事实。民意调查,天气预报,药物有效性,保险,当然还有计算机科学的一些部分。能够批判性地分析所呈现的数据,在选择正确的理解或被欺骗之间,无论这意味着什么。


说,我认为以下几点很重要



  • 平均值,样本的中位数,标准差,以及样本和人口之间的差异(这非常重要)

  • 分布,以及为什么高斯分布如此重要(中心极限定理)

  • Null假设检验的含义是什么。

  • 什么是变量转换,相关,回归,多变量分析。

  • 什么是贝叶斯统计数据。

  • 绘图方法。



所有这些要点不仅对你作为计算机科学家而且对人类都至关重要。我会举几个例子。



  • 零假设的评估对于测试方法的有效性至关重要。例如,如果一种药物起作用,或者对你的硬件的修复有一个具体的结果,或者只是一个偶然的问题。假设你想提高机器的速度,并改变硬盘。这是否重要?您可以使用新旧硬盘对性能进行采样,并检查差异。即使您发现新磁盘的平均值较低,也不意味着硬盘会产生影响。这里输入Null假设测试,它会给你一个置信区间,而不是一个确定的答案,例如:改变硬盘驱动器的概率有90%对机器性能有显着影响。

  • 相关性很重要,可以确定两个实体是否相似。由于互联网口头禅相关性不是因果关系教导,应该小心谨慎。两个随机变量显示相关性的事实并不意味着一个引起另一个,也不意味着它们与第三个变量(您没有测量)相关。他们可以以同样的方式行事。寻找海盗和全球变暖来理解这一点。相关性报告可能的信号,它不报告发现。

  • 贝叶斯。我们都知道垃圾邮件过滤器。但还有更多。假设你去做体检,结果告诉你患有癌症(我非常希望不会,但这是为了说明一点)。事实是:此时大多数人都会想到我患有癌症。这不是真的。癌症的阳性检测可以将患癌症的可能性从人群的基线(例如,每千人中有8人患有癌症,从空气中挑选出来)转移到更高的值,这不是100%这个数字有多高取决于测试的准确性。如果测试很糟糕,你可能只是假阳性。方法越准确,偏斜越高,但仍然不是100%。
    当然,如果多次独立测试都证实你患有癌症,那么你很可能确实患有癌症,但它仍然不是100%。也许这是99.999%。很多人都不了解贝叶斯统计数据。

  • 绘图方法。这是另一件永远无人看管的事情。如果你无法通过一个简单的情节有效地传达他们的意思,那么分析数据并不意味着什么。根据你想要关注的信息或你拥有的数据类型,你会喜欢xy情节,直方图,小提琴情节或饼图。



现在,让我们回答你的问题。我想我只是简单地过度说明了,但由于我的答案被投票了很多,我觉得如果我能够正确地回答你的问题,就像我的知识允许一样(这是假期,所以我可以尽情享受它)



  编程中有什么问题,
  软件工程和计算机
  科学是统计方法
  适合?我将在哪里得到
  最大的收益?



通常,所有与数据比较有关的事情都涉及不可靠来源的数字(或简化为数字)输入。来自乐器的信号,一堆页面以及它们包含的单词数量。当你获得这些数据,并且必须从一堆中找到一个提炼的答案,那么你需要统计数据。例如,考虑在iphone上执行点击检测的算法。你正在使用颤抖的胖手写笔来指代比手写笔本身小得多的图标。很明显,硬件(电容屏幕)会向你发送一堆关于手指的数据,以及一堆关于随机噪音的数据(空气不知道它是如何工作的。)司机必须从这个混乱中弄清楚并给出你需要(大量)统计数据,你需要(大量)统计数据。



  什么样的统计方法
  我应该花时间学习吗?



我告诉你的那些绰绰有余,也是因为了解它们,你必须经历其他的事情。



  我应该用什么资源来学习
  这个?书籍,论文,网站。 ID
  欣赏每个人的讨论
  书(或其他资源)是关于,和
  为什么它是相关的。



我从标准大学课程中学到的统计数据。我的第一本书是火车残骸书,它非常好。我也试过这本书,专注于R
但它并不特别满足我。你必须知道事情和R才能完成它。



  程序员经常需要处理
  拥有大型文本数据库
  自然语言,并帮助
  分类,分类,搜索和
  否则处理它。什么统计
  技术在这里有用吗?



这取决于您需要使用数据集回答的问题。



  程序员经常被要求
  生产高性能系统
  在负载下很好地扩展。但你不能
  真的谈论性能,除非
  你可以测量它。什么样的
  实验设计和统计
  您需要使用哪些工具才能使用
  结果充满信心地说
  有意义吗?



测量存在很多问题。测量是一种精致而精致的艺术。适当的测量几乎超出人类。事实是,采样会引入偏差,无论是来自采样器,还是来自方法,还是来​​自样本的性质,或来自自然的性质。一个好的采样器知道这些事情,并试图将不必要的偏差减少到随机分布中。


您发布的博客中的示例是相关的。假设您有数据库的启动时间。如果您在该时间内采取绩效措施,您的所有措施都会有偏差。没有统计方法可以告诉你这个。只有你对系统的了解才能。



  通常还有其他问题吗?
  程序员会遇到这样的问题
  受益于统计方法?



每当你有一个数据生成器集合,你就有统计数据,所以科学计算和数据分析显然是一个地方。 Folksonomy和社交网络几乎都是统计数据。甚至stackoverflow在某种意义上也是统计的。答案是高度投票的事实并不意味着它是正确的。这意味着根据独立评估人员统计集合的评估,这是正确的概率很高。这些评估器的行为如何区分stackoverflow,reddit和digg。

其它参考2


我没有太多补充,但恰巧我刚刚开始阅读这本书:DS Sivia和J. Skilling,'数据分析 - 贝叶斯教程',第2版,2006,牛津大学出版社[19]


引起我注意的是序言,作者提到对接受统计学研究的人的共同不满:



  的前言

  
  作为一名本科生,我总能找到
  相比之下,统计学的主题
  神秘。这个话题并不完全
  对我来说是新的,因为我们已经被教过了
  关于概率的一点点
  在高中;例如,我是
  已经熟悉二项式,
  泊松和正态分布。最
  这是有道理的,但似乎只是
  与掷骰子有关,
  翻转硬币,洗牌等等
  上。然而,有抱负的
  成为一名科学家,我真的
  想知道如何分析
  实验数据。因此,我急切地
  期待讲座
  统计
即可。可悲的是,他们很棒
  失望
即可。虽然很多
  测试和程序阐述了
  直觉上合理,
  一些非常不满意的事情
  整个事件:似乎没有
  是任何基本的基本原则!

  因此,关于'概率和...的课程
  统计数据导致不幸
  二分法:概率有意义,
  但这只是一场比赛;统计数据是
  很重要,但令人眼花缭乱
  收集的测试很少
  明显的押韵或理由
。虽然没有
  我很满意这种情况
  搁置主题和
  专注于真正的科学。后
  所有,困境只是一个
  反映我自己的不足之处
  我只需要在工作时就可以了
  时间来真正分析我的数据。

  
  上面的故事不只是我自己的,
  但这是太常见的体验
  许多科学家幸运的是,
  不必像这样
。我们是什么
  我们的大学生没有被告知
  讲座是有一个
  整体的替代方法
  使用的数据分析主题
  只有概率论。 在一个
  感觉,它使主题
  统计数据完全是多余的。在
  另外,它提供了逻辑
  许多人的理由
  流行的统计测试和
  程序,明确表示
  条件和近似值
  隐含地假设使用


  
  本书旨在作为教程
  这个替代贝叶斯的指南
  方法,包括现代
  最大熵等发展。

  
  ...



我希望这本书能够兑现它的承诺。


这里的第一版有几个预览章节,本书采用的认知心理学/人工智能课程,以及同一课程的其他材料。第二作者的相关软件在这里。此处还有来自Google图书的更多扩展预览。[20] [21] [22] [23]

其它参考3


男孩,其中一些答案很好。我来自相同的背景,不得不主要通过书籍和同事的渗透来进入生物统计学。以下是我的建议:



  • 从概率基础开始,包括条件概率,贝叶斯定理,马尔可夫模型和一些基本统计分布。

  • 如果你没有它,可以获得一些线性代数,这样你就不会被矩阵吓跑了。如果你面临着棘手的代数和微积分,那么就要坚持下去并努力完成它。这很值得。

  • 统计理论分为两个阵营,即频率论和贝叶斯论。 Frequentist更老,更坚固。贝叶斯更新,更灵活,更令人兴奋。特别是,马可夫链蒙特卡罗和相关技术可以实现令人兴奋的事情。



在我的领域,pharmacometrics,能够从稀疏和昂贵的数据中提取有意义的结果有很高的回报,因此统计能力非常重要。


补充:以下是一些最喜欢的书籍(不完整列表):



  • 统计发行,第2版,Evans,Hastings和Peacock。它给出了一个非常完整的分布列表,说明它们是如何相关的,如何对它们进行采样和估计。我每天都用它。

  • 矩阵和线性代数,Schneider和Barker。非常好,易于遵循。

  • 贝叶斯统计:简介,第2版,Lee。非常简洁易读。

  • Markov Chain Monte Carlo in Practice,由Gilks​​,Richardson和Spiegelhalter撰写。喜欢这本书,这些是制作WinBugs的人,这是一个了不起的免费软件包。


其它参考4


比统计更有可能,但贝叶斯概率可能非常有用(它支持垃圾邮件过滤器)和IMO更多的软件应该用它来推断用户的习惯。[28]


Head First Statistics是一本学习统计学的优秀书籍(数学家/统计学家告诉我它没有那么多错误,只有一些简单的理论内容)。


我几乎忘了提到:如何用统计学[30]

其它参考5


这是一本优秀的书,网上免费提供:统计学习的元素,由Hastie,Tsibshirani和Freidman撰写。[31]


它涵盖了一系列有用的主题,应该是对机器的一个很好的介绍收益领域。它对过度拟合模型的解释是我在大约20-30本书中看到过的最好的。

其它参考6


好问题!我实际上认为退一步并进入更广阔的视野是值得的。例如。在Zed的咆哮中我喜欢的是接近开头:



  我质疑他们的指标,他们尝试
  用蹩脚的尝试支持它
  统计推理。我真的不能
  因为他们可能会责备他们
  在大学里说那个逻辑和理由
  优于证据和
  观察。



对我来说,这强调了经验主义的必要性。当然,我听到你说,你知道,这就是你描述的原因。嗯,是的,但确实有更多。 Zed在关于平均值的咆哮中回到了这一点,我认为这是正确的:显示分布,绘制数据,查看尾部行为。


所以我想要的是,答案不是在一本书中,而是以方式思考问题,将世界视为概率。


而且我也发现R帮助一吨思考和编程数据。 [32]

其它参考7


关于编程的一个很好的资源是Russell和Norvig的人工智能:现代方法。它可以是理解基于统计的机器学习技术的真正有用的资源。

其它参考8


多棒的线程。问题本身和答案中有很多好的信息,但我真的很惊讶没有人提到过编程集体智能这本书。


如果你是这个学科的新手(比如我),并且想要将机器学习和统计理论付诸实践,这是我所知道的最好的书。



  这本书解释说:

  
  

      
  • 协作过滤技术,使在线零售商能够
      推荐产品或媒体

  •   
  • 聚类以检测大型相似物品组的方法
      数据集

  •   
  • 搜索引擎功能 - 抓取工具,索引器,查询引擎和
      PageRank算法

  •   
  • 搜索数百万种可能解决方案的优化算法
      问题并选择最好的一个

  •   
  • 贝叶斯过滤,用于垃圾邮件过滤器,用于分类文档
      基于单词类型和其他功能

  •   
  • 使用决策树不仅可以进行预测,还可以模拟方式
      做出决定

  •   
  • 预测数值而不是分类来建立价格
      模特

  •   
  • 支持矢量机器以匹配在线交友网站中的人

  •   
  • 非负矩阵分解,以找到独立的特征
      adataset

  •   
  • 解决问题的智慧 - 计算机如何发展它
      通过改进自己的代码技巧
      更多它玩游戏

  •   



除此之外,TED就为什么每个人都应该学习统计数据进行了很好的讨论。[34]

其它参考9


我希望Shaw先生和其他所有人都可以,如果我们大多数程序员根本不需要了解统计数据,概率或数学知识。


尽管数学成绩优异,但这是我过去30年的经历。


所以,也许这个问题的标题应该是,如果程序员需要了解统计数据,那么程序员应该知道哪些统计数据?

其它参考10


我很惊讶没有人提到对图形的敏锐理解对于良好的统计实践至关重要。机器学习和贝叶斯分析都很棒(如果你想要一个正式但平易近人且适用于贝叶斯的介绍,请试试Gelman的书),但你可以通过非常好的可视化来理解问题。 Tufte的经典是一个很好的起点,图形书的经典符号学和语法值得一读。最后,看一下R ggplot2包,以便开始实现复杂的图形创意。[35]]] [36]

其它参考11


也许看一下(免费)书,Think Stats:程序员的概率和统计。虽然它使用Python来演示统计概念,但任何具有其他编程语言经验的人都应该能够遵循。[40]


网站描述:



  Think Stats是一个介绍
  Python的概率和统计
  程序员。

  
  如果你有Python的基本技能,
  你可以用它们来学习概念
  概率和统计。这个新的
  本书强调简单的技巧
  可以用来探索真实的数据集和
  回答有趣的统计
  的问题。


其它参考12


它只取决于您正在处理的区域。例如,如果您正在处理涉及采样和数据分析的应用程序,则分布(Normal,t和Chi Square)等区域将非常有用。如果您的应用程序类似于预测软件,您可能需要了解有关泊松等分布的知识。


如果您的工具将根据以前的数据做出一些决定,那么均值,方差和标准差的概念可能会有用。 (使用假设检验)


更新:大多数大学提供统计学课程。我已经看过一些可以被认为很短但仍然很好的讲义。例子[41]

其它参考13


我的简短回答是:潜在变量统计,包括结构方程建模和有限混合建模(潜类/轮廓)。这些涵盖了大量的统计模型。

其它参考14


您可以使用均值和标准偏差做很多事情。


这完全取决于你将要解决的问题。

其它参考15


我会说全部统计(2004年)中的内容,拉里·沃瑟曼就是这样。它还具有提出统计与计算机科学之间差距的想法。


希望它有所帮助。

其它参考16


令人惊讶的是,没有人提到过Bootstrap方法,主成分分析或LASSO算法。它们包括数据简化,模拟和探索性数据分析,仅举几例。