博客简介:
关键字:数据处理完整流程代码+实践经验+算法特性思考与特点总结
不论是数据科学,传统机器学习还是深度学习,相关的理论讲解和代码资源已经十分丰富,但是当我们实际想要使用代码实现这些理论的时候,却总觉得机器学习或者数据科学的任务流程会有点复杂:繁琐的前置数据分析和处理,充满各种细节的模型搭建与训练,不同的模型分析和评价等等,若要完整地走完所有的流程,需要考虑到的东西多之又多,哪怕一个简单的数据分析问题,所需的代码量也不可小视,但是好在不论是传统机器学习还是深度学习,问题大概的处理流程是一定的,在这里将机器学习任务的大概流程总结成为:前置数据分析阶段,数据处理阶段,搭建训练和评价模型阶段,如果我们可以将整个数据处理的流程菜谱化,把每一个主要流程中可能需要的各个方法提前写好,那么在处理实际问题的时候,码代码的工作量就可以降低到最少,最后的工作就是简单的从各个流程中选出你要的代码‘积木‘,然后将它们拼接起来,实现真正的一劳永逸,这也是本人撰写本文的主要动机。因此本文本质上具备着工具书的性质,尝试对利用传统机器学习和深度学习处理数据科学问题的流程进行‘完全‘整理,并将各个流程中重要的常用方法与代码进行组织和改进,缩短在实际项目中的工作时间,由于是在尝试对基本流程进行完全整理,所以会尽可能包含所有处理一般数据问题时可能会用到的代码**(将持续更新补充),让大家在碰到问题时只要顺着这本‘工具书’中的流程走下去,把它当成一个模版或者流水线(流程骨架),在其中挑选需要用到的代码块,简单地组织在一起就可以出色地完成任务。
因为以着‘工具书‘为目标进行编写和整理, 因此博客基本不会涉及算法和方法背后的理论介绍,默认本文的读者已经熟悉了基本的机器学习算法和基础统计学方法,若读者对部分名词感到陌生,利用网上众多的优秀资料也可以快速进行学习,同时本文加入了很多对于技术细节的思考与算法运用的经验总结。
最后希望这篇文章可以帮助到大家。
在后续的学习工作中我会持续对此博客系列进行更新,希望可以让博客内容更加完备和准确,同时在之后会尝试将更加前沿的数据科学技术逐渐融合于其中。
什么是好的机器学习模型/如何得到好的模型+数据分析阶段:(you are here)
前置数据处理阶段: https://blog.youkuaiyun.com/weixin_44563688/article/details/86558939
非神经网络机器学习模型的搭建,训练及评价阶段: https://blog.youkuaiyun.com/weixin_44563688/article/details/86568400
神经网络机器学习模型的搭建,训练及评价阶段: https://blog.youkuaiyun.com/weixin_44563688/article/details/88884468
本篇为《机器学习完备流程总结+实践经验细节+代码工具书(1)》,主要介绍前置分析与数据分析相关流程与对应代码(基于python3):
机器学习模型的本质与误差来源:
理解这个问题和我们做项目没有直接的关系,但深入理解机器学习模型的运作原理与特点可以帮助我们合理地规划整个任务流程,系统性地对模型进行后续优化与改进以及清晰地意识到训练完毕的模型在实际应用中潜藏着的风险。
1.优化机器学习模型的目标:
训练和优化机器学习模型的目标简单来说是希望提高模型在测试数据集上的表现(需要注意这只是一个比较general的说法,事实上某些时候模型在测试数据集上的表现太好并不是一件好事,其中一个原因可见下方机器学习的习惯中的相关论述)。进一步来说我们希望平衡模型的bias和variance,关于variance和bias对于模型表现的具体影响可以通过下图理解:
关于variance和bias这里有几个重要结论:
- 对于一般机器学习模型,模型的bias越大意味着variance越小,反之依然。
- variance越大的模型一般能力越强,bias越大的模型一般较为稳定。稳定就意味着对于数据的精度和数量的要求较低,结果虽然不会太好但也不可能太坏(模型上限低下限高)。而能力强大的high variance模型在训练时不仅要求trainset数据数量充足,还对训练数据中的噪音和数据缺陷十分敏感,根据训练数据的多少和数据的质量的不同,最终模型表现的上下限会有很大差距:模型可能非常好,也可能非常坏。
- 我们训练和优化模型的准则是:要在平衡bias与variance相对大小的基础上寻求同时降低bias和variance的可能。
2.机器学习模型的能力上限与改进时的主要着手点:
所有的机器学习模型可以分为Generative model(Naive Bayes,Mixture models,Hidden Markov models,Restricted Boltzmann Machines,etc)以及Discriminative mode(Linear Regression, Logistics Regression,SVM,Random forest,Neural network etc.)两类,如果我们的输入(features)是X,输出(labels or regression object)是y,generative model本质是在寻找一个函数h(X,y)来模拟P(X,y),而dicriminative model本质是在寻找一个函数h(X,y)来模拟P(y | X),两者的本质都是用一些数学方法来逼近训练数据集中暗含着的P(X,y)或者P(y | X),