一、优化模型
当选择一个模型,拟合发现存在很大的误差,我们可以做什么:
- 获取更多的训练数据
- 尝试减少特征
- 尝试其他的特征
- 尝试增加多项式
- 尝试减小正则化参数
- 尝试增大正则化参数
在优化模型前,我们首先看下如何评估一个模型的好坏。
二、如何评估模型
2.1 模型评估
1、建立训练集和测试集
如果所有训练数据都用于拟合模型,我们无法得知模型是否存在过拟合,模型是否可推广到未知数据。
因此,可以把一批训练数据中的70%数据划分为训练集,30%数据划分为测试集(或者六四开),训练集和测试集的表示方法见下图:
2、获取模型的最优参数
使用训练集数据,拟合模型,通过最小化代价函数结果的方式,获取最优参数和b。
以线性回归模型为例,代价函数如下:
以逻辑回归模型为例:
3、计算训练集误差和测试集误差
分别使用训练集和测试集数据计算模型误差,可以用测试集来表示模型的推广误差。
以线性回归模型为例,训练集和测试集误差如下,计算误差时不需要包含正则项:
测试集的误差会比训练集的误差大:
以逻辑回归模型为例:
但是,逻辑回归中,更常见的计算误差方式是:
(1)当输出概率≥0.5时,预测值是1,当输出概率<0.5时,预测值是0
(2)统计训练集/测试集中,预测值和真实值不一样的数据个数
2.2 模型选择和泛化误差
如果在多种模型A、B、C中选择一个最优模型,需要做的是:
- 训练集数据拟合得到每个模型的最优参数
- 计算A、B、C这几个模型的测试集误差
- 选择测试集误差最小的模型作为最优模型
但是,这样存在一个问题,无法使用测试集误差来评估这个模型推广到其他数据时产生的泛化误差。
因此需要建立训练集、交叉验证集和测试集。
1、建立训练集、交叉验证集和测试集
把一批训练数据中的60%数据划分为训练集,20%数据划分为交叉验证集,20%数据划分为测试集,训练集和测试集的表示方法见下图:
2、获取每个模型的最优参数
使用训练集数据,拟合模型,通过最小化代价函数结果的方式,获取最优参数和b。
3、选择模型
使用交叉验证集数据计算验证误差,在几个模型中选择验证误差最小的模型,作为最优模型。
4、评估泛化误差
使用测试集数据来计算误差,测试误差用于评估泛化误差。
学习来源:吴恩达机器学习,11.1-11.3节