本文共 1393 字,大约阅读时间需要 4 分钟。
sklearn和tensorflow都提供了一些学习用的数据集,也提供了完整的demo,有些demo步骤较少,进行步骤 3、4.c、5 即可得出模型。这些框架把各种算法都封装好了,使用起来非常方便,作为应用主义者,我们当然没必要去太过深入研究算法实现和推导,但是我们首先要明晰各种算法的使用场景和优劣势,才不至于消耗太多时间训练出一个个无效的模型。
以Tensorflow的MNIST(CNN卷积神经网络识别0-9的图像)为例
手写一个数字,拍照或扫描成图片,统一将分辨率调整成28 * 28,再将图片根据每个像素的灰度值转成28 * 28维的矩阵 监督学习还需要给样本做好标记噪音数据会对学习结果产生负影响,噪音所占比重越大,学习结果越离谱,因此需要降噪,甚至是去噪处理。
但是,更经常的,增加噪音,反而可以提高泛化性能,提高模型防御噪音的能力。通过对数据进行特征选择和降维,可以降低计算难度、只留下关键信息、提高泛化性能。
数据增强同样可以提高泛化性能,例如讲图片进行适当旋转、缩放、平移等都属于数据增强。
降维方法如PCA主成分分析、SVD奇异值分解、核化线性降维等
通过留出法、自助采样法、k次k折交叉验证法等方法对训练集和测试集进行划分,训练集和测试集尽量互斥,训练集通常占样本集的2/3~4/5之间。
通过欠采样、过采样、阈值移动这三种技术处理好类别不平衡问题。无监督学习,目标是通过对无标记训练样本的学习来揭示数据的内在性质以及规律,为进一步的数据分析提供基础,此类学习任务研究最多、应用最广的是聚类
有些参数是需要人工初始化的,比如EM算法的最大迭代轮数、KNN的k值、SVM中的C常数、CNN中卷积的维度调整等
根据不同的任务,选择适合的机器学习算法,我们需要知道不同算法的能力,还要对各种算法的优劣势有所了解,详见
二分类和多分类
多分类任务,通常对多分类拆分成多个二分类器,拆分策略如OvO、OvR、MvM 仅能处理二分类任务的算法如:AdaBoost(集成学习Boosting族的一个算法) 线性分类任务 对数几率回归(虽然叫回归,实际却是分类学习方法)、线性判别分析(LDA)、KNN 其他分类任务 决策树分类、神经网络、深度学习、CNN卷积神经网络、贝叶斯分类器、贝叶斯网、SVM支持向量机 回归任务 线性回归、对数线性回归、KNN、岭回归、决策树回归、SVR支持向量回归、深度学习懒惰学习
如果数据频繁更新,可以在预测时再进行学习,这称为懒惰学习,可以懒惰学习的算法如:KNN(k近邻分类)、懒惰决策树、朴素贝叶斯分类器等。通过评估性能,来决定如何调整模型的参数,以及对比多个模型的性能高低。
为了进一步提高模型的泛化性能,往往会集成多个个体学习器,通过投票法或者平均法等策略结合得出更佳的最终预测结果。
保存最终学得的模型,如Tensorflow支持对模型进行存档,以便模型迁移或增量学习等。
转载地址:http://jibgi.baihongyu.com/