performance - 程序员(或计算机科学家)应该知道什么统计数据?




9 Answers

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

  1. 不要学习频率主义假设检验 虽然我的大部分工作都是以这种模式完成的,但它并不符合业务或数据挖掘的需求。 科学家们一般都有特定的假设,并且可能希望衡量这样的可能性,即假设他们的假设不是真的,数据会像现在这样极端。 这很少是计算机科学家需要的答案。

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

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

既然你谈到了大量变量的大型数据库,这里有几个算法在这个领域派上用场。

  • adaboost :如果你有很多蹩脚的分类器,并且想要制作一个好的分类器。 (另请参阅logit增强)
  • 支持向量机 :强大而灵活的分类器。 可以学习非线性模式(如果您想对其进行挑剔,可以在非线性内核空间中使用线性模型)。
  • k-nearest neighbor :一个简单而强大的算法。 它不能很好地扩展,但是有近似的最近邻居选择,它们并不那么病态。
  • CART :该算法根据许多预测变量对数据进行分区。 如果存在可变交互作用,或者存在一个非常好的预测器,它只适用于数据的一个子集,那就特别好。
  • 最小角度回归 :如果您试图预测的值是连续的,并且您有大量数据和大量预测变量。

这绝不是完整的,但应该给你一个很好的起点。 关于这个主题的一本非常好的书籍是Duda,Hart,Stork: Pattern Classification

另外,统计的很大一部分是描述性可视化和分析。 这些对程序员特别有用,因为他们允许他/她将信息传回给用户。 在R中, ggplot2是我创建可视化的首选包。 在描述性分析方面(对文本分析有用)是多维尺度 ,可以给出非空间数据的空间解释(例如参议员的意识形态http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.aoas/1223908041 )。

我是一名有数学和计算机科学背景的程序员。 我研究过本科水平的可计算性,图论,线性代数,抽象代数,算法和一些概率和统计(通过几个CS类)。

不过,我觉得我对统计数据不够了解。 统计数据在计算中越来越有用,统计自然语言处理有助于推动Google搜索和机器翻译的一些算法,并需要对硬件,软件和网络进行性能分析,这些分析需要合理的统计基础,并且生物信息学领域每天更普遍。

我已经阅读了关于“Google如何使用if语句使用贝叶斯过滤的方式” ,并且我知道甚至相当朴素,简单的统计方法解决Paul Graham的“垃圾邮件更好的贝叶斯过滤 计划”的问题的力量,我想超越这个。

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

所以我想知道该从哪里出发。 学什么,在哪里学习。 特别是,我想知道:

  1. 编程,软件工程和计算机科学中的哪些问题是非常适合的统计方法? 我会在哪里获得最大的回报?
  2. 我应该花些时间学习什么样的统计方法?
  3. 我应该使用什么资源来学习? 书籍,论文,网站。 我希望能够讨论每本书(或其他资源)的内容,以及它为什么相关。

为了澄清我所寻找的内容,我对程序员通常需要处理哪些问题可以从统计方法中受益以及哪些类型的统计工具可能有用感兴趣。 例如:

  • 程序员经常需要处理大型自然语言文本数据库,并帮助分类,分类,搜索和处理它。 什么统计技术在这里有用?
  • 更一般地说,人工智能已经从离散的符号方法转向统计技术。 什么样的统计人工智能方法现在可以为工作程序员提供最多的东西(而不是正在进行的研究,可能会或可能不会提供具体的结果)?
  • 程序员经常被要求生产高性能的系统,在负载下可以很好地扩展。 但除非你能衡量它,否则你无法真正谈论性能。 你需要用什么样的实验设计和统计工具才能够自信地说出结果是有意义的?
  • 物理系统的模拟,例如计算机图形学中,经常涉及随机方法。
  • 程序员通常遇到的其他问题是否会受益于统计方法?



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

引起我注意的是前言,作者提到对那些接受统计学研究的人的普遍不满:

前言

作为一名大学生,我总是发现统计学的主题相当神秘。 这个话题对我来说并不是全新的,因为我们早在高中时就已经对一些概率进行了教育; 例如,我已经熟悉二项式,泊松分布和正态分布。 这大部分是有道理的,但似乎只涉及掷骰子,掷硬币,洗牌等等。 然而,有志成为科学家,我真正想知道的是如何分析实验数据。 因此,我急切地期待着统计讲座 。 可悲的是,他们非常失望 。 尽管所阐述的许多测试和程序在直觉上是合理的, 但整件事情却令人不满意:似乎没有任何基本的基本原则! 因此,“概率和统计学”课程导致了一种不幸的两分法: 概率有道理,但仅仅是一种游戏; 统计数据很重要,但它是一个令人困惑的测试集合,没有明显的韵律或理由 。 虽然对这种情况不满意,但我决定搁置这个问题,专注于真正的科学。 毕竟,困境只是我自己的不足之处的反映,当真正分析我的数据的时候,我只需要努力。

上面的故事不仅仅是我自己的,而且是许多科学家的常见经历。 幸运的是, 它不一定要这样 。 在我们的本科讲座中没有告诉我们的是,对于仅使用概率论的数据分析的整个主题,存在另一种方法。 从某种意义上说,它使得统计学的话题完全是多余的。 另一方面,它为许多流行的统计测试和程序提供了合理的理由,明确了在其使用中隐含假定的条件和近似值

本书旨在成为这种替代贝叶斯方法的教程指南,其中包括最大熵等现代开发。

...

我希望这本书能够保持其承诺。

本书第一版有几个预览章节,从采用本书的认知心理学/ AI课程以及本课程的其他教材。 第二作者here相关软件。 这也是Google图书here的更多扩展预览。




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

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

我几乎忘了提及: 如何用统计数据来说谎




这是一本很好的书,可以在网上免费获得:Hastie,Tsibshirani和Freidman的“统计学习的元素”

它涵盖了一系列有用的主题,应该是对机器学习领域的一个很好的介绍。 这是对过度拟合模型的解释,是我见过的20-30本我读过的书中最好的。




多么伟大的线程。 在问题本身和答案中有很多很好的信息,但我真的很惊讶没有人提到编程集体智慧书。

如果你是这个学科的新手(像我),并且希望将机器学习和统计理论付诸实践,那么这是我认识的最好的书。

本书解释说:

  • 协作过滤技术使在线零售商能够推荐产品或媒体
  • 聚类方法可以检测大型数据集中类似项目的组
  • 搜索引擎功能 - 搜寻器,索引器,查询引擎和PageRank算法
  • 优化算法可以搜索数百万种可能的解决方案并选择最佳的解决方案
  • 贝叶斯过滤,用于垃圾邮件过滤器,用于根据单词类型和其他功能对文档进行分类

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

  • 预测数值而不是分类来构建价格模型
  • 支持矢量机器,以匹配在线交友网站的人
  • 非负矩阵分解以发现adataset中的独立特征
  • 不断发展的问题解决智能 - 计算机如何通过改进自己的代码来发展自己的技能,游戏越多

除此之外, 关于TED为什么每个人都应该学习统计数据的话题都有很多




我很惊讶没有人提到对图形的敏锐理解对于良好的统计实践至关重要。 机器学习和贝叶斯分析非常棒(如果你想对贝叶斯进行正式但平易近人的应用介绍,请尝试Gelman的书 ),但是你可以通过非常好的可视化理解一个问题。 Tufte的经典是一个开始的好地方,图形书籍的经典semiology语法值得一读。 最后,看一看R ggplot2软件包 ,以获得一个简单的方法来开始实现复杂的图形思想。




它只取决于你正在从事的领域。例如,如果你正在处理涉及抽样和数据分析的应用程序,分布(Normal,t和Chi Square)等领域将会很有用。 如果你的应用程序像预测软件那样,你可能需要关于像poisson这样的发行版的知识。

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

更新:大多数大学提供统计课程。 我看过一些可以认为简短但仍然很好的讲义。 Example




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

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




令人惊讶的是,没有人提到Bootstrap方法,主成分分析或LASSO算法。 它们涵盖了数据简化,模拟和探索性数据分析等等。




Related