掘金 人工智能 05月03日 10:23
【漫话机器学习系列】236.邻域链接(Tomek Link)
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了Tomek Link,一种用于清洗分类数据集边界样本的有效方法。它通过识别并处理不同类别之间的边界样本,从而优化数据分布,提高模型泛化能力。文章详细解释了Tomek Link的定义、作用、局限性,并提供了Python实战示例,帮助读者理解其原理和应用。Tomek Link特别适用于数据不平衡或存在噪声的场景,是机器学习预处理阶段的重要工具。

💡Tomek Link的核心在于识别并处理分类数据集中的边界样本,旨在消除类与类之间的模糊边界,提高模型的判别清晰度,降低过拟合风险。

📌Tomek Link的定义基于三个关键点:样本x的最近邻是y,y的最近邻是x,且x和y属于不同的类别。满足这三个条件的样本对构成Tomek Link。

✅Tomek Link的主要作用是优化数据分布,提高模型的泛化能力。常见操作包括删除Tomek Link中的“多数类”样本,或直接删除两个样本,具体取决于数据特性和应用场景。

⚠️Tomek Link并非万能,在数据量过小或类别极度不平衡时,使用Tomek Link清洗可能会导致有价值样本的丢失,反而降低模型性能。因此,在使用时需谨慎评估数据情况。

💻在Python中,可以使用imbalanced-learn库快速实现Tomek Links。文章提供了实战示例,展示了如何生成不平衡数据集,应用Tomek Links,以及可视化清洗前后的效果,帮助读者快速上手。

数据清洗中的利器:Tomek Link(邻域链接)详解与应用实战

一、引言

在处理机器学习中的分类问题时,我们经常会遇到数据不平衡或噪声数据过多的问题。尤其是在过采样(如SMOTE)或欠采样之前,如何对数据进行合理清洗,是影响模型性能的关键因素之一。

今天我们来聊一个处理类别边界噪声样本的经典方法——Tomek Link(邻域链接) ,并借助图解帮助大家轻松理解其原理和实际应用。


二、什么是 Tomek Link?

Tomek Link 是由 Ivan Tomek 提出的一个概念,用于清洗分类数据集中的边界样本。其核心目的是找出处于不同类别之间边界上的样本对,通常这些样本可能是:

图解理解

我们先来看一张经典的图示(来源:Chris Albon):

从图中可以看到:


三、Tomek Link 的定义

根据图中内容,Tomek Link 的定义有三个要点:

设有两个样本 x 和 y:

    x 的最近邻是 y;y 的最近邻是 x;x 和 y 属于不同的类别。

满足以上三条规则的样本对就构成了一个 Tomek Link


四、Tomek Link 的作用

Tomek Link 的主要作用是:

帮助识别边界样本或噪声数据,从而优化数据分布,提高模型的泛化能力。

常见操作:

这样做的好处是:


五、Tomek Link 的局限性

虽然 Tomek Link 简单高效,但并不是在所有场景中都适用:

图中也提到:

使用 Tomek Link 清洗可能会造成有价值样本的丢失,反而导致模型性能下降。


六、Tomek Link 实战(Python 示例)

借助 imbalanced-learn 库可以快速使用 Tomek Links:

from imblearn.under_sampling import TomekLinksfrom sklearn.datasets import make_classificationimport matplotlib.pyplot as plt# 生成一个不平衡数据集X, y = make_classification(n_samples=500, n_features=2, n_redundant=0,                           n_clusters_per_class=1, weights=[0.9, 0.1],                           flip_y=0, random_state=1)# 应用 Tomek Linkstl = TomekLinks(sampling_strategy='majority')X_resampled, y_resampled = tl.fit_resample(X, y)# 可视化清洗前后plt.scatter(X[y==0][:,0], X[y==0][:,1], label="Class 0", alpha=0.3)plt.scatter(X[y==1][:,0], X[y==1][:,1], label="Class 1", alpha=0.3)plt.title("Before Cleaning with Tomek Link")plt.legend()plt.show()

更多参数可参考 imbalanced-learn 官方文档


七、Tomek Link 适用场景

场景是否推荐
类别边界模糊✅ 推荐
数据中包含噪声点✅ 推荐
类别极不平衡⚠️ 谨慎使用
样本总量很少❌ 不推荐

八、总结

Tomek Link 是一个简单但实用的边界清洗方法,适合用于:

在实际项目中,建议与模型调参、采样策略联合使用,以达到最优效果。


九、参考资料


你是否有在实际项目中用过 Tomek Link 或其他数据清洗技术?欢迎评论区一起讨论!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Tomek Link 数据清洗 机器学习 分类 imbalanced-learn
相关文章