定义问题
进行需求分析,定义问题。不同类型的问题有各自适用的机器学习模型,如:图像分析采用CNN模型、推荐相关问题有专门的推荐算法、安全相关问题有异常检测模型等。所以脱离具体问题去讨论算法或模型是没有意义的。
收集数据
收集数据的重要性:若数据集足够的大且包含了足够多的信息,在机器学习领域中普遍的共识是“取得成功的人不是拥有最好算法的人,而是拥有最多数据的人”。
数据集获取方式:
- 众包外包:从第三方获取被标记的数据集。
- 手动收集数据并标记数据:需要考虑手动收集标记需要的时间。
- 人工数据合成:在已有的数据上加上噪声合成新的数据,从而获得更多的数据。
特征工程
将原始数据转变为特征,通过这些特征可以很好的描述这些数据,并且利用这些特征建立模型,能让模型在未知的数据上的表现出最优的性能。</br>
主要工作:
- 从原始数据中清洗出特征数据和标注数据。
- 对清洗出的特征和标注数据进行进一步处理,最终生成的数据集供训练和测试模型使用。如:异常点去除、样本采集、特征降维,特征归一化、特征组合等过程。
一般步骤:
- 提取特征:运用“头脑风暴”法,不考虑特征的重要性,从原始数据中提取尽可能多的特征。
- 设计特征:根据具体的问题,可以采用自动特征提取、手工构造特征,或两者混合。
- 选择特征:使用不同的特征重要性评分和特征选择方法进行特征选择。
- 评估模型:使用选择的特征进行建模,同时使用已知的数据来评估模型的精度。
特征选择原则:
- 特征能提供有用信息:若某一特征概率均匀分布即为无用。
- 特征之间需独立:获取非冗余信息。
- 特征需简单:缩短对特征学习的时间。
选择算法
- 整体原则:头脑风暴列出尽可能多的算法,从中选取最简单、最适合的算法,快速实现的算法,建立模型。
- 若想要预测目标变量的值,则可以选择监督学习算法:需要进一步确定目标变量类型,若目标变量是离散型,则可以选择分类器算法;若目标变量是连续型的数值,则需要选择回归算法。
- 若不是预测目标变量的值,可以选择无监督学习算法:进一步分析,若需要将数据是离散的,则使用聚类算法;若需要估计数据与每个分组的相似程度,则需要使用密度估计算法。
训练算法
将训练数据集输入到算法,完成算法训练,获得训练模型。
测试算法
将测试数据集输入模型,评估模型。对于监督学习则评估模型预测目标变量值的准确率,对于非监督学习则利用其他的评测手段来检验算法的成功率。
系统调优
根据验证的结果,运用多种工具,评估算法,如:绘制学习曲线,进行误差分析等。根据最终分析的结果,改进或更换特征或算法。