机器学习基础
过拟合和欠拟合
- 机器学习的根本问题是optimization和generalization之间的对立,所谓optimization,即在训练数据上获得最佳性能,所谓generalization,即模型在未见的数据集上的性能。
- 欠拟合:训练数据上损失越小,测试数据上的损失也越小,此时模型欠拟合
- 过拟合:即在训练数据上迭代一定次数之后,generalization不在提高,模型开始学习仅和训练数据有关的模式,此时开始过拟合
- 防止模型过拟合的方法
- 获取更多的训练数据,也是最优的方法
- 减小网络大小
即减小模型中科学系的参数(由层数和每层单元数决定), 迫使模型只学习记忆具有很强预测能力的压缩表示,但也主要避免因网络过小造成的欠拟合,具体实施则可以先使用较少的层和参数,然后逐渐增加层的大小或新层,直到在验证数据集上损失变得很小
- 添加权重正则化
通常简单模型比复杂模型更不容易过拟合,因此可以强制让魔心权重只能取最小的值,从而限制模型复杂度.
具体实现就是想网络损失函数中添加较大权重值的成本,有两种形式L1正则化和L2正则化,即成本分别于权重系数的绝对值和平方成正比。- Dropout正则化
即训练过程中,随机将该层的一些输出特征舍弃。
机器学习通用工作流程
- 定义问题,收集数据集
- 衡量指标选择
- 衡量成功的指标选择合适的损失函数
- 平衡分类问题,精度和AUC是常用的指标
- 不平横分类问题,precision和recall是合适的指标
- 排序和多标签分类,mean average precision是合适的指标
- 确定评估方法
- hang-out validation: 即流出部分数据作为验证数据
- k-fold validation
- Iterated k-fold validation with shuffling :具体操作就是使用多次(P) K-fold validation,只是每次划分前都将数据随机打乱,需训练P x K个模型
- 准备数据
- 数据格式化为张量
- 张量的取值应该缩放为较小的值,如min-max normalization
- 异质数据要进行数据的Standardizate
- 考虑特征工程
- 模型开发
- 参数选择
问题 最后一层激活 损失函数 二分类问题 sigmoid binary_crossentropy 多分类、单标签 sofmax categorical_crossentropy 多分类、多标签 sigmoid binary_crossentropy 回归 不需 mse 0-1 回归 sigmoid mse/binary_crossentropy
- 过拟合模型
- 添加更多的层
- 每一层更大
- 训练更多轮次
以找到欠拟合和过拟合的分界线
- 正则化、调解超参数
- dropout
- 增加或减少参数
- L1或和L2正则化
- 尝试不同的超参数
- 特征工程
确定模型的参数之后,就可以在所有可用数据上(训练数据 + 验证数据)上训练最终的模型