博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我所理解的机器学习任务处理步骤
阅读量:4282 次
发布时间:2019-05-27

本文共 1393 字,大约阅读时间需要 4 分钟。

假设我们手上已经采集到原始数据,那么我们如何处理它们?

sklearn和tensorflow都提供了一些学习用的数据集,也提供了完整的demo,有些demo步骤较少,进行步骤 3、4.c、5 即可得出模型。这些框架把各种算法都封装好了,使用起来非常方便,作为应用主义者,我们当然没必要去太过深入研究算法实现和推导,但是我们首先要明晰各种算法的使用场景和优劣势,才不至于消耗太多时间训练出一个个无效的模型。

1、格式化原始数据

以Tensorflow的MNIST(CNN卷积神经网络识别0-9的图像)为例

手写一个数字,拍照或扫描成图片,统一将分辨率调整成28 * 28,再将图片根据每个像素的灰度值转成28 * 28维的矩阵
监督学习还需要给样本做好标记

2、噪音处理、特征选择、数据增强和降维

噪音数据会对学习结果产生负影响,噪音所占比重越大,学习结果越离谱,因此需要降噪,甚至是去噪处理。

但是,更经常的,增加噪音,反而可以提高泛化性能,提高模型防御噪音的能力。

通过对数据进行特征选择和降维,可以降低计算难度、只留下关键信息、提高泛化性能。

数据增强同样可以提高泛化性能,例如讲图片进行适当旋转、缩放、平移等都属于数据增强。

降维方法如PCA主成分分析、SVD奇异值分解、核化线性降维等

3、训练集、测试集的划分

通过留出法、自助采样法、k次k折交叉验证法等方法对训练集和测试集进行划分,训练集和测试集尽量互斥,训练集通常占样本集的2/3~4/5之间。

通过欠采样、过采样、阈值移动这三种技术处理好类别不平衡问题。

4.a、无监督学习

无监督学习,目标是通过对无标记训练样本的学习来揭示数据的内在性质以及规律,为进一步的数据分析提供基础,此类学习任务研究最多、应用最广的是聚类

4.b、调参

有些参数是需要人工初始化的,比如EM算法的最大迭代轮数、KNN的k值、SVM中的C常数、CNN中卷积的维度调整等

4.c、对训练集进行训练

根据不同的任务,选择适合的机器学习算法,我们需要知道不同算法的能力,还要对各种算法的优劣势有所了解,详见

二分类和多分类

多分类任务,通常对多分类拆分成多个二分类器,拆分策略如OvO、OvR、MvM
仅能处理二分类任务的算法如:AdaBoost(集成学习Boosting族的一个算法)
线性分类任务
对数几率回归(虽然叫回归,实际却是分类学习方法)、线性判别分析(LDA)、KNN
其他分类任务
决策树分类、神经网络、深度学习、CNN卷积神经网络、贝叶斯分类器、贝叶斯网、SVM支持向量机
回归任务
线性回归、对数线性回归、KNN、岭回归、决策树回归、SVR支持向量回归、深度学习

懒惰学习

如果数据频繁更新,可以在预测时再进行学习,这称为懒惰学习,可以懒惰学习的算法如:KNN(k近邻分类)、懒惰决策树朴素贝叶斯分类器等。

5、对测试集进行测试,评估测试性能(约等于泛化性能)

通过评估性能,来决定如何调整模型的参数,以及对比多个模型的性能高低。

6、集成学习

为了进一步提高模型的泛化性能,往往会集成多个个体学习器,通过投票法或者平均法等策略结合得出更佳的最终预测结果。

7、保存模型

保存最终学得的模型,如Tensorflow支持对模型进行存档,以便模型迁移或增量学习等。

附:sklearn官方提供的算法选择路径图,不是很全面,仅供参考。

英文原版

中文版,来自网络

转载地址:http://jibgi.baihongyu.com/

你可能感兴趣的文章
pom报错:Element' dependency' cannot have character [ children], because the type's content type is e
查看>>
(转)面试必备:HashMap、Hashtable、ConcurrentHashMap的原理与区别
查看>>
CDH5.15.2替换JDK1.7到1.8
查看>>
JAVA多线程(9):多线程依次打印ABC
查看>>
(转)github在git push之后不记录Contributions
查看>>
(转)IDEA导入Git项目后无Git选项
查看>>
Tomcat的GC优化实践
查看>>
idea多模块项目间通过配置pom.xml相互引用
查看>>
(转)MYSQL如何设置大小写敏感
查看>>
SpringBoot单元测试,无法导入@RunWith
查看>>
(转)hbase balance命令走过的坑
查看>>
Linux环境cpu过高,定位问题步骤(附实例)
查看>>
(转)java final关键字使用及面试题重点
查看>>
(转)CDH下集成spark2.2.0与kafka(四十一):在spark+kafka流处理程序中抛出错误java.lang.NoSuchMethodError:
查看>>
(转)maven打包时跳过测试
查看>>
(转)jstack命令执行报错:Unable to open socket file: target process not responding or HotSpot VM not loaded
查看>>
Centos7.5 离线安装firefox
查看>>
Nginx安装(linux)
查看>>
flume实例(一):监控目录
查看>>
flume实例(二):监控服务器日志
查看>>