【精通数据科学】两个流派

这本书视图结合统计学和机器学习来更加生动形象说明这两个流派之间的相似与差异。


更新历史

  • 2020.02.18:重新上线
  • 2019.07.26:完成阅读和读后感
  • 2019.03.27:开始阅读

读后感

这本书视图结合统计学和机器学习来更加生动形象说明这两个流派之间的相似与差异,但是在我看来这两个流派本质上不太兼容,阅读起来的体验就不是特别好。另外就是实战的篇幅太小,理论的东西反而没有什么特别新奇的。

阅读笔记

第 1 章 数据科学简述

The purpose of computing is insight, not numbers. – Richar Hamming

数据科学在工程上的挑战可以大致分为 3 类:特征提取、矩阵运算和分布式机器学习

数据科学对模型搭建的要求也可以总结为 3 点:模型预测效果好、模型参数是稳定且“正确”的、模型结果容易解释

  • 模型假设就像模型的阿喀琉斯之踵
  • 数据模型:data model,即传统的统计模型。假设数据的产生过程是已知的,可以通过模型去理解整个过程。通常具有很好的可解释性,分析其稳定性的数学工具也很多。但是实际生产中单独使用效果不好
  • 算法模型:algorithm model,即机器学习。假设数据的产生过程是复杂且位置的。可解释性较差,且模型稳定性的分析方法也不多。但实际生产中的效果可以很好。

第 2 章 Python 安装与简介

If you are immune to boredom, there is literally nothing you cannot accomplish. – David Foster Wallace

数据科学 = Python + Linux + 统计或机器学习

数据科学家 = 懂数学的人力代码写得最溜的,写代码的人力数学学得最好的

最常用的第三方库:

  • 数据预处理:NumPy, SciPy, pandas
  • 数据可视化:Matplotlib
  • 标准模型库:scikit-learn, Statsmodels, Spark ML, TensorFlow

本书用的是 python2,可以进入对应的虚拟环境

第 3 章 数学基础

If people do not believe that mathematics is simple, it is only because the do not realize how complicated life is. – John von Neumann

这部分的内容暂时略过,详情可以参考本章小结中的文献,都是不错的书

第 4 章 线性回归:模型之母

道生一,一生二,二生三,三生万物

评估模型的方法:

  • 预测的角度:最小化均方差 MSE
  • 可解释性:未被模型解释的成本(真实成本 - 模型预测的成本)占成本变化的比例越小越好,这里用决定系数(coeeficient of determination, $R^2$)来解释,其中 $SS_{tot}$ 是因变量的方差(真实成本与平均值的差),$SS_{reg}$ 是自变量解释的方差(模型预测成本与平均值的方差,这里 $R^2=SS_{reg} / SS_{tot}$。即决定系数等于因变量的方差中可由自变量解释的比例,因此可以用来判断模型的解释力。

过拟合问题:

  • 当模型太过简单时,无论是训练误差还是测试误差都很高,太简单的模型无法捕捉数据里的复杂关系
  • 当模型太过复杂时,训练误差很小,但测试误差相当高,就是过度拟合

过拟合解法:

  • 机器学习的方案:惩罚项
  • 统计学的方案:假设检验

Python 内部模型持久化可以用 pickle,如果是要跟 Java 交互,就需要用 PMML。

第 5 章 逻辑回归:隐藏因子

To be, or not to be, that is the question. – William Shakespeare

特点:

  • 模型简单:建模思路清晰,容易理解与掌握
  • 适用范围广:模型的假设容易被满足,适用的场景很多
  • 模型可解释性强:模型参数有对应的实际意义,而且参数的取值直接反应特征的强弱,具有强解释性
  • 结果可靠性强:有很好地数学工具对模型参数和模型结果做分析,比如稳定性分析等,这使得模型结果的可信度很高

Recall 与 Precision

  • 查全率 Recall = TP / (TP + FN)
  • 查准率 Precision = TP / (TP + FP)
  • 真阳性率 TPR(True Positive Rate) = TP / (TP + FN) = Recall,值越高越好
  • 伪阳性率 FPR(False Positive Rate) = FP / (FP + TN),值越低越好

ROC 与 AUC

  • ROC 空间 = FPR 为横轴,TPR 为纵轴
    • 离左上角越近越好
    • 将模型的阈值重 0 缓慢增加到 1,并把每个阈值对应的预测结果记录在图上,就可以得到 ROC 曲线
  • AUC 是 ROC 的曲线下面积,被认为是更加全面的模型评估指标

非均衡数据集

  • 准确度悖论(Accuracy Paradox):面对非均衡数据集时,准确度这个评估指标会使模型严重偏向占比更多地类别,导致模型的预测功能失效(但 AUC 可以保持稳定)
  • 最常见最方便的解决方案是修改损失函数里不同类别的权重。更多请参考 Learning from Imbalanced Data

第 6 章 工程实现:计算机是怎么算的

Ideas are cheap; execution is everything. – Chris Sacca

主要是介绍梯度下降,具体参考 Tensorflow 代码部分

第 7 章 计量经济学得启示:他山之石

他山之石,可以攻玉。 – 《诗经·小雅·鹤鸣》

计量经济学是验证经济学理论的主要手段,要求模型有效、稳定和可解释。