购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4
工业大数据分析师的算法修养

工业大数据分析师直接面临工业一线问题,除了坚实的数据分析算法/工具、软件开发基础、大数据平台基础、工程基础(如理论力学、材料力学、热力学、电磁理论、控制理论、信号处理等)等技术层面的知识外,还需要有一定业务/工业系统分析能力和工业领域知识。对于从事第三方服务的工业数据分析师,还需要良好的学习能力、宽阔的行业知识结构和丰富的实践经验。鉴于本书的主题,这里仅仅讨论数据分析算法层面。

1.4.1 分析算法理解的维度与路径

一个算法有很多不同维度,典型维度有4个,见表1-5,只有把这些维度都熟悉了,才算熟练掌握了一个算法。

表1-5 分析算法理解的4个维度

不同目的对上面4个维度的侧重点不同。一个算法研究者,要更关注既有算法提出的动机、问题的形式化方法和可能改进点,有了这种思想层面的理解,才可能发展一些新的有用的算法;而教育工作者,除了大概思路外,关注的更多是理论推导;作为一个工程分析应用人员,除了关注应用外,要更关心常见算法的整体概念框架(这样有选择的自由)、算法的适用范围、不同算法组合套路、不同算法包的对比等,在对外交流时,也会关注算法的形象化解释(让其他领域的人快速理解)。

对算法的理解在单个维度可能会遇到瓶颈,这时候不同算法、不同维度的交叉类比可能非常有帮助,用其他类似或相关算法去理解新算法,用算法的对比驱动更深层次的理解,通过阅读源代码(很多优秀算法包)去理解算法的数学公式,通过简单算例对比去理解算法的工作机制。对于工业分析师来说,可以先快速入门,扩大视野,形成直觉研判,然后再分而治之去深入每个算法的理论推导,采用螺旋上升的方式,通过如图1-13所示的交叉印证与检验,以及适度的追求技巧,让数据分析工作充满乐趣,驱动更多更高效率的学习。

图1-13 不同层面问题的交叉理解

1.4.2 必读图书

本节只列举通用类的图书,特定领域(如时序数据挖掘)的图书或论文将在具体章节给出。按照算法、工具、应用案例三类,给出一些推荐书目,见表1-6。

表1-6 数据分析图书推荐

对大部分工程应用,有算法原理的基本了解就够了,但算法研究者,应知其所以然。EoSL( Element of Statistical Learning )、PRML( Pattern Recognition&Machine Learning )、MLAP( Machine Learning : A Probabilistic Perspective )、 Pattern Classification (中译本《模式分类》)是公认的四本经典图书。EoSL是斯坦福大学统计系三位统计大家的著作,各种算法的讲解从基本思想娓娓道来,辅以浅显易懂的图形展示,公式简洁明了,为了逻辑的连续性,很多定理证明简单略过,给人以信手拈来的感觉,值得数据分析师反复研读。EoSL读起来很顺畅,但要完全读懂对读者的数学素养要求还挺高。为了进一步降低要求,ISL( An Introduction to Statistical Learning with Applications in R )继承了EoSL的风格,但侧重算法应用,更加适合入门。PRML和MLAP是从贝叶斯角度论述机器学习的经典之作,相对于EoSL侧重算法思想演化的讨论,PRML更侧重公式推导,读起来更辛苦。MLAP在概念的图示化方面做得很好,有更直观的理解。《模式分类》中的图比较多,入门要求不高,这本书的第1版于1973年出版,第2版于2000年出版,单看这两个时间,大家就知道什么叫经典。深度学习方面当然是Goodfellow、Bengio和Courville三人合写的 Deep Learning 那本书,把不同深度学习网络背后的基本思想介绍得非常透彻。在统计算法方面,Larry Wassermand的两本书 All of Statistics : A Concise Course in Statistical Inference All of Nonparametric Statistics 简洁明了,重要概念和算法背后的思考及应用前提都介绍得非常清楚。MASS这本书与R语言的MASS包对应,是理解各种统计算法的好书。Givens和Hoeting的《计算统计(第2版)》直观解释了很多统计算法的计算过程。

在算法快速入门上,除了ISL,还有 Machine Learning Refined Introduction to Machine Learning 等图书,国内有韩家炜的中译本《数据挖掘概念与技术》、周志华的《机器学习》和李航的《统计学习方法》(第2版),都很系统全面地介绍了常用的算法。另外,Morgan&Claypool Publisher的 Synthesis Lectures on Artificial Intelligence&Machine Learning 从书中的发展前沿综述对全面了解新领域有很大帮助。

还有一类算法书值得读者翻阅,一种就是日本学者的《图解机器学习》《图解深度学习》等书,能以最简单的方式介绍各种算法,需要的功力比一本算法教材要深得多。国内出版的《百面机器学习》以面试问答的形式,让大家从反向的角度将算法知识再梳理一遍。另外,NIST的 Engineering Statistics Handbook Data Mining and Knowledge Discovery Handbook 这两本手册分别将统计、数据挖掘算法框架系统性总结了一遍,能够帮助读者建立起概念的框架。

在工具软件领域,O’Reilly、CRC、Manning等知名出版社出版了很多经典的Cookbook、In Action之类的经典图书,也有对应的中译本,是掌握分析工具的好书。Springer的User R系列丛书对不同主题的R语言应用有详细的介绍。《应用预测建模》对于R语言caret包,系统介绍了回归、分类建模中的各个算法。对于Python,scikit-learn官网上的大量例子是了解各种算法的好起点。最后, Journal of Statistical Software 杂志是讨论各种统计分析软件包的好地方,很多优秀R语言包都是在这个杂志上介绍的。

很多工具书都带有一些小的例子,但 Data Mining with R : Learning with Case Studies 有更加系统的例子,端到端地展示了建模过程。

本节仅简单列举了部分比较好的图书,还有很多精彩图书将在具体章节中给出。另外,更多优秀的图书和论文也在不断涌现。但无论如何发展,很多基本思想是不变的(将在下节讨论),而这样的思想通常出现在算法发明人和技术大家的专著和论文中,特别是外文经典书籍、期刊论文(例如 Annals of Statistics 期刊有很多经典统计学习算法原作者的论文和权威专家点评),希望大家尽可能多读读这些经典,获得的将不仅仅是知识和技能,而是这些算法背后的思考、深入浅出的解释以及算法适用范围的讨论。

1.4.3 分析算法背后的朴素思想

数据分析算法可以从优化角度去看,也可以从概率的角度去看。从优化的角度,数据分析算法的目的是在一定的模型结构约束(例如线性模型、神经网络结构模型)下,最大化某个性能指标或极小化某个惩罚函数 [38] ;从概率的角度,因变量的均值和方差仍然用确定性函数关系(参数化)表示,概率分布描述了这些关系刻画的不确定性和参数的先验分布,目标是极大化似然度、后验概率分布,获得参数的点/区间估计,或者概率估计(也称为贝叶斯估计)。

一个问题的定义有很多方式:①指令式(Imperative),通过算法逻辑详细定义求解过程,很多启发式规则问题都属于这一类;②声明式(Declarative),将问题建模与求解引擎独立开来,用户只需要建模,求解过程交给算法引擎,整数规划和机器学习算法都属于这一类;③激励式(Incentive),用奖励或惩罚的方式获得期望的行为结果(隐性结构),而不是强行约束的方式。例如,深度学习中GAN(Generative Adversarial Network,生成对抗网络)、DBM(Deep Belief Network,深度信念网络)都是利用损失函数的方式,让学习出来(或降维后)的向量和原始向量接近(偏差部分要么认为是噪声,要么是模型拟合误差),或者保持某种性质(例如距离不变性,样本间在原始高维空间的距离与在变换后低维空间的距离不变,或保持有序性)。

惩罚函数包括拟合的损失函数(拟合误差、似然度),以及模型结构的复杂度(插值、稀疏)。不同的损失函数代表着对不同误差的容忍程度。例如,在回归问题中,相对常用的均方误差,绝对值误差意味着对大的偏差容忍度高一些,另外,坡道(Ramp)损失函数对误差较大的区域进行截断,使得较大的误差不会大程度地影响整个误差函数,这样出来的模型鲁棒性更强些。

模型结构可以是因变量与预测量(自变量)间的全局关系,也可以通过直接定义相邻预测变量间的相似度(核函数)形成,可以说是隐性的局部结构。距离上可以采用欧氏距离,也可以采用其他距离,不同距离的选择隐含着某种特性。例如,两个时序向量采用余弦相似度距离主要关心相位同步性,幅度不重要;采用DTW(Dynamic Time Wrapping,动态时间规整)距离则允许局部拉伸压缩,相位不重要,幅度仍然重要。模型结构的选择取决于业务问题中的不变性(Invariant)。例如,图像分类结果通常应该是关于位移、旋转、放大/缩小不变的。也就说,一只猫的图片,无论猫做什么位移、旋转、放大/缩小,研判结果都应该是一样的,CNN(Convolutional Neural Network,卷积神经网络)模型结构中的池化(不论在什么位置)、多层次卷积(对应放大或缩小,也对应不同层面特征的提取和旋转)可能很好地满足这些不变性的要求。

模型的求解算法分为以下几类:①解析表达式(包括矩阵计算),如线性回归模型;②存在明确梯度甚至Hessian矩阵,可以通过梯度算法收敛;③变量空间上的分而治之,例如决策树模型等;④多个变量间的迭代求解,先固定一部分变量,利用性质定理或局部优化算法,求解剩余变量(局部优化解),然后再固定这些剩余变量,求解原来的部分变量,例如EM聚类、K-means算法等;⑤转化为典型范式的模型,特别是在整数规划上,存在很多模型范式,该范式下存在很多高效的算法。有时候可以通过增加参数,将非线性整数优化模型转化为整数规划模型,借用通用高效的引擎求解。

任何模型一定是简化的,不要为了细枝末节的因素,让模型过度复杂。要考虑模型的可解性,利用其性质定理缩小搜索范围,或者采用梯度信息指示搜索方向,或者采用分而治之(divide-conquer)策略,将一个复杂全局问题分解为简单的子空间求解问题。《图解机器学习》的读者可能都会感觉到:最小二乘法和线性模型可以解释神经网络、支持向量机等很多复杂模型。

很多工科背景人更相信确定性关系,对概率性关系常常持有怀疑态度。这个思维定式需要转变。首先,概率是一种关系描述方式,很多关系天然是随机的,例如,一个单词的音频中,音素的持续时间和停顿时长都是随机的,不同人不同,同一个人两次说话都不可能完全相同,但总体上有一定规律,这样的规律用概率模型去描述比确定性模型或规则描述更合适。其实,概率可以近似看作一种研判的“置信度”,很多问题的研判本身也不是非黑即白的,存在模糊地带。其次,很多过程本质是确定的,但结果对模型参数、初始状态的敏感度太高(学术上说的混沌系统),对模型参数、初始状态的精确估算不可能或不经济,这时候将模型简化为一个概率模型也许更实际。例如,抛硬币看落地是正面、反面,在不存在空气扰动、地面是平整且摩擦系数均匀的假设下,这个过程可以建模为一个常微分方程 [39] ,结果由硬币的质量分布、抛出时的初始状态完全确定,但结果对参数和初始状态的敏感度太高,还不如通过多次观察,建立一个概率分布模型更直接。

1.4.4 工程化思维

工业大数据分析项目是工程项目,需要在严谨与实用之间均衡。需要注意几个工程性原则。

1.实用主义与全局视野

尽可能抓住主要矛盾和核心要素,不要过分纠结细节,形成相对精准的直觉判断力,对工作的侧重点有一个合理的安排。在建模时,在保证基本面的情况下,尽量用简单的模型,特别是可解释性强、可操作性强的模型。为了细微的性能提升,采用高复杂度的模型不是一个好习惯。尽量利用领域专家的先验信息,而不是从零开始挖掘。

在数据分析中,注意迭代速度,通过迭代,将领域专家、业务负责人紧密融入项目中。特别是第一次数据探索的时候,对于数据质量问题,做到清楚基本面,不要在细节上花太多时间(例如,缺失数据用非常严谨的态度去修正)。第一次探索要的是快速掌握基本面,找出具体问题请教领域专家,在模型可能精度和适用范围的研判基础上,与业务负责人开始探讨,这样数据分析师也可能更深入地了解领域,同时让各方都有个正确的期望。在迭代中,不断提高数据处理和模型的严谨程度。

2.系统化思维与主动思考

分析课题不是封闭的考题,数据分析师要有主动思考的习惯,不要盲信他人圈定的范围,使用数据集的维度可以扩充,甚至要解决的问题也是可以重新定义的。

对业务问题最好有个层次化的分解(可以在推进过程中不断优化),放在业务上下文去思考,这样容易建立起项目团队的共同的理解,数据分析师不要变成被动响应需求的“报表师”。另外,要注意文档的逻辑性,总结文档是一段工作的归纳,不是数据探索过程的流水账。

3.大胆尝试,小心求证

保持必要的好奇心,把所有的想法和假设都记录下来并进行检验,这样才可能在现有领域专家工作成果的基础上更进一步。对于分析结果,坚持因果逻辑检验,避免辛普森悖论、幸存者偏差、赌徒谬论等统计陷阱 [40]

同时,对于数据分析模型和结果保持严谨态度,尽可能去实际生产环境中验证,发现潜在的风险,清晰阐述模型的适用范畴。对于应用效果,要客观审视提升的原因,避免夸大数据分析的作用。 phmNQXlMe/gtfeVvoGtHxlc7m1A9quekmE1PFD2EkA3oyvdHunL/Oe7OaHo+wLUx

点击中间区域
呼出菜单
上一章
目录
下一章
×