论坛与新闻
论坛与新闻

数据科学家应该拥有的好习惯(1)

数据科学家应该拥有的好习惯(一)

(2017年1月5日)

1. 分析数据前,一定要尽可能多的进行数据可视化! exploratory data analysis(探索性数据分析)

我上过的几乎所有的应用性的统计课程上的老师都会强调这一点。这个习惯对于数据科学家、统计学家来说估计是最最实用的。

在实际的数据分析过程中,数据可视化可以揭示很多in sights:从选择什么样的模型,选择哪些feature建模,到如何分析结果,解释结果等等。

给一个很著名的例子, Anscombe's quartet (安斯库姆四重奏):这个例子包含四组数据。每组数据有11个(x, y)数据样本点。

四组数据样本里x的均值方差全相等,y的均值方差基本相等,x与y的相关系数也很接近。

导致的结果是,四组数据线性回归的结果基本一样。但是,这四组数据本身差别很大。如下图。

如果不做可视化,简单跑一个线性回归,我们只能得到同样的回归线。

数据可视化后,很直观的,左上图是传统的线性回归;右上图需要high-order nonlinear term;左下图x和y是线性关系,但是有outlier;右下图x和y没有线性关系,也有outlier, etc.

每一个数据科学家都应该熟悉各种图的画法,更重要的是,不同的图如何反映不同的信息以及面对不同的数据类型时,应该选择哪种图才能最好的揭示数据里蕴含的信息。

为此,强烈推荐关于R里ggplot包的教程:ggplot2 - Elegant Graphics for Data Analysis

当然另一方面,如果数据量太大维度太高,数据可视化做起来就比较困难。这时候就需要一些经验技巧了。

2. 跑完程序得到模型结果时,一定提醒自己:任务只完成50%,分析,验证,解释结果才是根本

很多时候,我们以为写完code跑完程序就完事了。能做到这一步只能算是一个合格的data analyst。这离数据科学家,统计学家还差远了。

分析,验证,解释结果才是根本! 这个过程更需要data sense, domain knowledge, and statistical expertise.

在拿到结果的时候,一定要多问自己为什么。

模型assumptions是否满足?结果是否make sense?能否解答research question?

特别当结果不符合expectation时,要么有新发现,要么有错误!如果有错,错在哪里?

如果模型假设不成立,如何修正?是否有outliers,如何处理?

或有missing values,missing的机制是啥样的(missing at random, completely at random, or NOT at random)?

是否有multicollinearity?

数据收集是否有bias (如selection bias)?

建模是否忽略了confounding factors (Simpson's paradox)?

3. 养成story-telling(讲故事)的习惯

把分析结果跟你的boss或者collaborator讲!务必让他们明白!这个太需要技巧了, 特别是当你的collaborator是layperson的时候。

不会说只能等着被虐,哪怕analysis做的再好!

(未完待续)

(摘编自 微信公众号 数据分析 \ 编辑严进军)