Ссылки Tomek — это метод подвыборки, который идентифицирует пары экземпляров, которые были бы классифицированы как ближайшие соседи друг друга, если бы мы использовали алгоритм k ближайших соседей с k = 1.

  • Ссылки Tomek — это метод, используемый для уменьшения дисбаланса в несбалансированных наборах данных путем удаления экземпляров из класса большинства, которые близки к экземплярам из класса меньшинства.
  • Основная цель использования Tomek Links — повысить производительность классификаторов за счет более четкой границы принятия решений между классами. Также мы можем использовать Tomek Links для уменьшения шума, даже если наши данные сбалансированы, а не только несбалансированные данные.
  • Хотя ссылки Tomek могут помочь уменьшить дисбаланс в наборе данных, их не всегда может быть достаточно для полной балансировки данных.
  • Недостаток использования ссылок Tomek заключается в том, что удаление слишком большого количества экземпляров из мажоритарного класса может привести к недостаточной подгонке и снижению общей производительности классификации.
  • Кроме того, ссылки Tomek могут быть не в состоянии удалить все экземпляры из класса большинства, которые вызывают дисбаланс, поэтому для достижения сбалансированного набора данных могут потребоваться другие методы, такие как избыточная выборка класса меньшинства или создание синтетических выборок.
  • Преимущества использования ссылок Tomek включают их простоту, эффективность в уменьшении шума и повышении точности классификации, а также возможность идентифицировать важные экземпляры из класса меньшинства.

В целом, ссылки Tomek могут быть полезным методом для уменьшения дисбаланса в несбалансированных наборах данных и повышения производительности классификации, но их следует использовать в сочетании с другими методами для получения сбалансированного набора данных и предотвращения недостаточного соответствия.

import pandas as pd
from imblearn.under_sampling import TomekLinks
import matplotlib.pyplot as plt

# when there are no noises
df=pd.DataFrame({'X1':[1,2,3,4,9,10,11,12,13,14,15,16,17],'X2':[2,1,4,3,9,10,11,12,13,14,15,16,17],
 'y':[0,0,0,0,1,1,1,1,1,1,1,1,1]})

# Scatter Plot OF Points
plt.scatter(df['X1'],df['X2'],c=df['y'])
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('X1 & X2')
plt.show()

# Tomek Links 
TL=TomekLinks()
New_df=TL.fit_resample(df[['X1','X2']],df['y'])
New_df
(    X1  X2
 0    1   2
 1    2   1
 2    3   4
 3    4   3
 4    9   9
 5   10  10
 6   11  11
 7   12  12
 8   13  13
 9   14  14
 10  15  15
 11  16  16
 12  17  17,
 0     0
 1     0
 2     0
 3     0
 4     1
 5     1
 6     1
 7     1
 8     1
 9     1
 10    1
 11    1
 12    1
 Name: y, dtype: int64)

Ссылки Tomek не работают, потому что нет шума, но все же нет баланса между классами

# when there are noises
df=pd.DataFrame({'X1':[1,2,3,4,2,10,11,12,13,14,15,16,17],'X2':[2,1,4,3,2,10,11,12,13,14,15,16,17],
 'y':[0,0,0,0,1,1,1,1,1,1,1,1,1]})

# Scatter Plot OF Points
plt.scatter(df['X1'],df['X2'],c=df['y'])
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('X1 & X2')
plt.show()

# Tomek Links 
TL=TomekLinks()
New_df=TL.fit_resample(df[['X1','X2']],df['y'])
New_df
(    X1  X2
 0    1   2
 1    2   1
 2    3   4
 3    4   3
 4   10  10
 5   11  11
 6   12  12
 7   13  13
 8   14  14
 9   15  15
 10  16  16
 11  17  17,
 0     0
 1     0
 2     0
 3     0
 4     1
 5     1
 6     1
 7     1
 8     1
 9     1
 10    1
 11    1
 Name: y, dtype: int64)

Ссылки Tomek падают шумно, когда есть шум, но все же нет баланса между классами

Краткое содержание

Основная цель Tomek Links - очистить данные от шумов и сделать границу решения четкой, а не как вы слышали, балансирует на несбалансированных данных, и это не имеет ничего общего с реальностью.

Спасибо