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] ,结果由硬币的质量分布、抛出时的初始状态完全确定,但结果对参数和初始状态的敏感度太高,还不如通过多次观察,建立一个概率分布模型更直接。