机器学习项目to-do list

目录

确定问题并从整体角度进行思考

获取数据

探索数据

准备数据

筛选潜在模型

微调系统

展示您的解决方案

部署!

参考资料


此to-do list可指导您完成机器学习项目,共包括八个主要步骤:

  1. 确定问题并从整体角度进行思考。

  2. 获取数据。

  3. 探索数据以获取洞察。

  4. 准备数据,以更好地揭示数据的潜在模式,使其适用于机器学习算法。

  5. 研究不同模型并筛选出最优模型。

  6. 对模型进行微调,并将它们组合成最佳解决方案。

  7. 展示您的解决方案。

  8. 部署、监控并维护您的系统。

您可以根据自己的需求自由调整此to-do list。

确定问题并从整体角度进行思考

  1. 以业务目标的方式定义问题。

  2. 该解决方案将如何被使用?

  3. 当前是否已有解决方案/变通方法?

  4. 该问题应如何被定义(监督/无监督学习,在线/离线等)?

  5. 应如何衡量性能?

  6. 该性能度量是否与业务目标一致?

  7. 达到业务目标所需的最低性能是什么?

  8. 是否存在类似问题?是否可以复用经验或工具?

  9. 是否可以借助人类专业知识?

  10. 如果手动解决该问题,应如何操作?

  11. 列出您(或其他人)目前所做的假设。

  12. 尽可能验证这些假设。

获取数据

注意:尽可能自动化,以便能够轻松获取最新数据。

  1. 列出所需数据及其规模。

  2. 查找并记录数据的获取来源。

  3. 估算数据所占空间。

  4. 检查法律义务,并在必要时获得授权。

  5. 获取访问权限。

  6. 创建工作空间(确保存储空间充足)。

  7. 获取数据。

  8. 将数据转换为易于操作的格式(但不改变数据本身)。

  9. 确保敏感信息已删除或受到保护(如匿名化)。

  10. 检查数据的类型和规模(时间序列、样本、地理信息等)。

  11. 抽取测试集,并单独存放,避免数据泄露(Data Snooping)。

探索数据

注意:尽量与领域专家交流,获取更深入的洞察。

  1. 创建数据副本以便探索(必要时进行采样)。

  2. 使用 Jupyter Notebook 记录数据探索过程。

  3. 研究每个属性及其特性:

    • 名称

    • 类型(类别型、整数/浮点、受限/不受限、文本、结构化等)

    • 缺失值的比例

    • 噪声及类型(随机、异常值、舍入误差等)

    • 对任务的作用

    • 数据分布类型(高斯、均匀、对数等)

  4. 对于监督学习任务,确定目标变量。

  5. 可视化数据。

  6. 研究属性之间的相关性。

  7. 研究如何手动解决该问题。

  8. 识别可能适用的数据转换方法。

  9. 评估是否需要额外数据(返回“获取数据”步骤)。

  10. 记录您的发现。

准备数据

注意

  • 在数据副本上操作(保持原始数据集完整)。

  • 编写数据转换函数,原因如下:

    • 便于未来处理新数据集。

    • 便于在未来项目中复用。

    • 便于清理和准备测试集。

    • 便于在解决方案上线后处理新数据。

    • 便于将数据预处理步骤视作超参数。

  1. 清理数据:

    • 修正或移除异常值(可选)。

    • 填充缺失值(如使用零、均值、中位数等)或删除相关行/列。

  2. 进行特征选择(可选):

    • 删除对任务无用的属性。

  3. 进行特征工程(如适用):

    • 离散化连续特征。

    • 分解特征(如类别、时间日期等)。

    • 生成新特征(如 log(x)、sqrt(x)、x² 等)。

    • 组合多个特征生成新特征。

  4. 进行特征缩放:

    • 标准化或归一化特征。

筛选潜在模型

注意

  • 如果数据量庞大,可使用小规模训练集,以便在合理时间内尝试多种模型(但这可能会影响复杂模型的表现,如大规模神经网络或随机森林)。

  • 尽量自动化这些步骤。

  1. 训练多种不同类别的基础模型(如线性模型、朴素贝叶斯、SVM、随机森林、神经网络等),使用默认参数。

  2. 评估并比较其性能:

    • 对每个模型进行 N 折交叉验证,并计算性能均值和标准差。

  3. 分析各算法中最重要的变量。

  4. 研究模型的错误类型:

    • 人类会如何避免这些错误?

  5. 进行快速的特征选择和工程处理。

  6. 快速重复前几个步骤 1-2 次。

  7. 筛选出 3-5 个最有前景的模型,优先考虑错误类型不同的模型。

微调系统

注意

  • 该步骤需尽可能使用全部数据,尤其是在后期优化时。

  • 尽量自动化。

  1. 使用交叉验证调整超参数:

    • 也可将数据转换选择视为超参数(如填充缺失值的方法)。

    • 若超参数较多,优先使用随机搜索,而非网格搜索。

    • 若训练时间较长,可使用贝叶斯优化方法(如高斯过程)。

  2. 尝试集成方法(Ensemble Methods),组合多个最优模型通常能提升性能。

  3. 确定最终模型后,在测试集上评估泛化误差。

⚠️ 警告:评估泛化误差后,切勿再调整模型,否则可能会过拟合测试集!

展示您的解决方案

  1. 记录您的工作过程。

  2. 制作清晰的展示材料:

    1. 先概述大局。

  3. 解释为何您的解决方案符合业务目标。

  4. 强调探索过程中有趣的发现:

    1. 说明哪些方法有效,哪些无效。

    2. 列出假设及系统的局限性。

  5. 通过可视化或简洁的陈述传达关键发现(如“收入中位数是房价的最佳预测指标”)。

部署!

  1. 准备生产环境(接入生产数据、编写单元测试等)。

  2. 监控系统性能,并定期触发告警:

    1. 注意模型性能的缓慢下降(数据分布随时间变化)。

    2. 监控输入数据质量(如传感器故障、上游数据过时等)。

  3. 定期使用新数据重新训练模型(尽可能自动化)。

参考资料

【1】《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值