机器学习笔记3——梯度下降、损失函数与数据不平衡

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
参考《人工智能程序员面试笔试宝典》猿媛之家,凌峰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值