SMOTE 过采样算法
1. 算法概要
设训练集的一个少数类样本数为 ,应用过采样方法生成 个样本。
① 从样本数为 的样本中选择一个样本,搜索它的 近邻。
② 从 近邻样本中随机选择一个样本,将这两个样本连接成一条直线,新合成的样本就在这条直线上,重复 次。
③ 总共 个样本,重复步骤② 次。
2. 算法步骤
过采样算法 ,概括来说是基于单线性“插值”来合成新的样本。
设训练集的一个少数类样本数为 ,那么 算法将为这个少数类合成 个新样本。这里要求 必须为正整数,如果 ,那么算法将“认为”少数类的样本数 ,强制 。
考虑少数类的一个样本 ,:
① 首先从该少数类的全部 个样本中找到样本 的 个近邻(例如欧式距离),记为 ,
② 然后从这 个近邻中随机选择一个样本 ,在生成一个 到 之间的随机数 ,从而合成一个新样本
③ 将步骤②重复 次,从而合成 个新样本:,。
那么,对全部的 个少数类样本进行上述操作,便可为该少数类合成 个新样本。
如果样本的特征维数是 维,那么每个样本都可以用二维平面上的一个点来表示。 算法所合成出的一个新样本 相当于表示样本 的点和表示样本 的点之间所连线段上的一个点。所以说该算法是基于“插值”来合成新样本。
例 :令 ,,则
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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)