1.5 机器学习的一般流程
机器学习的一般流程包括确定分析目标、收集数据、整理数据、预处理数据、训练模型、评估模型、优化模型、上线部署等步骤。首先要从业务的角度分析,然后提取相关的数据进行探查,发现其中的问题,再依据各算法的特点选择合适的模型进行实验验证,评估各模型的结果,最终选择合适的模型进行应用。
1. 定义分析目标
应用机器学习解决实际问题,首先要明确目标任务,这是机器学习算法选择的关键。明确要解决的问题和业务需求,才可能基于现有数据设计或选择算法。例如,在监督式学习中对定性问题可用分类算法,对定量分析可用回归方法。在无监督式学习中,如果有样本细分则可应用聚类算法,如需找出各数据项之间的内在联系,可应用关联分析。
2. 收集数据
数据要有代表性并尽量覆盖领域,否则容易出现过拟合或欠拟合。对于分类问题,如果样本数据不平衡,不同类别的样本数量比例过大,都会影响模型的准确性。还要对数据的量级进行评估,包括样本量和特征数,可以估算出数据以及分析对内存的消耗,判断训练过程中内存是否过大,否则需要改进算法或使用一些降维技术,或者使用分布式机器学习技术。
3. 整理预处理
获得数据以后,不必急于创建模型,可先对数据进行一些探索,了解数据的大致结构、数据的统计信息、数据噪声以及数据分布等。在此过程中,为了更好地查看数据情况,可使用数据可视化方法或数据质量评价对数据质量进行评估。
通过数据探索后,可能发现不少问题,如缺失数据、数据不规范、数据分布不均衡、数据异常、数据冗余等。这些问题都会影响数据质量。为此,需要对数据进行预处理,这部分工作在机器学习中非常重要,特别是在生产环境中的机器学习,数据往往是原始、未加工和处理过的,数据预处理常常占据整个机器学习过程的大部分时间。归一化、离散化、缺失值处理、去除共线性等,是机器学习的常用预处理方法。
4. 数据建模
应用特征选择方法,可以从数据中提取出合适的特征,并将其应用于模型中得到较好的结果。筛选出显著特征需要理解业务,并对数据进行分析。特征选择是否合适,往往会直接影响模型的结果,对于好的特征,使用简单的算法也能得出良好、稳定的结果。特征选择时可应用特征有效性分析技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率和逻辑回归权重等方法。
训练模型前,一般会把数据集分为训练集和测试集,或对训练集再细分为训练集和验证集,从而对模型的泛化能力进行评估。
模型本身并没有优劣。在模型选择时,一般不存在对任何情况都表现很好的算法,这又称为“没有免费的午餐”原则。因此在实际选择时,一般会用几种不同方法来进行模型训练,然后比较它们的性能,从中选择最优的一个。不同的模型使用不同的性能衡量指标。
5. 模型训练
在模型训练过程中,需要对模型超参进行调优,如果对算法原理理解不够透彻,往往无法快速定位能决定模型优劣的模型参数,所以在训练过程中,对机器学习算法原理的要求较高,理解越深入,就越容易发现问题的原因,从而确定合理的调优方案。
6. 模型评估
使用训练数据构建模型后,需使用测试数据对模型进行测试和评估,测试模型对新数据的泛化能力。如果测试结果不理想,则分析原因并进行模型优化,如采用手工调节参数等方法。如果出现过拟合,特别是在回归类问题中,则可以考虑正则化方法来降低模型的泛化误差。可以对模型进行诊断以确定模型调优的方向与思路,过拟合、欠拟合判断是模型诊断中重要的一步。常见的方法有交叉验证、绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。
误差分析是通过观察产生误差的样本,分析误差产生的原因,一般的分析流程是依次验证数据质量、算法选择、特征选择、参数设置等,其中对数据质量的检查最容易忽视,常常在反复调参很久后才发现数据预处理没有做好。一般情况下,模型调整后,需要重新训练和评估,所以机器学习的模型建立过程就是不断地尝试,并最终达到最优状态,从这一点看,机器学习具有一定的艺术性。
在工程实现上,提升算法准确度可以通过特征清洗和预处理等方式,也可以通过模型集成的方式。一般情况下,直接调参的工作不会很多。毕竟大量数据训练起来很慢,而且效果难以保证。
这部分内容将在本书第2章中详细介绍。
7. 模型应用
模型应用主要与工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的好坏,不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受等方面。