大家好,我是吴师兄。
最近有同学面试时被问了个经典问题:
“在机器学习中,面对高维特征时,你会怎么处理?”
这问题看似基础,但其实是个一层套一层的坑题。
你要是不懂具体方法,连术语都答不全;
你要是只会说“PCA”,那基本就暴露了你的“纸上谈兵”。
今天我们就来彻底复盘这个话题:特征选择 vs 降维,到底怎么答、怎么用、怎么准备。
一、为什么要特征选择和降维?
大模型不怕参数多,但面试官最怕你数据维度一堆,却不知道怎么筛选和压缩信息。
面对高维数据,不仅模型训练慢、易过拟合,还会带来严重的“维度灾难”问题。
所以我们有两种常用解决策略:
特征选择:直接“删掉”不重要的维度,保留关键特征
降维(映射):不删特征,而是把高维“压缩”为低维表达(保留结构信息)
特征选择(Feature Selection)的目标是从原始特征集中挑选最重要的子集。
常见的有三类方法,下面我们逐一讲清楚。
1. 过滤式方法(Filter)
思路:根据特征自身的统计属性来判断其“是否有用”,不依赖模型本身。
方差选择(Variance Threshold)
思路:如果一个特征在所有样本中变化都不大,那它大概率没啥信息量,直接删除。
数学形式:
皮尔逊相关系数(Pearson Correlation)
衡量特征和目标变量之间的线性相关性。越接近 ±1,说明影响越大。
卡方检验(Chi-Square)
专门处理分类变量,评估某个特征和目标标签是否独立。
信息增益(Information Gain)
用于评估某个特征能否大幅“降低数据的不确定性”。主要用于决策树。
适合人群:需要初步筛选特征、模型尚未选定的情况。
优点:快,能提前清洗掉无意义数据。
缺点:忽略特征之间的组合关系,不一定对模型有最优效果。
2. 包裹式方法(Wrapper)
思路:用模型说话,每尝试一个特征子集,都用模型跑一遍,评估效果。
常见方法:
前向选择(Forward Selection):从空集合开始,每次加一个“最有用的”特征
后向剔除(Backward Elimination):从全集开始,每次删一个“最没用的”
递归特征消除(RFE):反复训练模型,每次剔除最不重要的特征
适合人群:精调模型,追求最优性能。
优点:能找到最适合当前模型的特征组合
缺点:太慢了,对数据量和维度要求高,容易过拟合
3. 嵌入式方法(Embedded)
思路:特征选择过程“融入”模型训练中,自动做选择。
两个代表:
Lasso 回归(L1 正则化):强制让某些特征系数变为 0,从而自动去除冗余特征。
树模型特征重要性:如随机森林、梯度提升树等,训练过程自带“特征打分”机制,直接选 Top-N。
适合人群:主打“建模+筛选一体化”的工程实践者。
优点:效率高,结果稳;兼顾特征交互。
三、降维:维度不删,但换个角度压缩表达
如果你不想“删除维度”,而是希望在保留结构信息的前提下减少输入维度,那就需要降维。
降维是把原始高维特征“映射”到一个低维空间。
1. 线性降维方法主成分分析(PCA)
核心思想:寻找一组新的坐标轴(正交主成分),使得数据在这些轴上的投影方差最大。
目标函数:
适合场景:高维连续数值型数据的压缩、可视化、特征重构。
线性判别分析(LDA)
核心思想:在监督信息(标签)指导下,找到“最能区分不同类别”的低维空间。
最大化目标函数:
适合场景:分类任务,标签已知,想压缩维度同时保持类别区分度。
2. 非线性降维方法t-SNE(t-distributed Stochastic Neighbor Embedding)
主要用于数据可视化。保留局部邻域结构,但不保证全局结构准确。
优点:视觉效果好、分类结构清晰
缺点:计算慢,维度不支持太高
UMAP(Uniform Manifold Approximation and Projection)
比 t-SNE 更快,更适合保留全局结构。可以看作 t-SNE 的实用升级版。
核主成分分析(Kernel PCA)
将数据映射到高维空间后,再在这个高维空间中执行 PCA。
适合处理非线性关系。
四、总结:面试怎么答?项目中怎么用?
如果你在面试中被问到:
“如何处理高维数据?”
推荐这样回答:
“我会根据业务目标和数据类型选择不同策略。
比如如果模型还未确定,先用过滤式方法进行特征初筛。
如果目标是压缩冗余表达,PCA 等降维方法能快速帮助我们构建简洁表达。
如果模型本身支持特征选择(如Lasso、决策树),我会更倾向于嵌入式方法。
实战中,我还会结合可视化手段(如 t-SNE、UMAP)去辅助判断高维数据结构的分布。”
这样答,不仅体现你技术掌握全面,还体现你有实际应用思维。