如何实现一个完整的机器学习系统?
机器学习
最后更新 2020-05-19 17:38 阅读 8471
最后更新 2020-05-19 17:38
阅读 8471
机器学习
1. 首先明确的你的问题
是一个监督学习还是非监督学习,还是增强学习?是一个分类问题还是回归问题,或者其他?是应该用离线训练还是在线训练?
然后要选定性能评估标准 对于回归问题,比如可以选择RMSE(Root Mean Square Error),其他的性能评估还有MAE(Mean Absolute Error),MAE和RMSE都可以用来衡量两个向量的距离。
RMSE我们称之为L2正则,MAE称之为L1正则 更一般化的话,可以是Lk正则,L0正则给定向量中不为零的值,L无穷的话给定的是向量中绝对值最大的值。 正则的k越大,越关注在绝对值更大的值,而忽略那些值比较小的值。这也是为什么说RMSE比MAE来说对于异常值更敏感。
当然对于不同的问题,评价标准有很多,不仅限于Lk正则的方式
2. 获取数据
对于实际应用的问题,需要有相应的数据集。通常开放的数据集可以从Kaggle,Amazon AWS Dataset等等进行下载,包括FlyAI的一些开放信息。
然后为当前工程创建相应的目录信息,也可以考虑为项目创建一个虚拟空间,virtualenv,取决于你的需求。
3. 清理数据
使用pandas加载数据,利用info/describe函数查看数据信息。确认数据的分布,数量以及数值范围 还需要做一些缺失值的处理,对于非数值类型的还需要进行一些转换,变成数值类型,one-hot编码等等。 还可以做一些数据的可视化。
这里也要根据实际数据的不同进行一个调整,比如如果是图像数据的话,那是否要进行图像增强操作等等。
4. 选择和训练模型
比如说选择传统的机器学习模型:逻辑回归,SVM,决策树,朴素贝叶斯,等等。
或者是选择神经网络,比如说图像问题可以使用CNN,已有的模型都能够很好的做到图像的分类,识别工作,比如ResNet,AlexNet,VGGNet等等,可以结合自己的问题进行适当的fine-tune,一般可以得到还不错的效果。如果是不定长的序列,那可以使用RNN,LSTM等等。或者尝试现在的图神经网络。
可以选择的模型和方法有很多,这些都需要根据实际的问题进行选择,并不断验证,确认适合实际问题的最优模型。
还是选择已有的模型,再对现有的问题进行Fine-tune,这些都需要根据实际的问题进行选择,并不断验证,确认适合实际问题的最优模型。
训练中也涉及到很多问题,包括过拟合,欠拟合。模型不work该怎么办的问题,需要很多的训练技巧和训练尝试。也是机器学习系统中需要花费很多时间的部分。
5. 上线模型
将训练好的模型进行部署,在实际的使用场景中验证模型的有效性。