1、常用梯度下降法
- 机器学习绝大部分问题都是优化问题,绝大部分优化问题可以使用梯度下降法解决。
- 主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。
- 函数沿梯度的方向具有最大的变化率,朝着梯度相反的方向,就能让函数值下降的最快。
- 在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率
- 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向
- α在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过α来控制每一步走的距离,J’是对J求导
1.1 随机梯度下降(SGD)
- 梯度下降每次使用所有训练样本的平均损失来更新参数,每次更新模型参数需要遍历所有数据,当训练样本太大会消耗计算资源,所以使用随机梯度下降——每次使用单个样本的损失来近似平均损失。
- 由于梯度下降只采用一部分样本来估计当前的梯度,所有对梯度的估计准确度不高,会出现偏差,导致目标函数收敛不稳定、不收敛。
1.2 小批量随机梯度下降
小批量随机梯度下降是为了降低随机梯度下降的方差,使模型更稳定,使用一批随机数据的损失来近似平均损失,由于批的大小为2的幂时能充分利用矩阵运算操作,所有批一般为32,64,128,256等。
2、常用的损失函数
2.1 0-1 loss
记录分类错误的次数
2.2 Hinge loss
最常用在SVM中的最大化间隔分类中,在二分类情况下,对可能的输出y^= 1或 y^ = −1和分类器分数y,预测值y的定义:
- 当y >= 1或者y <= −1时,都是分类器确定的分类结果,此时的损失函数loss为0
- 当预测值**y ∈ (−1,1)**时,分类器对分类结果不确定,loss不为0。
- 显然,当y = 0时,loss达到最大值。
当y^ = 1时,其函数图像如下,与0-1损失对比:
2.3 Log loss 对数损失
2.4 Squared Loss 平方损失
真实值与预测值之差的平方,常用于线性模型。
2.5 Exponential Loss 指数损失
- 特点是越接近正确结果误差越小,如Adaboost算法。
- 缺点:误分类样本的权重会指数上升,如果数据样本是异常点,会极大干扰后面基本分类器的学习效果。
3、数据不平衡
3.1 数据不平衡定义
-
数据不平衡又称样本比例失衡。对于二分类问题,一般正样本与负样本比例应该差不多。
-
一般而言训练数据中每个类别有5000个以上样本,其实也要相对于特征而言,来判断样本数目是不是足够,数据量是足够的,正负样本差一个数量级以内是可以接受的,不太需要考虑数据不平衡问题。
-
问题根据难度从小到大排个序:(数据量大——最少的类别也有几万个样本,这样的问题通常比较容易解决)
大数据+分布均衡 < 大数据+分布不均衡 < 小数据+数据均衡 < 小数据+数据不均衡
3.2 数据不平衡解决方法
-
数据采样:上采样、下采样
-
上采样:将小众类复制多份,容易过拟合,需要在生成新数据时加入较小的随机扰动。放大图像(或称为上采样),以数据量多的一方的样本数量为标准,把样本数量较少的类的样本数量生成和样本数量多的一方相同。
-
下采样:从大众类中选取部分样本,容易丢失重要信息,需要多次随机下采样。缩小图像(或称为下采样),更关心少数类的问题的时候,就从多数集中选出一部分数据与少数集重新组合成一个新的数据集。
-
下采样的缺陷解决方法:
(1)EasyEnsemble,利用模型融合的方法(Ensemble):多次下采样(放回采样,这样产生的训练集才相互独立)产生多个不同的训练集,进而训练多个不同的分类器,通过组合多个分类器的结果得到最终的结果;(2)BalanceCascade,利用增量训练的思想(Boosting):先通过一次下采样产生训练集,训练一个分类器,对于那些分类正确的大众样本不放回,然后对这个更小的大众样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果;
(3)利用KNN试图挑选那些最具代表性的大众样本,叫做NearMiss,这类方法计算量很大;
-
-
数据合成:利用已有样本的特征相似性生成更多的新样本。
SMOTE算法为每个小众样本合成相同数量的新样本,这带来一些潜在的问题:一方面是增加了类之间重叠的可能性,另一方面是生成一些没有提供有益信息的样本。为了解决这个问题,出现两种方法:Borderline-SMOTE与ADASYN- Borderline-SMOTE:对每一个minority都会构造新样本,但从数据分布来看,对于A、B、C三点,C点很可能是一个异常点(Noise),B点是正常分布的点(SAFE),而A点分布在边界位置(DANGER);直观上,对于C点我们不应该去构造新样本,对B点,构造新样本不会丰富minority类别的分布。只有A点,如果构造新样本能够使得A点从(DANGER)到(SAFE),加强minority类别的分类边界,这个就是Borderline-SMOTE;
- ADASYN:方法从保持样本分布的角度来确定生成数据,生成数据的方式和SMOTE是一样的,不同在于每个minortiy样本生成样本的数量不同;
-
加权:对不同类别分类错误施加不同权重,使机器学习侧重样本较少且易出错的样本。
-
一分类:当正负样本严重失衡,使用一分类,例如One-class SVM(利用高斯核函数将样本空间映射到核空间,在核空间中找到一个包含所有数据的高维球体,如果测试数据在球体中归为多数类,不在归为少数类 )
3.3 数据不平衡问题分类
根据数据量的多少和数据不平衡程度,可以将数据不平衡问题分为以几类:
-
大数据+轻微数据不平衡(正负样本数量相差在一个数量级内):
如豆瓣上的电影评分数据分布等,此类问题常见的机器学习模型即可解决,无须额外处理。 -
小数据 + 轻微数据不平衡(正负样本数量相差在一个数量级内):
此类问题可以通过加随机扰动的上采样方法处理。 -
大数据 + 中度数据不平衡(正负样本数量相差在两个数量级内):
此类问题可以通过下采样的方法处理。 -
小数据 + 中度数据不平衡(正负样本数量相差在两个数量级内):
如医学图像分析。此类问题可以用数据合成的方法来解决。 -
大数据 + 重度数据不平衡(正负样本数量相差超过两个数量级):
如金融领域的欺诈用户判断,风控领域的异常行为检测。此类问题可以通过一分类(one-class Learning)或离群点异常检测方法来解决。 -
小数据 + 重度度数据不平衡(正负样本数量相差超过两个数量级):
如医疗领域的肿瘤诊断。此类问题可以通过一分类(one-class Learning)或离群点异常检测方法来解决。
参考链接:https://blog.youkuaiyun.com/FlySky1991/article/details/78379360
参考连接:https://blog.youkuaiyun.com/fantacy10000/article/details/90552584
参考《人工智能程序员面试笔试宝典》猿媛之家,凌峰