SMOTE 过采样算法

1. 算法概要

设训练集的一个少数类样本数为 T,应用过采样方法生成 NT 个样本。

① 从样本数为 T 的样本中选择一个样本,搜索它的 k 近邻。

② 从 k 近邻样本中随机选择一个样本,将这两个样本连接成一条直线,新合成的样本就在这条直线上,重复 N 次。

③ 总共 T 个样本,重复步骤② T 次。



2. 算法步骤

过采样算法 SMOTE ,概括来说是基于单线性“插值”来合成新的样本。

设训练集的一个少数类样本数为 T,那么 SMOTE 算法将为这个少数类合成 NT 个新样本。这里要求 N 必须为正整数,如果 N<1,那么算法将“认为”少数类的样本数 T=NT,强制 N=1

考虑少数类的一个样本 xii{1,2,...,T}

① 首先从该少数类的全部 T 个样本中找到样本 xik 个近邻(例如欧式距离),记为 xi(near)near{1,2,...,k}

② 然后从这 k 个近邻中随机选择一个样本 xi(n),在生成一个 01 之间的随机数 ζ1,从而合成一个新样本 xi1

xi1=xi+ζ1(xi(n)xi)

③ 将步骤②重复 N 次,从而合成 N 个新样本:xinewnew1,2,..,N

那么,对全部的 T 个少数类样本进行上述操作,便可为该少数类合成 NT 个新样本。

如果样本的特征维数是 2 维,那么每个样本都可以用二维平面上的一个点来表示。SMOTE 算法所合成出的一个新样本 xi1 相当于表示样本 xi 的点和表示样本 xi(n) 的点之间所连线段上的一个点。所以说该算法是基于“插值”来合成新样本。

1xi=x1xi(n)=x2,则 xi1=x1+ζ1(x2x1)=x2+ζ1(x1x2)=ζ1x1+(1ζ1)x2



posted @   做梦当财神  阅读(1048)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示