《机器学习实战(基于scikit-learn和TensorFlow)》第二章内容的学习心得 (8)

image

随机森林模型显然不如决策树模型。

 

我们尝试了很多种不同的模型,原因是在这个阶段我们需要尝试不同模型,选出其中有潜力的模型,千万不要花太多时间去调整每个模型的超参数,确定要使用的模型才是这个阶段最关键的!

至于模型的过拟合问题或者其他什么问题,我们等确定模型后再调试即可。

每个模型都应该妥善的保存,这里介绍一个python中的pickel模块或者sklearn.externals的joblib模块:

image

 

七、微调模型

假设,你现在已经确定了好几个有潜力的模型,那么这时候需要微调它们了。

微调的一个方法是对模型的超参数进行调整,这个过程很耗时,你需要科学的工具帮助你。使用sklearn中的GridSearchCV来帮助你。

image

这里面param_grid首先评估第一个dict中的n_estimator和max_features的所有可能的组合(3*4=12),然后尝试第二个dict中的参数组合(2*3=6)。最后需要尝试6+12=18种组合,并对每个模型进行5次训练。当运行完毕后,可获得最佳参数组合:

image

同时,我可以得到最好的估算器:

image

评估分数也可以得出:

image

对了,有些数据准备也可以当作超参数来处理,比如之前的自定义转换器中是否添加“add_bedrooms_per_room”。

当然若超参数数量非常大,一般选择RandomizedSearchCV,这个函数会在每次迭代中为每个超参数随机选择一个值,对一定数量的迭代进行评估,这里不详细介绍了,具体请Google。

检查最佳模型,我们还可以得出每个属性的相对重要程度:

image

说明一下最下面那个array[]是之前的ocean_proximity属性。

 

好了,我们微调过后,通过测试集评估系统吧。

image

这个结果比之前就好多了!

 

八、展示解决方案

这里可以通过制作PPT等方式,强调系统学习到了什么、什么属性是有用的、算法基于了什么假设、系统目前存在的限制有什么,用清晰可视化的方式呈现!

九、启动、监控和维护系统

这里就是即将让项目进入实战的环节,这时候应该为生产环境做准备,特别是将生产数据接入系统,当然为了防止出错,我们必须要进行代码测试!

监控代码也要编写,这是为了定期检查系统的实时性能,在性能下降后触发警报!

任何模型几乎都经不起时间的演化,随着时间的演化,适合现阶段的参数可能不是该模型存在的参数,模型会渐渐“腐化”,所以我们应该定期使用新的数据训练模型,让模型保持年轻。同时做好模型备份,防止最新迭代的模型出现错误好马上回滚。

还要注意的是,模型的预测结果需要专家进行分析,确保环节安全。

最后要注意的是要监控输入系统的数据的质量,及时查找出质量较差的数据,防止污染系统。

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdzfp.html