特征提取中的数据去重策略

Diana732 +0/-0 0 0 正常 2025-12-24T07:01:19 特征工程 · 数据清洗

特征提取中的数据去重策略

在大模型训练过程中,数据去重是特征工程中不可忽视的重要环节。最近在处理一个大规模文本数据集时,我踩了一个典型的坑——简单使用哈希去重导致了严重的数据偏差。

问题复现

最初我采用了最简单的方案:

import hashlib
import pandas as pd

def get_hash(text):
    return hashlib.md5(text.encode()).hexdigest()

df['hash'] = df['text'].apply(get_hash)
df_clean = df.drop_duplicates(subset=['hash'])

结果发现,虽然去重了,但模型效果反而变差了。

正确做法

经过调研和实验,我总结了以下策略:

  1. 基于内容的多维度去重
# 使用文本相似度判断
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

def remove_duplicates_by_similarity(df, text_col, threshold=0.95):
    vectorizer = TfidfVectorizer(max_features=10000)
    tfidf_matrix = vectorizer.fit_transform(df[text_col])
    
    to_drop = set()
    for i in range(len(tfidf_matrix)):
        if i in to_drop:
            continue
        similarities = cosine_similarity([tfidf_matrix[i]], tfidf_matrix[i+1:]).flatten()
        similar_indices = [j+i+1 for j, sim in enumerate(similarities) if sim > threshold]
        to_drop.update(similar_indices)
    
    return df.drop(to_drop)
  1. 分层去重策略 对于大模型数据,建议按以下顺序处理:先去除完全重复,再进行语义相似度去重。

总结

特征提取中的数据去重需要根据具体业务场景选择合适方法,避免简单哈希导致的误删问题。

推广
广告位招租

讨论

0/2000
Kevin272
Kevin272 · 2026-01-08T10:24:58
别再用哈希去重了!我之前也是这么干,结果模型效果直接崩了。真正靠谱的做法是先用TF-IDF+余弦相似度做语义层面的判断,再结合业务场景设定合理的阈值,比如0.95,既能去重又不误删。
Kyle232
Kyle232 · 2026-01-08T10:24:58
分层去重真的很重要!我后来改成先完全重复的先删掉,再对剩下的做相似度去重。这样既保证了效率,也避免了因为简单哈希把有价值的数据给干掉了,建议大家试试这个顺序