测试集、验证集、训练集各自的作用:
训练集:参数调优。
验证集:超参、模型的选择,模型评估,正则化 。
为什么用验证集进行正则化防止过拟合而不是训练集:
通过 validation_data 来设置超参数,一旦我们得到了想要的超参数,就用 test_data 做最后的精度评估。这让我们相信test_data的精度能够真正体现网络的泛化能力。
测试集:测试模型泛化能力。
数据增广(数据规模不足时如何处理)
1.研究小规模数据处理模型–>如 meta learning 元学习是强调从不同的若干小任务小样本来学习一个对未知样本未知类别都有好的判别和泛化能力的模型
2.数据扩展:生成伪样本GAN、VAE
3.标注新数据
4.迁移学习 :已训练好的模型(预训练模型)参数迁移到新的模型来帮助新模型训练
数据噪声
常见的噪声数据的处理方法:分箱;聚类;计算机和人工检查结合;回归
分箱
实际上就是按照属性值划分的子区间,如果一个属性值处于某个子区间范围内,就称把该属性值放进这个子区间所代表的“箱子”内。
数据有噪声好不好
在于你应用的场景是有噪的还是无噪的。
. 样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系;这时就会造成过拟合。
ps 缺失值的处理方式
有缺失值的样本不要了(横向角度)
有缺失值的属性不要了(纵向角度)
平均值填充、补null值
利用相邻值填充
选择与他属性相似的行去填充
CNN
CNN基本原理
卷积神经网络(Convolutional Neural Network,简称CNN),是一种前馈神经网络,人工神经元可以响应周围单元,可以进行大型图像处理。卷积神经网络包括卷积层和池化层。
结构(不详细列举)
池化层(Pooling):使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性。使用池化层也有防止过拟合问题的作用。
CNN的特点 https://www.imooc.com/article/68983
局部连接:卷积层输出矩阵上的某个位置只与部分输入矩阵有关,而不是全部的输入矩阵。卷积层输出的某个特征可能只和输入图片的某一部分相关,和其它位置的信息没有任何关联,局部连接可以让特征只关注其应该关注的部分。同时也减少了神经网络的参数。
参数共享:同一卷积层中 filter 的参数是共享的,一个 filter 无论在哪个位置进行卷积操作,filter 矩阵中的值都是一样的。(当然同一层不同的 filter 参数不一样,不同层之间 filter 的参数也不一样。)共享 filter 的参数可以使得图像中的内容不受位置的影响。以MNIST手写数字识别为例,无论数字“1”出现在左上角还是右下角,图片的种类的都是不变的。共享卷积层 filter 的参数还可以巨幅减少神经网络上的参数。
ps CNN知识(杂)
零填充:会造成边缘区域的值与中间的值不一样,精度下降
重复填充:直接将边缘的当作填充内容。常用。
空洞卷积作用:扩大感受野;捕获多尺度上下文信息。
缺点:
虽然空洞卷积增大了感受野,但是,由于空洞卷积的计算方式类似于棋盘格式,某一层得到的卷积结果,来自上一层的独立的集合,没有相互依赖,因此该层的卷积结果之间没有相关性,即局部信息丢失。
分组卷积可以有效降低运算量。
1*1卷积操作只是进行了信息的融合。
RNN
RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络,序列数据即后面的数据跟前面的数据有关系。RNN之所以可以解决序列问题,是因为它可以记住每一时刻的信息,每一时刻的隐藏层不仅由该时刻的输入层决定,还由上一时刻的隐藏层决定。隐藏层的权重共享。
RNN的梯度消失问题:
关于RNN反向传播中的梯度消失,它与DNN的不一样。DNN的梯度消失指的是靠近输入层的权重梯度真的会消失,RNN的梯度消失指的是当前的梯度用不到前面的梯度了。RNN计算前面时刻的导数时,前面的可能会消失或者爆炸,但是当前时刻整体的梯度并不会消失,并且因为权重共享,所以整体的梯度还是会更新。
LSTM:输入门、遗忘门、输出门、内部记忆细胞
GRU(减少了参数,只有两个门了):更新门、重置门
GRU 主要是在 LSTM 的模型上做了一些简化和调整,在训练数据集比较大的情况下可以节省很多时间。
1.1 过拟合:学习器把训练样本学得"太好",很可能把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降。
1.1.1 在实际中如何解决过拟合:
为了防止过拟合,我们需要用到一些方法,如:early stopping、数据集扩增(Data augmentation)、正则化(Regularization)、Dropout等。
Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
Early stopping方法的具体做法是,在每一个Epoch结束时(一个Epoch集为对所有的训练数据的一轮遍历)计算validation data的accuracy,当accuracy不再提高时,就停止训练。
一般的做法是,在训练的过程中,记录到目前为止最好的validation accuracy,当连续10次Epoch(或者更多次)没达到最佳accuracy时,则可以认为accuracy不再提高了。此时便可以停止迭代了(Early Stopping)。这种策略也称为“No-improvement-in-n”,n即Epoch的次数,可以根据实际情况取,如10、20、30……
数据集扩增
通俗得讲,数据集扩增即需要得到更多的符合要求的数据,即和已有的数据是独立同分布的,或者近似独立同分布的。一般有以下方法:
从数据源头采集更多数据
复制原有数据并加上随机噪声
重采样
根据当前数据集估计数据分布参数,使用该分布产生更多数据等
ps:重采样是指根据一类象元的信息内插出另一类象元信息的过程。在遥感中,重采样是从高分辨率遥感影像中提取出低分辨率影像的过程。常用的重采样方法有最邻近内插法(nearest neighbor interpolation)、双线性内插法(bilinear interpolation)和三次卷积法内插(cubic convolution interpolation)。
正则化
本质:就是给模型加一些规则限制,约束要优化参数,目的是防止过拟合。其中最常见的规则限制就是添加先验约束,其中L1相当于添加Laplace先验,L相当于添加Gaussian先验。
即在对模型的目标函数(objective function)或代价函数(cost function)加上正则项。
L1正则项是为了使得那些原先处于零(即|w|≈0)附近的参数w往零移动,使得部分参数为零,从而降低模型的复杂度(模型的复杂度由参数决定),从而防止过拟合,提高模型的泛化能力。
L2正则项起到使得参数w变小加剧的效果,但是为什么可以防止过拟合呢?一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力。
ps:奥卡姆剃刀即“若有多个假设与观察一致,则选最简单的那个”
Dropout
而在神经网络中,有一种方法是通过修改神经网络本身结构来实现的,其名为Dropout。该方法是在对网络进行训练时用一种技巧(trick)
在训练开始时,随机得删除一些(可以设定为一半,也可以为1/3,1/4等)隐藏层神经元,即认为这些神经元不存在,同时保持输入层与输出层神经元的个数不变
集成学习方法
集成学习是吧多个模型集成在一起,来降低单一模型过拟合风险,如Bagging方法。
1.2 欠拟合:对训练样本的一般性质尚未学好。
1.2.1 在实际中如何解决欠拟合
在决策树学习中扩展分支、在神经网络学习中增加训练轮数等。
1.3 如何判断模型处于过拟合、欠拟合?
(学习曲线方法)过拟合是指模型在训练数据拟合呈过当的情况,反应到评估指标上,就是模型在训练集上的表现很好,但在测试集和新数据上的表现很差。欠拟合指的是模型在训练和预测时都不好的情况。
(复杂说法)
通过学习曲线和交叉验证判断。
5、 决策树
为达到目标,根据一定的条件进行选择的过程就是决策树
ps 随机森林是树的升级版,随机指的是树的生长过程。在构建决策树时候,会从训练数据中有放回的随机选取一部分样本,随机选取数据的部分特征进行训练。随机森林的输出结果由投票决定,如果大部分决策树认为测试数据是“好苹果”,那随机森林的输出就是“好苹果”.
ID3算法:划分属性选择–>信息增益
C4.5算法: 增益率
CARD算法: 基尼指数
SVM
找到线附近的样本,让他附近的样本与线距离越远越好,这个距离被称为分类间隔。
对样本依赖小,不会过拟合。
支持向量机本身便是一种监督式学习的方法,以结构风险最小化原则为理论基础。
6、(开放性问题)在工业场景中要解决一个结构化问题,从数据标注的成本、算法、选择的模型以及评价指标这些因素去考虑:
ps 数据标记概念
数据标注的成本:(有监督的机器学习就需要有标注的数据来作为先验经验。)人力,财力,时间
这些都需要考虑。数据标注的成本是很高的。
考虑将学习方式转换为无监督或者半监督或对偶学习。
ps 对偶学习概念:
算法:机器学习中的“算法”是在数据上运行以创建机器学习“模型”的过程。
得到一个问题后首先判断他是属于哪种问题,从而决定用哪种算法。
有以下算法:
(线性回归解决的是回归问题,逻辑回归相当于是线性回归的基础上,来解决分类问题。)
线性回归(属于回归问题)
它能够分析一个变量与其他(一个或者多个)变量之间的相关关系。
逻辑回归(属于分类问题)
逻辑回归是分析因变量取某个值的概率与自变量的关系。
ps 线性回归与逻辑回归的区别:
1.线性回归用来预测连续的变量(房价预测),逻辑回归用来预测离散的变量(分类,癌症预测)
2. 线性回归是拟合函数,逻辑回归是预测函数
3. 线性回归的参数计算方法是最小二乘法,逻辑回归的参数计算方法是似然估计的方法
决策树(属于分类问题)
人工神经网络(属于分类问题)
SVM(属于分类问题)
二分类问题典型代表
NB(属于分类问题)
KNN(属于分类问题)。。。。。。
评价指标(根据选择的算法选择对应的评价指标。如决策树和SVM要使用accuracy,及分类问题要用accuracy)
泛化误差越小越好
评价指标:
1)True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);
2)False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
3)False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
4)True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。
accuracy = (TP+TN)/(P+N) 正确率越高,分类器越好
precision=TP/(TP+FP)表示被分为正例的示例中实际为正例的比例
recall=TP/(TP+FN) 度量有多个正例被分为正例
F1=1/2(1/P+1/R) F1值越高性能越好
模型
机器学习中的“模型”是运行在数据上的机器学习算法的输出。
选择的模型就是靠评价指标选的吧?所以选择的模型就是看最终的评价指标喽。
=======================================
补充知识:
PCA
算法步骤:
设有 m 条 n 维数据。
ps:过采样和欠采样是处理非平衡分类问题时的常用手段。
拿二元分类为例,如果训练集中阳性样本有1000个,阴性样本有10万个,两者比例为1:100严重失衡。为了一些模型的性能考虑,我们需要进行一些处理使得两者的比例尽可能接近。
过采样:对少的一类进行重复选择,比如我们对1000个阳性样本进行有放回的抽样,抽5万次(当然其中有很多重复的样本),现在两类的比例就变成了1:2,比较平衡。
欠采样:对多的一类进行少量随机选择,比如我们对10万个阴性样本进行随机选择,抽中2000个(当然原样本中很多样本未被选中),现在两类的比例就变成了1:2,比较平衡。
(感觉 ===欠是动词,缺少的意思,过则是太多了的意思。是对执行动作前的样本的描述)
原文链接
目标函数,损失函数,代价函数 https://blog.csdn.net/lyl771857509/article/details/79428475
结构化预测:https://zhuanlan.zhihu.com/p/39745877
有一类的预测,它并不是输出一个标量或者一个类别,而是输出些有结构的输出,比如,一个序列,一个句子,一个图,一颗树…将输出这些结构化结果的过程叫做结构化预测(Structured Prediction)。
本文参考资料除显式粘贴的链接外均在各知识点的超链接处。