标准回答
文本经词袋(BoW)或 TF-IDF 表示后,维度等于词表大小(可达数十万),而单条文本只覆盖其中极少数词,因此向量既高维又极度稀疏。这会引发维度灾难、过拟合、训练慢与内存浪费。
处理思路分四类
- 特征选择:用卡方检验、互信息、信息增益筛选与标签相关的词,配合频次过滤去掉低频噪声词与超高频停用词,直接降低维度。
- 降维:用 SVD / LSA(潜在语义分析) 把稀疏高维矩阵投影到低维稠密语义空间,缓解同义/多义并去冗余。
- 稠密表示替代:改用 词向量、句向量或预训练模型 编码,得到几百维的稠密向量,从源头规避稀疏问题且语义更强。
- 稀疏友好的高效模型:线性 SVM、逻辑回归、朴素贝叶斯 本身能直接在稀疏矩阵上高效训练,对高维稀疏特征表现稳健,是强基线。
两类工程技巧
- L1 正则:在逻辑回归/线性模型上加 L1,促使权重稀疏化,自动做特征选择,提升可解释性与泛化。
- 哈希技巧(feature hashing):把词哈希到固定维度桶,无需维护词表即可控制维度上限,适合在线学习与海量词表场景,代价是少量哈希冲突。
实务上常以「TF-IDF + 卡方/频次过滤 + 线性 SVM/LR(L1)」作为强基线,再视需求升级到预训练稠密表示。
常见误区
⚠️ 常见踩坑
误以为「高维稀疏一定要先降维」。线性 SVM、逻辑回归、朴素贝叶斯本就为稀疏数据设计,盲目 SVD/PCA 降维反而可能丢弃判别性特征、破坏稀疏带来的计算优势,应先用稀疏友好模型建立基线再决定是否降维。
追问
追问 1:卡方检验和 L1 正则都能做特征选择,二者有何区别?
卡方是模型无关的过滤式(filter)方法,在训练前根据特征与标签的统计相关性独立打分筛选,速度快但不考虑特征间组合与具体模型。L1 正则是嵌入式(embedded)方法,在模型训练过程中通过惩罚项让部分权重收缩为零,选择结果与模型目标一致、能考虑特征协同,但依赖该模型且对超参敏感。实践中可先用卡方/频次粗筛降维,再用 L1 在模型内精筛。
追问 2:什么时候该从 TF-IDF 切换到预训练稠密表示?
当任务对语义理解要求高(需捕捉同义、上下文、语序)、TF-IDF 基线在验证集上遇到瓶颈、或存在大量 OOV 与稀疏长尾词时,切换到词向量/句向量/预训练模型收益明显。反之,若数据量小、词面信号强(如垃圾邮件、关键词驱动的分类)、对推理延迟和可解释性要求高,TF-IDF + 线性模型往往更快更稳,性价比更高。
追问 3:哈希技巧(feature hashing)的冲突会损害精度吗?如何控制?
会有少量损害:不同词哈希到同一桶会叠加其权重,引入噪声。但当哈希空间足够大(如 2^18 以上)时,冲突概率低,对大规模任务精度影响通常很小,且换来无需存词表、可在线增量、内存可控的优势。可通过增大维度、使用带符号哈希(signed hashing,让冲突项部分抵消)来进一步降低冲突影响。
🔗 相似问题
同一考点的不同问法,面试官可能换着问,一起刷更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习