机器学习项目清单(一般流程。)

ps:根据自己需要随意调整。

**一、框出问题并看整体。

1、 用业务术语定目标。
2、解决方案如何使用。
3、当前有什么解决方案?
4、阐述问题(有无监督,在线离线等)。
5、如何衡量性能。(比如学习率。)
6、性能指标是否符合业务目标。
7、达到业务目标所需要的最低性能是多少?
8、类似的问题有哪些? 你可以重复使用他们的经验或工具吗?
9、是不是人类专长的问题?
10、你如何人工手动解决这个问题?
11、列出目前为止,你或其他人所做出的假设。
12、如果可能的话,验证假设。

二、获取数据。

PS:尽可能地自动化,以便轻松获取新数据。
1、列出你需要的数据和你需要的数据量。
2、查找并记录可以获取该数据的位置。
3、检查这些数据需要多少空间。
4、检查法律义务,并在必要时获得授权。
5、获取访问权限。
6、创建一个有足够的存储空间的工作区(可以简单理解为计算机上的文件夹)。
7、获取数据。
8、将数据转换为您可以轻松操作的格式(不要更改数据本身)。
9、确保删除或保护敏感信息(例如:使用匿名)。
10、检查数据的大小和类型(时间序列,样本,地理信息等)。
11、抽样出一个测试集,放在一边,不要管它。(无数据监听!)

三·、研究数据以获得深刻见解。

PS:多问问现场的专家,获取有关见解。
1、为探索数据创建一份数据副本(如果需要,可将其抽样为可管理的大小)
2、在Jupyter notebook上以记录您的数据探索过程
3、研究每个属性及其特征

  • 名字

  • 类型:(分类,int / float,有界/无界,文本,结构化等)

  • 丢失数据的百分比(缺失值的百分比)

  • 噪音和噪音类型(随机,异常值,舍入误差等)

  • 对任务的实用性

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

4、对于有监督学习任务,确定标签值(目标属性。)
5、可视化数据
6、研究样本属性之间的相关性,(对特征提取很重要)。
7、思考如何手动解决这个问题
8、确定您可能想要应用的数据转换
9、确定有用的额外数据
10、将你学到的东西记录下来

四、准备数据以便更好地将潜在的数据模式提供给机器学习算法。

PS(注意):

  • 在数据副本上进行处理(保持原始数据集的完整)
  • 对所有数据转换的函数编写代码,原因有五:
    • 可以在下次获取新数据集时轻松处理数据。
    • 可以在未来的项目中应用这些转换。
    • 对测试集进行预处理(清理或准备。)
    • 在解决方案生效后清理并准备新的数据实例。
    • 轻松地将预处理选择视为超参数来处理。

1、数据清理

  • 根据需要,修复或删除异常值。(可选。)
  • 补全异常值(利用零、均值、中位数等)或者删掉此行。(或者列)

2、特征选择(可选。)

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

3、适当的特征工程(适用的话)

  • 对连续特征离散化处理
  • 分解特征(例如,分类,日期/时间等)
  • 添加有希望的特征转换(例如,log(x),sqrt(x),x ^ 2等)
  • 将特征聚合成新的特征

4、特征缩放:对特征进行归一化或标准化处理

五、探索许多不同的模型,并列出最佳模式。

注意:

  • 如果数据量巨大,您可能需要抽取较小的训练集,以便在合理的时间内训练不同的模型(但在复杂模型中要特别注意,会造成不利影响,如大型神经网络或随机森林)

  • 再次尝试,尽可能自动执行这些步骤。

1、使用标准参数训练不同类别的快速而粗糙的模型(例如,线性,朴素贝叶斯,SVM,随机森林,神经网络等)
2、测量并比较他们的性能。

  • 对于每个模型,使用N折交叉验证并计算N折性能的均值和标准差

3、分析每种算法的最重要变量。
4、分析模型产生的错误类型。

  • 人们用什么数据来避免这些错误?

5、快速进行特征选择和特征工程。
6、对前面五个步骤进行一两次更快的迭代。
7、简短列出前三到五个最有希望的模型,特别是不同类型的错误的模型。(优先选择产生不同类型错误得到模型。)

六、微调你的模型,并将它们组合成一个很好的解决方案。

注意:

  • 在此步骤,您需要使用尽可能多的数据,特别是在您微调结束的时候
  • 一如既往地尽可能做到自动化
    1、使用交叉验证对超参数进行微调。
  • 将数据转换选择视为超参数,特别是当您不确定转换是否合适时(例如,是否应该用零或中位数替换缺失的值?或者只是删除指定行?)
  • 当探索的超参数值很少,首选利用网格搜索上进行随机搜索。
    如果训练时间很长,您可能更喜欢贝叶斯优化方法(例如,使用高斯过程先验,请参考[Practical Bayesian
    optimization of machine learning algorithms)。

2、尝试集成方法。 结合你最好的几个模型往往会比单独更好。
3、一旦你对你的最终模型充满信心,在测试集上运行以检测泛化误差。
另外:在测量了泛化误差之后,不要对模型进行调整,否则会开始过拟合测试集。

七、演示你的解决方案。

1、记录下你所做的事情。
2、创建一个不错的演示文稿。

  • 确保首先突出重点(大的蓝图。)。

3、解释您的解决方案为何能够达到业务目标。
4、不要忘记提出你一路注意到的有趣观点。

  • 描述什么工作是有效的,什么没效
  • 列出您的假设和模型系统的局限性。

5、确保您关键的研究结果通过美观的可视化或易于记忆的陈述进行传达(例如,“收入中位数(中等收入)是房价的第一大预测指标”)。

八、启动、监视和维护你的系统。**

1、准备好生产环境下的解决方案(插入数据输入,编写单元测试等)。
2、编写监控代码,定期检查系统的实时性能,并在性能下降时时触发警报。

  • 小心模型缓慢的退化:随着数据的发展,模型往往会“腐烂”。
  • 评估性能可能需要人工流程(例如,通过众包服务)。
  • 同时监控您输入的数据质量(例如发送随机值的故障传感器,或其他团队的输出过时)。 这对于在线学习系统尤为重要。

3、定期在新的数据上模型重新训练(尽可能自动化)。

最后:
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition, 作者: Aurelien Geron(法语) , 又 O Reilly 出版, 书号 978-1-492-03264-9。
相对于书中(根据自己理解)进行适当的文字的调整,如果不当欢迎指出。

你可能感兴趣的:(机器学习,机器学习,人工智能,深度学习,自然语言处理)