Ссылки 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 - очистить данные от шумов и сделать границу решения четкой, а не как вы слышали, балансирует на несбалансированных данных, и это не имеет ничего общего с реальностью.
Спасибо