ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
1. **定义问题,收集数据集** * 你的输入数据是什么?你要预测什么? * 你面对的是什么类型的问题? * **非平稳问题**(nonstationary problem):购买服装的种类是随着季节变化 2. **选择衡量成功的指标** * 对于**平衡分类问题**(每个类别的可能性相同),精度和**接收者操作特征曲线下面积**(area under the receiver operating characteristic curve,ROC AUC)是常用的指标。 * 对于类别**不平衡的问题**,你可以使用**准确率**和**召回率**。 * 对于**排序问题**或**多标签分类**,你可以使用**平均准确率均值**(mean average precision) * 自定义衡量成功指标 3. **确定评估方法** * 留出验证集 * K折交叉验证 * 重复的*K*折验证 4. **准备数据** * 将数据格式化为**张量** * **缩放**为较小的值,比如在 \[-1, 1\] 区间或 \[0, 1\] 区间。 * 不同的特征具有不同的取值范围(异质数据),那么应该做**数据标准化** * 可能需要做**特征工程**,对于**小数据问题** 5. **开发比基准更好的模型** * 目标:获得**统计功效**(statistical power),开发一个小型模型,它能够打败纯随机的基准(dumb baseline) * 假设输出是可以根据输入进行预测的。 * 假设可用的数据包含足够多的信息,足以学习输入和输出之间的关系。 * 选择三个关键参数来构建第一个工作模型 * 最后一层的激活 * 损失函数 * 优化配置 | 问题类型 | 最后一层激活 | 损失函数| | --- | --- | --- | | 二分类问题 | sigmoid |binary\_crossentropy | | 多分类、单标签问题 | softmax | categorical\_crossentropy | | 多分类、多标签问题 | sigmoid |mse | | 回归到任意值 | 无 |binary_crossentropy | | 回归到 0~1 范围内的值 | sigmoid |mse 或 binary_crossentropy| 6. **扩大模型规模:开发过拟合的模型** * 模型是否足够强大? * 它是否具有足够多的层和参数来对问题进行建模? * [ ] 要搞清楚你**需要多大**的模型,就必须开发一个**过拟合的模型** * 添加更多的层 * 让每一层变得更大 * 训练更多的轮次 7. **模型正则化与调节超参数**,这一步是最费时间的 调节模型、训练、在验证数据上评估、再次调节模型: * 添加 dropout。 * 尝试不同的架构:增加或减少层数。 * 添加 L1 和 / 或 L2 正则化。 * 尝试不同的超参数(比如每层的单元个数或优化器的学习率),以找到最佳配置。 * (可选)反复做特征工程:添加新特征或删除没有信息量的特征。