机器学习知识点:不均衡数据的采样方法

news/2024/12/28 11:09:15/

下采样方法

ClusterCentroids

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.ClusterCentroids.html

ClusterCentroids是一种基于聚类方法的欠采样算法,通过生成聚类中心来进行欠采样。

ClusterCentroids算法通过使用K均值算法,将大多数类别的样本聚类为一组,并用聚类中心替代该组的样本。该算法通过将K均值算法拟合到大多数类别并使用N个聚类中心的坐标作为新的大多数类别样本来保留N个大多数类别的样本。

技术交流

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

好的文章离不开粉丝的分享、推荐,文章源码、数据、技术交流提升,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、添加微信号:dkl88194,备注:来自CSDN + 机器学习
方式②、微信搜索公众号:Python学习与数据挖掘,后台回复:机器学习

EditedNearestNeighbours

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.EditedNearestNeighbours.html

EditedNearestNeighbours(ENN)是一种基于欠采样的方法,用于处理类别不平衡问题。它通过删除靠近决策边界的样本来清理数据库。

ENN算法的原理如下:

  1. 对于欲进行欠采样的类别中的每个样本,计算其最近邻样本。

  2. 如果最近邻样本与当前样本的类别不一致,则将当前样本从数据集中删除。

通过这个过程,ENN算法可以对数据集进行编辑,删除那些与其邻近样本不“足够”一致的样本。该算法通过考虑样本周围的邻近样本来判断样本是否应该被保留。在选择标准方面,ENN提供了两种可选的策略:

  1. 多数类选择(kind_sel='mode'):只有当所有最近邻样本都属于与当前样本相同的类别时,当前样本才会被保留。

  2. 全部选择(kind_sel='all'):只要最近邻样本中有一个与当前样本的类别不一致,当前样本就会被删除。

CondensedNearestNeighbour

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.CondensedNearestNeighbour.html

CondensedNearestNeighbour(CNN)是一种基于欠采样的方法,用于处理类别不平衡问题。它使用最近邻规则来迭代地决定是否删除样本。

算法的原理如下:

  1. 将所有少数类样本放入集合C。

  2. 从目标类别(欲进行欠采样的类别)中添加一个样本到集合C,并将该类别的所有其他样本放入集合S。

  3. 逐个样本地遍历集合C,并使用最近邻规则对每个样本进行分类。

  4. 如果样本被错误分类,将其添加到集合C中;否则不进行任何操作。

  5. 在集合C上重复上述步骤,直到没有样本需要添加为止。

**CondensedNearestNeighbour算法可以生成一个具有较少样本数量的新样本集,其中包含了原始数据集中的少数类样本和一些被错误分类的样本。**这个新样本集可以用于解决类别不平衡问题,使得少数类样本在整体数据集中的比例更加平衡。

AllKNN

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.AllKNN.html

AllKNN算法会多次应用ENN(Edited Nearest Neighbours)算法,并在每次迭代时改变最近邻的数量。

与之前的RepeatedEditedNearestNeighbours算法不同,AllKNN算法会在每次迭代中增加内部最近邻算法的最近邻数量。

通过这个过程,AllKNN算法可以多次应用ENN算法,并逐步增加最近邻的数量。这样可以更加彻底地清除位于类别边界附近的噪声样本。

InstanceHardnessThreshold

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.InstanceHardnessThreshold.html

InstanceHardnessThreshold算法的原理是,首先使用一个分类器对数据进行训练,然后根据样本的预测概率移除概率较低的样本。

在该算法中,我们首先使用一个分类器对数据进行训练,训练过程中分类器会生成每个样本属于各个类别的概率预测。然后根据预测概率,移除概率较低的样本。

在使用InstanceHardnessThreshold算法时,我们需要设置两个重要的参数。第一个是estimator,它可以接受任何具有predict_proba方法的scikit-learn分类器。分类器的训练使用交叉验证来进行,可以通过参数cv设置交叉验证的折数。

NearMiss

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.NearMiss.html

在使用NearMiss算法时,我们可以通过设置version参数来选择不同的启发式规则。例如,设置version=1表示使用第一种启发式规则。

NearMiss算法的启发式规则是基于最近邻算法的。因此,我们可以通过参数n_neighborsn_neighbors_ver3来设置最近邻的数量。其中,n_neighbors参数用于计算样本与邻居之间的平均距离,而n_neighbors_ver3参数用于对感兴趣的样本进行预选择。

NeighbourhoodCleaningRule

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.NeighbourhoodCleaningRule.html

NeighbourhoodCleaningRule算法主要用于数据清理而不是数据压缩。它使用了EditedNearestNeighbours算法和k-NN算法来移除数据集中的噪声样本。

在NeighbourhoodCleaningRule算法中,首先使用EditedNearestNeighbours算法生成一个样本集合,该样本集合包含了应该被移除的样本。然后,使用3最近邻分类器对数据集进行分类,并将分类器输出的样本集合与前面生成的样本集合取并集,得到最终需要被移除的样本集合。

OneSidedSelection

https://imbalanced-learn.org/stable/references/generated/imblearn.under_sampling.OneSidedSelection.html

OneSidedSelection算法使用TomekLinks方法来移除噪声样本。此外,该算法对所有样本应用了1最近邻规则,将被错误分类的样本添加到集合中。

上采样方法

SMOTE

https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTE.html

SMOTE(Synthetic Minority Over-sampling Technique)是一种常用的过采样方法,用于解决类别不平衡问题。它通过生成合成样本来增加少数类样本的数量,以平衡不同类别之间的数据分布。

SMOTE的原理基于对少数类样本的插值。具体而言,它首先随机选择一个少数类样本作为起始点,然后从该样本的近邻中随机选择一个样本作为参考点。然后,SMOTE通过在这两个样本之间的线段上生成新的合成样本来增加数据集的样本数量。

SMOTENC

https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTENC.html

SMOTE-NC(SMOTE for Nominal and Continuous features)是一种用于处理同时包含数值和分类特征的数据集的过采样方法。它是对传统的SMOTE算法的扩展,能够处理同时存在数值和分类特征的情况,但不适用于仅包含分类特征的数据集。

SMOTE-NC的原理与SMOTE类似,但在生成合成样本时有所不同。它的生成过程如下:

  1. 对于选定的起始点和参考点,计算它们之间的差距,得到一个向量。

  2. 将连续特征(数值特征)的差距乘以一个随机数,得到新样本的位置。这一步与传统的SMOTE相同。

  3. 对于分类特征,随机选择起始点或参考点的特征值作为新合成样本的特征值。

  4. 对于连续特征和分类特征,分别使用插值和随机选择的方式来生成新样本的特征值。

通过这种方式,SMOTE-NC能够处理同时包含数值和分类特征的数据集,并生成新的合成样本来增加少数类样本的数量。这样可以在平衡数据集的同时保持数值和分类特征的一致性。

SMOTEN

https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTEN.html

SMOTEN(Synthetic Minority Over-sampling Technique for Nominal)是一种专门针对分类特征的过采样方法,用于解决类别不平衡问题。它是对SMOTE算法的扩展,适用于仅包含分类特征的数据集。

SMOTEN的原理与SMOTE类似,但在生成合成样本时有所不同。它的生成过程如下:

  1. 对于选定的起始点和参考点,计算它们之间的差距,得到一个向量。

  2. 对于每个分类特征,统计起始点和参考点之间相应特征的唯一值(类别)的频率。

  3. 根据特征的频率,确定新样本的位置。具体而言,对于每个分类特征,随机选择一个起始点或参考点的类别,并在该类别中随机选择一个值作为新合成样本的特征值。

  4. 对于连续特征,采用传统的SMOTE方式,通过在差距向量上乘以一个随机数,确定新样本的位置,并使用插值来生成新样本的特征值。

ADASYN

https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.ADASYN.html

ADASYN(Adaptive Synthetic)是一种基于自适应合成的过采样算法。它与SMOTE方法相似,但根据类别的局部分布估计生成不同数量的样本。

ADASYN根据样本之间的差距,计算每个样本的密度因子。密度因子表示该样本周围少数类样本的密度。较低的密度因子表示该样本所属的区域缺乏少数类样本,而较高的密度因子表示该样本周围有更多的少数类样本。

BorderlineSMOTE

https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.BorderlineSMOTE.html

BorderlineSMOTE(边界SMOTE)是一种过采样算法,是对原始SMOTE算法的改进和扩展。它能够检测并利用边界样本生成新的合成样本,以解决类别不平衡问题。

BorderlineSMOTE在SMOTE算法的基础上进行了改进,通过识别边界样本来更有针对性地生成新的合成样本。边界样本是指那些位于多数类样本和少数类样本之间的样本,它们往往是难以分类的样本。通过识别并处理这些边界样本,BorderlineSMOTE能够提高分类器对难以分类样本的识别能力。

KMeansSMOTE

https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.KMeansSMOTE.html

KMeansSMOTE的关键在于使用KMeans聚类将数据样本划分为不同的簇,并通过识别边界样本来有针对性地进行合成样本的生成。这种方法可以提高合成样本的多样性和真实性,因为它仅在边界样本周围进行过采样,而不是在整个少数类样本集上进行。

SVMSMOTE

https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SVMSMOTE.html

SVMSMOTE是一种基于SMOTE算法的变体,其特点是利用支持向量机(SVM)算法来检测用于生成新的合成样本的样本。通过将数据集中的少数类样本划分为支持向量和非支持向量,SVMSMOTE能够更准确地选择样本进行合成。对于每个少数类支持向量,它选择其最近邻中的一个作为参考点,并通过计算其与参考点之间的差距来生成新的合成样本。


http://www.ppmy.cn/news/533147.html

相关文章

常见面试题之MySQL篇

1.MySQL中,如何定位慢查询? 我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking,在展示的报表中可以看到是哪一个接口比较慢,并且可以分析这个接…

手撕鸭腌料批发场 新奥尔良烤肉腌料批发 奥尔良鸡叉骨腌料批发

奥尔良烤翅的做法步骤 1、原料:鸡翅中750克、新奥尔良烤翅腌料一袋。2、清水泡10分钟后洗净。3、装盘用牙签仔鸡翅上扎满小洞、以便入味。4、倒入新奥尔良烤翅腌料、抓均至每个鸡翅都能粘到料。放置20分钟入味。5、锅中放油6成热,放入淹好的鸡翅。 新奥尔…

api 获取网络使用情况_您的API是什么情况?

api 获取网络使用情况 免责声明:在纯REST中,API是不透明的,URL应该是对先前请求的响应中作为链接发送的内容。 但是,我不是在讲纯REST,而是在讲更实用的API,其中涉及REST的一些概念以及通用的API最佳实践。…

汽车常识全面介绍 - 悬挂系统

乘坐舒适性的关键─悬挂系统 因为车身下方的空间使汽车看起来好像是悬浮在半空中,要如何将看似悬浮在半空中的车身与接触地面的车轮结合呢?这个结合的装置就是悬挂系统。 悬挂系统除了要支撑车身的重量之外,还负有降低行驶时的震动&#xff0…

系统架构设计应考虑的因素

摘要: 本文从程序的运行时结构和源代码的组织结构两个方面探讨了系统构架设计应考虑的各种因素,列举了系统构架设计文档应考虑的一些问题。 1. 与构架有关的几个基本概念 1、 模块(module):一组完成指定功能的语句&am…

互联网30年,泡沫如梦,一个个泡沫和风口过后,会是什么样的结局

人人都说互联网改变世界,这话没错。 但我认为互联网改变的方式,是泡沫。 资金,资源,人才因为一堆概念聚在一起,形成一个又一个的泡沫,然后泡沫破裂,大部分人失败,少数能够留下来的…

【面试题】前端人70%以上 不了解的promise/async await

前言 今天给大家分享promise,笔者将从早期的异步代码的困境、promise出现解决了什么问题、异步回调地狱的终极方案并且实现async await的核心语法,其实async/await只是generatorpromise的一个变种而已。这是坚持写博客的第三周,坚持下去事情总…

python_______request库介绍

一、requests库的七个重要方法 (1)最常用方法:requests.get(url,paramsNone,**kwargs)//对应HTTP协议的GET()操作 (请求获得URL位置的资源) ① url:拟获取页面的url链接。url:在WWW上,每一信息资源都有统一的且在网上唯一的地址&#xff0c…