每当听到当年赵本山和宋丹丹在2000年春晚演出的小品《钟点工》总能一笑解千愁。工欲善其事必先利其器!一些看似复杂的事情,只要选对了方法或工具往往都像是三步把大象装进冰箱里一样简单。
问:“把大象装进冰箱,总共分几步?”
答:“三步!”
“第一步:把冰箱门打开。”
“第二步:把大象装进冰箱。”
“第三步:把冰箱门关上。
其实从简单来说,机器学习流程也可以通过以上方法进行。
问:“想要实现机器学习,一共分几步?”
答:“三步!”
“第一步:获取数据。”
“第二步:训练模型。”
“第三步:预测结果。”
哈哈哈哈😂 😂 😂
其实要说细了,里面还有很多工作需要做,接下来我们一步一步进行讲解具体都有哪些?
Step1:需求&目标确认
大家可以思考一下,我们的机器学习流程最开始是什么?哪里找数据?用什么模型?在我看来都不是。而是应该明确需求和目标。
比如:
1、在参加kaggle或天池比赛的时候,我们最先明确的就是,这次比赛的主题和目标是什么?
2、在参加科研、写论文、发paper的时候,我们的研究目标是什么?
3、在工作中,我们需要完成和提升的目标是什么?
其实我们发现,不管是什么阶段、什么领域,想要开展机器学习的时候,第一步都是要先明确要实现的目标。
Step2:数据获取
在我们明确了目标之后,我们就需要思考数据能够从什么地方能够获取到?
一般我们的数据都可以从什么地方来呢?
比如:
1、本地文件:本地存储的表格、文本、图片、语音等,根据需要或资源提取本地存储的数据。
2、数据库:可从数据库,mysql、hive、mongdb等数据库中直接读取数据。
3、网络:有很多相关的数据其实存在与网络上,可通过下载、购买的形式进行数据获取。
Step3:数据预处理
在获取到数据后,我们要保证后续模型使用的数据数据是干净有效的,否则就会“垃圾进,垃圾出”。而数据处理环节也往往是“决定模型上限”的因素。因此我们需要先对拿到的数据进行检查。
例如:
1、检查数据合理性:比如性别字段中是不是出现了非性别的数据。
2、检查数据有效性:比如数据需要使用的是近一年的,是不是出现了超出时间范围的。
在数据检查完毕之后,我们需要把其中发现的有问题的数据进行修正,也叫做“数据清洗”,方法如下:
1、重复数据:经过多字段判断数据样本是否存在重复,若重复则进行留一处理。
2、缺失数据:检查数据是不是有缺失、空缺,若存在则可采用“填补”或删除的形式进行处理(需要根据需求和数据量决定)。(具体的数据缺失值处理方法可以看另一篇文章数据清洗)
3、异常数据:通过一些方法可以定位出异常值,可将异常值数据转为缺失数据,再根据缺失数据的处理方法对其进行处理,不再赘述。
在数据清洗完之后需要对数据集进行划分,训练集和测试集,用于后续模型训练和评估。
Step4:特征工程
这里先说一下什么是特征工程?特征工程和数据预处理有什么区别?
特征工程:说白了,就是在原有的特征上进行特征的变换、扩充、删减等操作。
为什么要进行特征工程?
1、其实在大部分时候,我们获取到的基本特征做模型是可以做的,但是效果往往很难达到预期,而且通过调整模型、优化模型参数等,都没办法较好的改善效果。原因就是在于用于模型的特征不能够让模型学习到有用的东西。这时候我们就要进行原有特征的变换,以满足提升模型效果的目的。
2、在特征过多的时候我们使用模型,往往会因为模型的学习能力,把一些不是主要因素的特征进行了学习,误把其作为重要的参考依据。因此也需要通过特征剔除的方法对这类的特征进行排除。
3、在探索发现的时候,我们也可以进行特征组合的形式,例如年龄在30~40岁之间且性别为男性的人是家庭的主要经济来源,而这就是把年龄段、性别做了组合出现的新特征,这也是特征工程的一种方法。
Step5:模型训练
在数据和特征都准备好了之后,我们就可以根据一开始定下来的目标进行模型选择,是分类?回归?聚类?等。根据不同的目标选择不同的机器学习模型,再将训练数据集放入模型中进行模型训练即可。
Step6:模型评价
这里提到的模型评价,主要在于模型训练后在测试集上进行预测结果和真实结果的误差评估。最终生成模型效果的评估结果。当然,根据特征和模型的不同,每次出来的结果也会不同。如下图:
其中的欠拟合与过拟合就是我们后续需要进行模型优化的目标。
Step7:模型优化
模型优化的主要目标是为了更好的提高模型的效果,
比如:
1、提高模型鲁棒性:也就是让模型尽可能的在不同的数据分布中都能保持较好的效果。
2、在原有的效果上,通过调整不同的模型参数,以提高模型的效果。
Step8:模型部署
在上述所有过程都执行完毕之后,就可以将模型进行部署,用于后续新数据的结果预测。
在此需要强调一点,并不是模型部署完就完成了。在真实数据中,随着数据的变换,模型会出现效果衰减,后续的模型调整和优化也是很重要的一个环节。