机器学习系统最佳实践

定义问题

进行需求分析,定义问题。不同类型的问题有各自适用的机器学习模型,如:图像分析采用CNN模型、推荐相关问题有专门的推荐算法、安全相关问题有异常检测模型等。所以脱离具体问题去讨论算法或模型是没有意义的。

收集数据

收集数据的重要性:若数据集足够的大且包含了足够多的信息,在机器学习领域中普遍的共识是“取得成功的人不是拥有最好算法的人,而是拥有最多数据的人”。

数据集获取方式:

  1. 众包外包:从第三方获取被标记的数据集。
  2. 手动收集数据并标记数据:需要考虑手动收集标记需要的时间。
  3. 人工数据合成:在已有的数据上加上噪声合成新的数据,从而获得更多的数据。

特征工程

将原始数据转变为特征,通过这些特征可以很好的描述这些数据,并且利用这些特征建立模型,能让模型在未知的数据上的表现出最优的性能。</br>

主要工作:

  1. 从原始数据中清洗出特征数据和标注数据。
  2. 对清洗出的特征和标注数据进行进一步处理,最终生成的数据集供训练和测试模型使用。如:异常点去除、样本采集、特征降维,特征归一化、特征组合等过程。

一般步骤:

  1. 提取特征:运用“头脑风暴”法,不考虑特征的重要性,从原始数据中提取尽可能多的特征。
  2. 设计特征:根据具体的问题,可以采用自动特征提取、手工构造特征,或两者混合。
  3. 选择特征:使用不同的特征重要性评分和特征选择方法进行特征选择。
  4. 评估模型:使用选择的特征进行建模,同时使用已知的数据来评估模型的精度。

特征选择原则:

  1. 特征能提供有用信息:若某一特征概率均匀分布即为无用。
  2. 特征之间需独立:获取非冗余信息。
  3. 特征需简单:缩短对特征学习的时间。

选择算法

  1. 整体原则:头脑风暴列出尽可能多的算法,从中选取最简单、最适合的算法,快速实现的算法,建立模型。
  2. 若想要预测目标变量的值,则可以选择监督学习算法:需要进一步确定目标变量类型,若目标变量是离散型,则可以选择分类器算法;若目标变量是连续型的数值,则需要选择回归算法。
  3. 若不是预测目标变量的值,可以选择无监督学习算法:进一步分析,若需要将数据是离散的,则使用聚类算法;若需要估计数据与每个分组的相似程度,则需要使用密度估计算法。

训练算法

将训练数据集输入到算法,完成算法训练,获得训练模型。

测试算法

将测试数据集输入模型,评估模型。对于监督学习则评估模型预测目标变量值的准确率,对于非监督学习则利用其他的评测手段来检验算法的成功率。

系统调优

根据验证的结果,运用多种工具,评估算法,如:绘制学习曲线,进行误差分析等。根据最终分析的结果,改进或更换特征或算法。