【机器学习】--过采样原理及代码详解

过采样(Oversampling)是一个在多个领域都有应用的技术,其具体含义和应用方法会根据领域的不同而有所差异。以下是对过采样技术的详细解析,主要从机器学习和信号处理两个领域进行阐述。

一、机器学习中的过采样

在机器学习中,过采样是一种处理样本不平衡问题的方法。具体来说,它通过增加少数类别的样本数量,以平衡训练数据集中各个类别之间的比例,从而提高机器学习模型对少数类别的分类性能。

过采样的优点在于能够提高模型对少数类别的分类性能,降低误分类率。然而,过度依赖过采样可能导致模型对训练数据过拟合,从而在未知数据上表现不佳。因此,在实施过采样时需要注意适度和合理性,避免过度泛化。

二、过采样SMOTE算法

SMOTE算法的基本思想是对少数类样本进行分析并根据这些样本人工合成新样本添加到数据集中,从而使得原始数据中的类别分布更加均衡。该算法通过K近邻(KNN)技术来模拟生成新的少数类样本,从而避免了随机过采样中简单复制样本可能导致的过拟合问题。

1.SMOTE算法步骤

计算K近邻:对于少数类中的每一个样本x,以欧氏距离为标准计算它到少数类样本集中所有样本的距离,并进行排序,从而得到其K个最近邻(KNN)。

随机选择近邻并生成新样本:1)根据样本不平衡比例设置一个采样比例(如采样倍率N),对于每一个少数类样本x,从其K个近邻中随机选择N个样本(实际操作中,N可能小于或等于K)。

2)对于每一个随机选出的近邻xn,根据原样本x和近邻xn的特征值,通过线性插值的方式生成新的样本。具体来说,可以在x和xn的特征值之间插入一个随机因子(范围在0到1之间),然后将这个因子乘以两者之间的差值,并加到原样本x的特征值上,从而得到新的样本。

合并数据集:将所有生成的新样本与原数据集合并,形成新的训练集。

原始数据:

SMOTE过采样后:

代码示例:

python 复制代码
from collections import Counter
from sklearn.datasets import make_classification
from imblearn.over_sampling import SMOTE
import numpy as np

# 创建一个不平衡的数据集作为示例  
X, y = make_classification(n_classes=2, class_sep=2,
                           weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0,
                           n_features=4, n_clusters_per_class=1, n_samples=1000, random_state=10)

print('原始数据集形状 %s' % Counter(y))

# 应用SMOTE算法  
sm = SMOTE(random_state=42)
X_res, y_res = sm.fit_resample(X, y)

print('重采样后的数据集形状 %s' % Counter(y_res))

# 可选:使用matplotlib来可视化结果(这里仅展示数据形状的变化,可视化原始数据和高维数据通常更复杂)  
import matplotlib.pyplot as plt

# 由于数据是高维的,我们无法直接绘制,但我们可以绘制重采样前后类别的数量  
labels = ['original data', 'smote data']
counts = [Counter(y)[0], Counter(y_res)[0]]  # 假设我们关注的是少数类  

plt.bar(labels, counts, color=['blue', 'orange'])
plt.xlabel('datasets')
plt.ylabel('data')
plt.title('SMOTE')
plt.show()

总结

SMOTE(Synthetic Minority Over-sampling Technique)是一种针对不平衡数据集的有效过采样方法。它通过在少数类样本之间插值来生成新的合成样本,从而增加少数类样本的数量,使得数据集在类别分布上更加平衡。这种方法有助于改善分类算法在处理不平衡数据集时的性能,减少模型对多数类的偏见。

总的来说,SMOTE是一种实用且强大的技术,能够有效解决数据不平衡问题,提升分类模型的准确性和鲁棒性。

相关推荐
lkbhua莱克瓦241 分钟前
大语言模型的非技术漫游指南
人工智能·语言模型·自然语言处理
ws2019071 分钟前
技术革新与生态融合:AUTO TECH China 2026广州汽车电子展如何定义行业新坐标?
大数据·人工智能·科技·汽车
安徽必海微马春梅_6688A2 分钟前
A实验:大鼠脑定位仪 小鼠脑定位仪 大动物定位仪 小动物脑定位仪 资料说明。
人工智能·深度学习
智算菩萨4 分钟前
【Python自然语言处理】基于NLTK库的英文文本词频统计系统实现原理及应用
开发语言·python·自然语言处理
aigcapi5 分钟前
2026 GPT/Gemini API接入优选指南+平台榜单:破解“GPT API哪个平台好”核心难题
人工智能·gpt·api
百胜软件@百胜软件5 分钟前
喜讯|百胜软件荣膺“2025年度零售科技最佳服务商”
大数据·人工智能
张祥6422889046 分钟前
误差理论与测量平差基础四
人工智能·机器学习·概率论
雨大王5129 分钟前
智能仓储系统在汽车零部件管理中的应用
人工智能·汽车·制造
Ashley_Amanda11 分钟前
Python 常见问题梳理
开发语言·windows·python
神气龙12 分钟前
Dify试用
人工智能