汇总和分析数据的最佳方法


13

最近刚开始自学机器学习和数据分析,我发现自己对创建和查询大量数据的需求感到困惑。我想对自己在职业和个人生活中积累的数据进行分析,但是我不确定执行以下操作的最佳方法:

  1. 我应该如何存储这些数据?Excel?SQL???

  2. 初学者开始尝试分析这些数据的好方法是什么?我是一名专业的计算机程序员,所以复杂性不在于编写程序,而是或多或少地针对数据分析领域。

编辑:为我的含糊而道歉,当您第一次开始学习某些东西时,很难知道您不知道的内容,是吗?;)

话虽如此,我的目的是将其应用于两个主要主题:

  1. 软件团队指标(考虑敏捷速度,量化风险,在x个故事点数的情况下成功完成迭代的可能性)

  2. 机器学习(例如,在给定的一组模块中发生了系统异常),一个模块将在现场抛出异常的可能性是多少,代价是多少,数据可以告诉我哪些关键模块需要改进,从而获得最好的解决方案,预测用户接下来要使用哪个系统部分以开始加载数据,等等)。


对我来说这似乎很模糊。什么样的数据,什么样的分析?另外,如果它是主观的,则应该是社区Wiki。
Shane

Answers:


19

如果您有大量数据集(使Excel或Notepad加载缓慢的数据集),那么使用数据库是一个不错的方法。Postgres是开源的,而且制作精良,可以很容易地与JMP,SPSS和其他程序连接。在这种情况下,您可能需要采样。您不必标准化数据库中的数据。否则,CSV是共享友好的。

如果您有100M +行,请考虑使用Apache Hive。

在分析方面,这里有一些起点:

描述一个变量:

  • 直方图
  • 摘要统计信息(平均值,范围,标准偏差,最小值,最大值等)
  • 有离群值吗?(大于四分位数间距的1.5倍)
  • 它遵循什么样的分布?(正常等)

描述变量之间的关系:

  • 散点图
  • 相关性
  • 离群值?查看马哈拉诺比斯距离

  • 分类的马赛克图

  • 列联表

预测实数(如价格):回归

  • OLS回归或机器学习回归技术

  • 当人类可以理解用于预测的技术时,这称为建模。例如,神经网络可以做出预测,但通常是无法理解的。您也可以使用回归来找到关键绩效指标。

预测班级成员资格或班级成员资格的概率(如通过/失败):分类

  • 逻辑回归或机器学习技术,例如SVM

将观察结果归入“自然”组:聚类

  • 通常,通过计算它们之间的距离可以找到“相似”的观察结果。

将属性归入“自然”组:分解

  • 以及其他矩阵运算,例如PCA,NMF

量化风险 =标准差,或“不良事件”发生的时间比例x不良程度

给定x个故事点数,成功完成迭代的可能性 = Logistic回归

祝好运!


太棒了 非常感谢您的回复。您给了我一个很好的起点。您推荐的所有书籍,因为您似乎“了解”我的位置。
贾斯汀·波佐尼尔

不客气 书籍:以普通英语开始的统计资料。之后用头发进行多元数据分析。这些都是很好的网络资源: itl.nist.gov/div898/handbookstatsoft.com/textbook
尼尔·麦圭根

4

如果您正在查看系统故障,则可能对以下论文感兴趣,该论文采用eBay上的机器学习技术进行故障诊断。它可以使您了解要收集什么样的数据,或者一个团队如何处理相似领域中的特定问题。

如果您只是入门,RapidMinerOrange这样的东西可能是一个很好的软件系统,可以很快地开始处理您的数据。它们都可以访问多种格式的数据(文件csv,数据库等)。


3

您的问题如此广泛,答案是:它取决于。不过,为了给出一些更有用的答案,我将指出我认为在研究中很常见的东西。

数据存储通常是在文本文件中完成的。在进行统计分析时,您通常会处理一种类型的向量。可以将其视为表格并以csv格式编写。Thin通常以纯文本格式存储的原因是,因为每个工具都可以读取它们,并且很容易对其进行转换。

关于分析,这很难具体说明。如果是二维,则进行散点图绘制。如果是高维,则执行PCA并查看第一个主要成分在哪里,以发现重要的变量。如果有时间数据,则将其绘制出来。这是如此普遍,以至于有用时,您必须更好地指示数据是什么。


彼得,你击败了我!我完全同意以文本形式存储数据,尽管根据大小(亿亿obs),可能有必要进入可简化地图的数据库(例如Pig,Cassandra或NoSQL选项之一)。
DrewConway

哦,好有趣!因此,只需获取每个变量的数据,然后将其以行列格式进行布局,然后进行数字运算即可?有什么我应该看的工具,或者我应该只是在编程一些东西?
贾斯汀·波佐尼尔

R是一个非常广泛(免费)的统计工具箱/编程语言/库。我最喜欢的东西是Python与SciPy / NumPy
Peter Smit

0

ROOT真正擅长的一件事是存储大量数据。ROOT是用于粒子物理学的C ++库;它还带有Ruby和Python绑定,因此,当您发现ROOT提供了许多现成的可能性时,您可以使用这些语言的包(例如NumPy或Scipy)来分析数据。

ROOT文件格式可以存储树或元组,并且可以顺序读取条目,因此您无需同时将所有数据保留在内存中。这样就可以分析PB级的数据,而您不想在Excel或R中尝试这种操作。

可以从此处访问 ROOT I / O文档。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.