SMOTE 过采样算法

1. 算法概要

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

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

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

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



2. 算法步骤

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

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

考虑少数类的一个样本 \(x_i\)\(i \in \{1,2,...,T\}\)

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

② 然后从这 \(k\) 个近邻中随机选择一个样本 \(x_{i(n)}\),在生成一个 \(0\)\(1\) 之间的随机数 \(\zeta_1\),从而合成一个新样本 \(x_{i1}\)

\[x_{i1} = x_i + \zeta_1(x_{i(n)}-x_i) \]

③ 将步骤②重复 \(N\) 次,从而合成 \(N\) 个新样本:\(x_{inew}\)\(new\in1,2,..,N\)

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

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

\(1\)\(x_i=x_1\)\(x_{i(n)} = x_2\),则 \(x_{i1} = x_1+\zeta_1(x_2-x_1) = x_2 + \zeta_1(x_1-x_2) = \zeta_1x_1 + (1-\zeta_1)x_2\)



posted @ 2017-10-18 09:41  做梦当财神  阅读(989)  评论(0编辑  收藏  举报