生成式模型与判别式模型的对比:

这两种模型都能做分类和回归,生成式模型还可以生成样本。
从统计学的观点看,判别式模型是对条件概率P(Y|X)建模;
如果不从统计学的角度看,判别式模型也可以直接对决策函数比如线性回归或者决策边界比如SVM来建模。
生成式模型对联合概率P(X,Y)建模。
	根据具体的实现可以得到P(X|Y),P(Y|X),P(X), P(Y),而不一定需要P(X,Y)的解析解。
	生成式模型可以转化为判别式模型,但反过来不行。

生成式模型优点:

训练时收敛比较快,即当样本数量较多时,生成模型能更快地收敛于真实模型。
能够应对存在隐变量的情况,比如GMM就是含有隐变量的生成方法。
能够生成新的样本。

判别式模型优点:

节省计算资源,并且同样的模型效果情况下,需要的样本数量也少于生成模型。
模型一般要简单一些,模型性能往往较生成模型高。

分类任务时,判别式模型与生成式模型的对比:
在这里插入图片描述

Read more »

集成学习(也叫模型融合)现在是很常用的机器学习方法。

它本身不是一个单独的机器学习算法,它是一种思路。它通过构建并融合多个基学习器(base estimators也叫/基估计器)来完成学习任务。

集成学习的优点:

对基学习器的结果做融合,获得更好的泛化能力。

集成学习的步骤:

选择若干个基学习器;然后选择一种融合策略。

集成有哪些花样?

从数据拆分的角度:可以按行拆分数据,也可以按列即特征来拆分。
从模型组合的成份:可以集成不同模型,也可以集成使用不同超参数的同一类模型的多个实例,还可以集成使用不同数据集的同一类模型(结合数据拆分)
从结果融合的方式:对多个基学习器的结果取平均;对多个基学习器的结果加权平均;只取最后一个学习器的结果。
从组合的结构看:可以是并行,也可以是串行。

如何选择若干个基学习器?

通常选取基学习器的准则是:
	基学习器要有一定的准确性,预测能力不能太差。
	基学习器之间要有多样性,即学习器之间要有差异。
		一般的思路是在学习过程中引入随机性。常见的做法是:对数据样本、输入属性、输出表示(比如GBDT对基学习器输出进行的扰动)、算法参数进行扰动。
Read more »

最小二乘估计LSE:

最合理的参数估计量应该使得模型能最好地拟合样本数据,也就是估计值和观测值之差的平方和最小。

最大似然法MLE:

最合理的参数估计量应该使得从概率模型中能够抽取出来该n组样本的概率最大,也就是概率分布函数或者似然函数最大。
	这里的参数指的是比如高斯分布的均值和方差,MLE需要假设概率分布再求概率分布的参数。
大致计算步骤如下:
	确定似然函数
	将似然函数转换为对数似然函数(为了方便计算)
	求对数似然函数的最大值(求导,解似然方程)

LSE与MLE的对比:

这是从不同原理出发的两种参数估计方法。
最大似然法需要假设这个概率分布函数,一般假设其满足正态分布,在这种情况下,最大似然估计和最小二乘估计是等价的,也就是说估计结果是相同的,但是原理和出发点完全不同。

最大似然估计MLE与EM(期望最大化)

MLE与EM的关系:

MLE是求解问题的思想,而EM是求解MLE的其中一种方法。
MLE常用的方法是对对数似然函数求导数,但是有时候比如概率模型中包含没有办法观测到的隐变量,那就没有办法直接求导(因为会有未知的隐变量的分布)。而EM每次迭代去最大化似然函数的下界。
	高斯混合模型GMM是使用EM算法来求解的,对应的隐变量就是每个高斯成分被选择的随机变量。

EM有什么优点?

Read more »

梯度下降法的直观解释:

得到的可能是局部最优解
对于凸函数一定是全部最优解
起始点选择不同得到的结果不同
步伐大小决定算法收敛速度
右图显示的是batch GD

在这里插入图片描述

梯度的理解:

梯度的方向是函数值增加最快的方向,梯度的相反方向是函数值减小最快的方向。
沿着负梯度的方向来降低目标函数的值,这就是梯度下降法。

梯度下降法算法过程(batch GD)

  1. 初始化:初始化θ向量,步长α,收敛阈值ε

  2. 确定当前位置的目标函数的梯度,对于θ向量其梯度表达式如下在这里插入图片描述

  3. 用步长乘以目标函数的梯度,得到当前位置下降的距离,即
    在这里插入图片描述
    它对应于前面登山例子中的某一步。

  4. 判断是否满足收敛条件,如果是则算法终止,当前θ向量即为最终结果。否则进入步骤4.
    收敛条件有多种,比如可以设置当𝜃向量里面的每个值对应的梯度下降的距离都小于𝜀时就终止算法;或者可以设置连续几轮迭代的目标函数的值变化都小于𝜀就终止算法。

  5. 更新θ向量,其更新表达式如下。更新完毕后继续转入步骤1.

在这里插入图片描述

权重参数(也叫模型参数)的初始值选择。 

权重参数一般初始化为0或者用随机值。
初始值不同得到的结果不同:
	可以多次用不同初始值运行模型来选择比较好的初始值
	配合上超参数优化算法效果更好
Read more »

训练时评价指标(training metrics)

训练模型时的评价指标是目标函数的优化。
	如在线性回归中最小化平方误差或者SVM算法中分类平面几何间隔最大化等。

离线评价指标(或验证评价指标,offline evaluation metrics or validation metrics)

模型训练后需要用相应的指标且用测试集或验证集对模型进行评价。
	如分类模型评价指标、回归模型评价指标以及排序模型评价指标等。

新生数据评价指标(live metrics)

使用模型上线后新生成的数据来评价模型,评价指标和离线评价指标一样,只是评价所用的数据发生阶段不同。

商业指标(business metrics)

业务系统真正关心的最终业务指标。
如转化率、点击率、PV访问量、UV访问量。

离线评价指标

不同的机器学习任务有不同的验证/离线评价指标。

Read more »

用线性回归模型来举例:

损失函数: 计算的是一个训练样本的误差

在这里插入图片描述

代价函数: 是整个训练集上所有样本误差的平均

在这里插入图片描述

目标函数:最小化( 代价函数 + 正则化项 )

在这里插入图片描述

没有一个适合所有机器学习模型的目标函数。

针对特定问题选择目标函数涉及到许多因素,比如学习任务的类型、模型是否易于计算导数以及数据集中异常值所占比例。
从学习任务的类型出发,常见的损失函数分为回归损失和分类损失两大类。

分类问题与回归问题的区别
在这里插入图片描述

Read more »

方差与偏差,过拟合与欠拟合

偏差与方差(以回归任务为例):

Bias偏差:
	计算所有可能的训练集训练出的所有同类模型对每个输入样本X的预测输出的平均值与 “真实模型” 对该样本的输出值之间的差异,在所有可能的数据集(包括训练集)上对该差异求数学期望。
	同类模型的意思是:建模方法一样,只是学习到的模型参数不同。
	由于真实模型是未知的,我们借助样本的label来近似估计。
Variance方差:
	刻画的是不同的训练集训练出的同一类模型的输出值之间的差异。

在这里插入图片描述

机器学习真正有意义的目标是减少泛化误差

generalization error=bias+ variance+noise
即泛化误差可以分解为偏差、方差和噪声之和:
	偏差度量了学习算法的期望预测与真实结果之间的偏离程度,刻画了学习算法本身的拟合能力。
	方差度量了训练集的变动所导致的学习性能的变化,刻画了数据扰动造成的影响。
	噪声度量了在当前任务上任何学习算法所能达到的期望泛化误差的下界,刻画了学习问题本身的难度。(这里的噪声是指由人工标注失误引起的)
偏差-方差分解表明:
	泛化性能是由学习算法的能力、数据的充分性以及学习任务本身的难度共同决定的

模型的容量capacity :是指其拟合各种函数的能力

通过选择不同的假设空间(代表模型的函数集合)可以改变模型的容量。
	比如y=ax就比y=ax+bx^2的容量小,因为前者只能拟合不同的直线(通过取不同的a值),而后者除了能拟合不同的直线(取不同的a值并设置b为0),还能拟合出不同形状的抛物线(通过取不同的b值)。

偏差和方差与模型容量有关:增加容量会降低偏差,增加方差。

偏差降低是因为随着容量的增大,模型的拟合能力越强:
	对给定的训练数据,它拟合的越准确。
方差增加是因为随着容量的增大,模型的随机性越强:
	对不同的训练集,它学得的模型可能差距较大。
Read more »

用神经网络对表格数据进行建模,同样需要几乎所有的特征工程:

字符串特征转换为数值特征
处理异常值
处理缺失值
处理样本类别不均衡
连续型特征离散化
catogery特征编码
	神经网络适合dense向量,因此经常对category特征做embedding encoding。
连续型特征缩放
	在神经网络中常对特征做Z-score标准化。
特征生成
	可结合手动特征生成以及自动特征交叉的网络结构。
特征选择和特征降维
	只要不是高维稀疏向量,神经网络建模时可以先不考虑特征选择和特征降维。
	当然特征选择的Filter method和embedded method都可以尝试使用。
	而利用autoencoder及其变体也能做特征降维。

Tips:

如果用Tensorflow框架,对表格数据做特征工程可以考虑他的feature_column相关的API;如果这些API满足不了需求,可以结合sklearn库的API来做。

用神经网络对非结构化数据建模,这个时候需要做样本工程:

下面是一个比较规范的用深度神经网络做计算机视觉任务的pipeline:
在这里插入图片描述

Reader 读取图片数据集的metadata文件(包括图片的索引和标注信息);
Splitter 把该数据集分割为训练集、验证集和测试集(只需要对图片索引来切分就好)。
一般情况下,并不需要所有图像数据都载入内存,于是需要 Loader 按需导入。
这些图像一般由 Transformer 进行处理,以修改尺寸、截图或做其它调整。
为了进行数据增强, Augmenter 会随机选取图像进行扩充(比如翻转),以合成额外图像作为新的训练样本。
Batcher 把图像和标签数据打包并组成一个 mini-batch。
把mini-batch数据送入 Network 进行训练。
为追踪训练过程,使用 Logger 来把训练损失或精度记录到 log 文件。
Read more »

什么时候考虑特征降维?

到了这个步骤,如果特征维度过大,会导致计算量大,训练时间长,模型的容量太大,模型容易过拟合。
这个时候要首先考虑特征维度这么高是否合理,是否是因为one-hot向量导致的,是否可以做embedding。之后在考虑降低特征维度。

特征降维有什么假设?

人们观测或者收集到的数据样本虽然是高维的,但是与学习任务密切相关的也许仅仅是某个低维分布,即高维空间中的一个低维“嵌入”。

Tips:

当前主流的特征降维的方法都是针对连续性特征的。
	针对category特征的降维有一些研究比如MCA,RS-PCA。但是开源的机器学习库都没有这些对应的实现。
思考:如果样本即包括大量的category特征,也包括大量的连续特征,该如何降维?

什么时候考虑特征降维?

到了这个步骤,如果特征维度过大,会导致计算量大,训练时间长,模型的容量太大,模型容易过拟合。
这个时候要首先考虑特征维度这么高是否合理,是否是因为one-hot向量导致的,是否可以做embedding。之后在考虑降低特征维度。

特征降维有什么假设?

人们观测或者收集到的数据样本虽然是高维的,但是与学习任务密切相关的也许仅仅是某个低维分布,即高维空间中的一个低维“嵌入”。
Read more »

特征选择feature selection:

即从给定的特征集合中选出可能的重要特征子集的过程。

为什么进行特征选择?

首先,在现实任务中经常会遇到维度灾难问题,这往往是由于特征过多或者对高基数的category特征作了Onehot向量造成的。如果能从中选择出重要的特征,使得后续学习过程仅仅需要在一部分特征上进行,那么维度灾难问题会大大减轻。
	从这个意义上讲,特征选择与特征降维有相似的动机。事实上它们是传统机器学习处理高维数据的两大主流技术。
	深度学习中则常使用embedding来处理高基数category特征。
其次,去除不相关特征往往会降低学习任务的难度。

是否一定要做特征选择?

特征选择可能会降低模型的预测能力。
	因为被剔除的特征中可能包含了有效的信息,抛弃了这部分信息可能会一定程度上降低预测准确率。
这是计算复杂度和预测能力之间的折衷:
	如果保留尽可能多的特征,则模型的预测能力可能会提升,但是计算复杂度会上升。
	如果剔除尽可能多的特征,则模型的预测能力可能会下降,但是计算复杂度会下降。

如何进行特征选择?

简单就是美-------先不要做特征选择,看看之后的模型效果。
如果特征维度不大,先跳过该步骤。
首先和业务领域专家沟通,向他们咨询哪些特征重要,哪些不重要;
然后再用统计方法或者机器学习的方法来选择特征。

三种常见的特征选择方法:Filter method、Wrapper method、Embedded method

Filter method:

Read more »