黄楼企业建站流程,公众号制作教程视频,wordpress主题 时光,盐城市网站目录 1. K近邻#xff08;K-NN#xff09;
2. 线性回归#xff08;一元/多元#xff09;
3. 逻辑回归
4. 决策树
5. 集成学习之随机森林
6. 贝叶斯#xff08;朴素/高斯#xff09;
7. SVM#xff08;支持向量机#xff09;
8. K-means聚类
9. DBSCAN
10. TF-…目录 1. K近邻K-NN
2. 线性回归一元/多元
3. 逻辑回归
4. 决策树
5. 集成学习之随机森林
6. 贝叶斯朴素/高斯
7. SVM支持向量机
8. K-means聚类
9. DBSCAN
10. TF-IDF
11. 词向量转换如Word2Vec
12. PCA降维
13. XGBoost 1. K近邻K-NN
原理无训练过程预测时找测试样本最近的K个邻居按邻居类别投票分类或取平均回归。
Python实现流程 导入库加载数据并标准化消除量纲影响。 划分训练集X_train, y_train与测试集X_test, y_test。 初始化KNN模型指定K值。 用训练集拟合仅存储数据model.fit(X_train, y_train)。 预测model.predict(X_test)并评估分类用accuracy回归用MSE。
核心库scikit-learnsklearn.neighbors.KNeighborsClassifier/Regressor、numpy、pandas
重要概念与关键参数 概念距离度量如欧氏距离衡量样本相似度、K值选择K过小易过拟合过大欠拟合。 参数n_neighborsK值默认5、metric距离度量默认minkowski即欧氏距离。
适用问题简单分类手写数字识别、回归房价初步预测适合小数据、低维度场景。
面试官可能提问及回答 问K-NN为什么需要对数据标准化如果不标准化哪些特征会影响结果 答因为K-NN基于距离度量如欧氏距离若特征量纲差异大如年龄0-100和收入0-100万收入的数值差异会主导距离计算掩盖年龄的影响。标准化如Z-score能将所有特征缩放到同一区间让各特征对距离的贡献均衡。 问当数据量很大或特征维度很高时K-NN的性能会受什么影响怎么优化 答会出现维度灾难高维下样本距离趋近一致邻居失去意义和计算缓慢预测时需遍历所有训练样本。优化方法①降维如PCA减少特征维度②用KD树/球树索引训练样本加速邻居搜索③采样如随机采样减少训练样本量。 问K值怎么确定如果K取1或整个数据集大小分别会出现什么问题 答K值通常通过交叉验证如5折CV选择——遍历多个K值取验证集效果最好的。若K1模型会完全拟合训练集中的噪声过拟合严重若K整个数据集大小所有测试样本的邻居都是全量训练样本预测结果恒为训练集多数类分类或平均值回归模型欠拟合失去预测意义。 问K-NN是参数模型还是非参数模型非参数模型的优缺点是什么 答是非参数模型——它不预设数据分布也没有固定参数参数数量随训练样本增加而增加。优点①无需假设数据分布对非线性数据适应性强②实现简单。缺点①训练样本需全部存储内存消耗大②高维/大数据场景下预测慢③对异常值和量纲敏感。 问除了欧氏距离K-NN还能用哪些距离度量不同距离适合什么场景 答①曼哈顿距离L1适合高维数据或存在异常值的场景对异常值敏感度低于欧氏距离②余弦距离适合文本如TF-IDF向量、图像如特征向量等关注方向而非大小的场景衡量样本相似度③汉明距离适合二进制数据如用户行为是否点击衡量特征差异次数。 2. 线性回归一元/多元
原理构建线性方程ywxb通过最小二乘法最小化预测值与实际值的平方误差拟合数据趋势一元单特征多元多特征。
Python实现流程 导入库加载数据预处理处理缺失值、标准化多元特征。 划分训练集与测试集。 初始化线性回归模型。 训练模型model.fit(X_train, y_train)。 预测y_pred model.predict(X_test)并评估MAE、R²。
核心库scikit-learnsklearn.linear_model.LinearRegression、numpy、pandas
重要概念与关键参数 概念最小二乘法最小化平方误差、多重共线性多元特征高相关影响系数稳定性。 参数fit_intercept是否计算截距默认True、normalize是否标准化特征默认False。
适用问题连续值预测房价、销售额、气温特征与目标呈线性关系的场景。
面试官可能提问及回答 问线性回归的损失函数为什么用平方误差MSE用绝对误差MAE可以吗两者有什么区别 答用MSE的原因①MSE是凸函数存在唯一最优解可通过梯度下降或正规方程高效求解②MSE对误差的惩罚是非线性的误差越大惩罚越重能重点关注大误差。MAE可以用但缺点是①在误差为0处不可导需用次梯度下降求解效率低②对所有误差惩罚相同对大误差不敏感。实际中若数据有较多异常值MAE更稳健受异常值影响小无异常值时MSE更常用。 问如何检测多元线性回归中的多重共线性检测到后怎么处理 答检测方法①计算特征间的相关系数矩阵若两特征相关系数绝对值0.8可能存在共线性②计算方差膨胀因子VIFVIF10表示共线性严重VIF1/(1-R²)R²是该特征对其他特征的回归拟合度。处理方法①删除冗余特征如删除VIF最大的特征②特征融合如将高度相关的身高体重合并为BMI③用岭回归L2正则降低共线性对系数的影响。 问R²和调整后R²有什么区别为什么要引入调整后R² 答R²衡量模型对数据的解释能力R²1-残差平方和/总平方和取值范围[0,1]R²越大越好。但普通R²有缺陷只要增加特征即使是无关特征R²不会下降反而可能上升无法客观反映模型性能。调整后R²引入了特征数量的惩罚项调整后R²1-[(1-R²)*(n-1)/(n-p-1)]n是样本数p是特征数当增加无关特征时调整后R²可能下降能更真实地评估多特征模型的解释能力。 问线性回归假设数据满足哪些条件如果不满足比如误差不服从正态分布会有什么影响 答经典线性回归的假设①线性性特征与目标呈线性关系②误差独立性③误差同方差性误差方差恒定④误差正态分布。若误差不服从正态分布在小样本下参数的置信区间和假设检验如t检验会不准确但在大样本下根据中心极限定理参数估计仍会渐近正态影响较小。若违反同方差性如误差方差随特征增大而增大系数估计仍无偏但方差会被低估导致模型稳定性下降。 问当特征和目标是非线性关系时还能用线性回归吗怎么改造 答可以用需通过特征非线性变换将非线性关系转为线性关系。例如①若目标与特征呈二次关系yax²b可新增特征x²模型变为ya*(x²)b仍为线性回归②若呈指数关系yae^xb可对目标取对数ln y ln a x ln b转为线性模型③也可引入多项式特征如sklearn的PolynomialFeatures将x扩展为x、x²、x³等再用线性回归拟合。 3. 逻辑回归
原理用sigmoid函数将线性回归输出映射到[0,1]输出类别概率通过阈值判断实现二分类。
Python实现流程 导入库加载数据预处理编码分类特征、标准化。 划分训练集与测试集。 初始化模型指定正则化类型。 训练模型model.fit(X_train, y_train)。 预测类别model.predict(X_test)或概率predict_proba评估用AUC、混淆矩阵。
核心库scikit-learnsklearn.linear_model.LogisticRegression、numpy、pandas
重要概念与关键参数 概念sigmoid函数将线性输出转为概率、正则化L1/L2防止过拟合。 参数penalty正则化类型l1/l2默认l2、C正则强度倒数C越小正则越强。
适用问题二分类任务垃圾邮件识别、疾病诊断、客户流失预测。
面试官可能提问及回答 问逻辑回归为什么用sigmoid函数不用其他函数比如tanh的原因是什么 答sigmoid函数σ(z)1/(1e^-z)的核心优势①输出范围[0,1]可直接解释为类别概率如σ(z)0.8表示样本属于正类的概率为80%②单调递增线性输出z越大正类概率越高符合分类直觉③导数易计算σ(z)σ(z)(1-σ(z))便于梯度下降求解。tanh函数输出范围[-1,1]无法直接映射为概率需额外缩放且在z0附近的梯度比sigmoid大对噪声更敏感因此不适合逻辑回归。 问逻辑回归的损失函数是什么为什么不用MSE作为损失函数 答逻辑回归用交叉熵损失二分类L-[ylnσ(z)(1-y)ln(1-σ(z))]。不用MSE的原因MSE与sigmoid函数结合后损失函数是非凸的存在多个局部最优解梯度下降可能陷入局部最优且当预测概率与标签差异大时如σ(z)0.9但y0MSE的梯度会很小接近饱和导致模型收敛缓慢。交叉熵损失是凸函数且梯度与预测误差正相关收敛更快。 问L1和L2正则化在逻辑回归中的作用有什么不同L1为什么能做特征选择 答L1正则化损失λ|w|会使部分特征的系数收缩到0实现特征选择——因为L1的 penalty是绝对值在梯度下降时对系数的惩罚是恒定的当λ足够大时不重要特征的系数会被压缩至0相当于删除该特征。L2正则化损失λw²会使所有特征的系数均匀缩小但不会到0主要作用是降低模型复杂度防止过拟合同时能缓解多重共线性让高相关特征的系数更稳定。 问当数据正负样本不平衡时逻辑回归的结果会有什么问题怎么解决 答问题模型会偏向多数类如正样本占10%负样本占90%模型直接预测所有样本为负类accuracy也能达到90%导致少数类如正类的召回率极低失去实际意义。解决方法①调整分类阈值如默认0.5可降至0.3让更多样本被预测为正类②样本重采样过采样少数类SMOTE算法生成少数类合成样本欠采样多数类随机删除部分多数类样本③调整损失权重如sklearn的class_weightbalanced让少数类的损失权重更高。 问逻辑回归能处理多分类问题吗如果能有哪两种常见方法 答能两种核心方法①一对多One-vs-Rest, OVR为每个类别训练一个二分类模型如3分类模型1区分类1vs其他模型2区分类2vs其他模型3区分类3vs其他预测时取概率最大的类别②一对一One-vs-One, OVO为每对类别训练一个二分类模型如3分类需训练3个模型类1vs类2、类1vs类3、类2vs类3预测时通过投票确定最终类别。OVR适合类别数少的场景效率高OVO适合类别数多的场景精度更高但训练成本高。 4. 决策树
原理基于信息增益分类或MSE回归递归划分特征构建树状模型通过路径决策输出结果。
Python实现流程 导入库加载数据预处理无需标准化。 划分训练集与测试集。 初始化模型指定任务类型分类/回归。 训练模型model.fit(X_train, y_train)。 预测并评估分类用accuracy回归用MSE可可视化树结构。
核心库scikit-learnsklearn.tree.DecisionTreeClassifier/Regressor、matplotlib可视化
重要概念与关键参数 概念信息增益划分后不确定性降低程度、剪枝预剪枝/后剪枝防止过拟合。 参数max_depth树最大深度限制过拟合、min_samples_split节点分裂最小样本数。
适用问题分类鸢尾花品种识别、回归房价预测适合解释性要求高的场景。
面试官可能提问及回答 问决策树分类时除了信息增益还有哪些特征划分准则它们的区别是什么 答还有信息增益比和基尼系数。区别①信息增益偏向选择取值多的特征如身份证号这类唯一值特征划分后信息增益极大但无泛化能力②信息增益比在信息增益基础上除以特征熵取值多的特征熵更大平衡对多取值特征的偏好适合作为C4.5算法的划分准则③基尼系数衡量节点纯度基尼1-Σ(类别概率)²基尼越小纯度越高计算速度比信息增益快无需对数运算是CART算法的划分准则对噪声更稳健。 问决策树为什么容易过拟合预剪枝和后剪枝分别有哪些具体方法 答过拟合原因决策树会递归划分特征直到每个叶子节点纯度最高如每个叶子只含一个样本导致模型完全记住训练数据无法泛化到测试数据。①预剪枝训练中停止树生长设置max_depth树最大深度、min_samples_split节点分裂需至少n个样本、min_samples_leaf叶子节点至少n个样本当满足条件时停止分裂②后剪枝训练完再剪枝先构建完整决策树再从叶子节点向上剪枝将子树替换为叶子节点通过交叉验证判断剪枝后模型是否更优常见方法有代价复杂度剪枝CCP。 问决策树对异常值敏感吗为什么 答相对不敏感。因为决策树是基于特征阈值划分的模型如年龄30收入50万异常值如收入1亿只会影响自身所在的划分路径不会改变其他样本的划分逻辑且在计算划分准则如信息增益、基尼系数时异常值的权重与普通样本一致对整体纯度的影响较小。相比之下线性回归、SVM对异常值更敏感会直接影响超平面或回归线的位置。 问如何解释决策树的结果比如用它做客户流失预测怎么告诉业务方为什么这个客户会流失 答决策树的解释性极强可通过决策路径直观说明。例如某客户流失的决策路径是月消费500元 → 客服投诉次数≥2次 → 会员等级VIP对应的叶子节点是流失。可告诉业务方该客户因月消费高500元但多次投诉未解决≥2次且会员等级低非VIP因此流失风险高。建议优先跟进高消费且有投诉记录的非VIP客户。 问当特征中有类别特征如性别、职业和连续特征如年龄、收入时决策树会怎么处理这两种特征 答①类别特征若为无序类别如职业教师、医生、工程师会尝试每个类别单独作为划分阈值如职业教师vs职业≠教师计算每种划分的准则值如信息增益选最优划分若为有序类别如学历小学中学大学会按顺序合并类别如小学中学vs大学寻找最优划分点。②连续特征会将特征值排序尝试所有相邻样本的中间值作为划分阈值如年龄排序后尝试18.5、25.5等计算每个阈值的准则值选最优阈值如年龄30.5。 5. 集成学习之随机森林
原理集成多棵决策树每棵树用Bootstrap采样数据和随机特征训练结果通过投票分类或平均回归输出。
Python实现流程 导入库加载数据预处理无需标准化。 划分训练集与测试集。 初始化模型指定树数量。 训练模型model.fit(X_train, y_train)。 预测并评估可查看特征重要性model.feature_importances_。
核心库scikit-learnsklearn.ensemble.RandomForestClassifier/Regressor
重要概念与关键参数 概念集成学习多模型融合降低误差、Bootstrap采样随机抽取样本训练单树。 参数n_estimators树数量默认100、max_features单树最大特征数默认auto。
适用问题复杂分类图像分类、回归股票价格预测抗过拟合能力强适合高维数据。
面试官可能提问及回答 问随机森林为什么能比单棵决策树效果好它是怎么降低方差过拟合的 答核心逻辑是集成学习的多样性增益——单棵决策树易过拟合方差大而随机森林通过两个随机性保证树的多样性①Bootstrap采样每棵树用训练集的63.2%样本训练样本不同②随机特征选择每棵树仅用部分特征划分特征不同。多样的树会产生不同的预测误差通过投票/平均可抵消部分随机误差最终降低整体模型的方差同时保留决策树的低偏差优势因为每棵树仍能拟合数据趋势。 问Bootstrap采样会导致部分样本没被选中袋外样本OOB这些样本有什么用 答OOB样本约36.8%的训练样本可作为天然的验证集无需额外划分测试集就能评估模型性能。例如某棵树未使用样本A可用这棵树预测样本A所有未使用A的树的预测结果投票/平均得到A的OOB预测值最终用所有样本的OOB预测值计算accuracy分类或MSE回归作为模型的无偏评估指标。此外OOB样本还可用于评估特征重要性通过打乱某特征后OOB误差的变化。 问随机森林中的随机体现在哪两个方面如果去掉这两个随机性会变成什么模型 答两个随机性①样本随机Bootstrap采样每棵树用不同的训练样本②特征随机每棵树分裂时仅从所有特征中随机选一部分如sqrt(总特征数)作为候选特征。若去掉这两个随机性每棵树都会用全量训练样本和全量特征训练所有树完全相同集成结果与单棵决策树一致相当于单树模型失去集成的多样性优势过拟合问题会重现。 问随机森林怎么评估特征重要性如果特征中有高度相关的变量会对特征重要性评估有什么影响 答评估方法①节点不纯度减少量每棵树中特征每次划分带来的信息增益/基尼系数减少量求和再除以总树数得到特征重要性②OOB置换检验打乱某特征的取值若OOB误差显著上升说明该特征重要。高度相关特征的影响会导致重要性被分摊——例如特征A和B高度相关都对目标有强影响模型可能随机选择A或B进行划分两者的重要性得分都会偏低无法准确反映单个特征的真实重要性。 问当数据量很大时随机森林训练速度慢有什么优化方法 答①调整参数减少n_estimators树数量如从200减到100精度下降有限但速度提升显著、增大max_features如从sqrt(n)到n/2减少单树特征选择时间、限制max_depth如设为10减少单树训练时间②并行训练利用scikit-learn的n_jobs参数如n_jobs-1使用所有CPU核心因为每棵树的训练独立可并行执行③数据采样对训练集进行随机采样如取50%样本减少训练数据量需保证采样后数据分布与原数据一致④使用轻量级实现如FastForest或降维如PCA减少特征维度。 6. 贝叶斯朴素/高斯
原理基于贝叶斯定理假设特征条件独立计算样本属于各类的概率取最大概率类为结果高斯贝叶斯假设特征服从高斯分布。
Python实现流程 导入库加载数据预处理文本转词频向量连续特征无需标准化。 划分训练集与测试集。 初始化模型文本用MultinomialNB连续特征用GaussianNB。 训练模型model.fit(X_train, y_train)计算类概率与特征概率。 预测并评估accuracy、混淆矩阵。
核心库scikit-learnsklearn.naive_bayes.GaussianNB/MultinomialNB
重要概念与关键参数 概念条件独立性假设简化计算忽略特征关联、先验概率样本属于某类的初始概率。 参数GaussianNB中var_smoothing平滑方差避免概率为0默认1e-9。
适用问题文本分类情感分析、垃圾邮件识别、高维稀疏数据场景速度快。
面试官可能提问及回答 问朴素贝叶斯的朴素体现在哪里这个假设的优缺点是什么 答朴素体现在特征条件独立性假设——假设给定类别后所有特征之间相互独立如文本分类中假设喜欢和开心两个词的出现互不影响。优点①极大简化计算无需计算特征间的联合概率只需计算单个特征的条件概率②减少参数需求适合高维稀疏数据如文本。缺点①实际场景中特征往往不独立如购买电脑和购买键盘高度相关会导致概率估计偏差影响模型精度②对特征间的依赖关系敏感若依赖强模型效果会显著下降。 问为什么朴素贝叶斯在文本分类中表现很好即使文本特征间有相关性也能用 答原因有三①文本数据是高维稀疏的特征词数量极多但大部分词出现频率低独立性假设的偏差对整体概率计算影响较小②文本分类的核心是区分类别相关词如垃圾邮件中的中奖汇款这类词的条件概率差异显著即使有部分特征相关仍能主导分类结果③朴素贝叶斯计算速度极快训练仅需统计词频预测仅需计算概率适合大规模文本数据如百万级邮件分类性价比高。 问当某个特征在训练集中某个类别下从未出现过时概率为0会导致什么问题怎么解决 答问题根据贝叶斯公式若某特征的条件概率为0如垃圾邮件类别下从未出现机器学习一词则整个类别的后验概率会被乘以0导致该类别被直接排除即使其他特征强烈支持该类别也会预测错误零概率问题。解决方法拉普拉斯平滑对所有特征的条件概率分子加1分母加该特征的取值数例如某词在垃圾邮件中出现0次总词数1000平滑后概率(01)/(1000V)V是词表大小避免概率为0。 问GaussianNB、MultinomialNB、BernoulliNB分别适合什么类型的数据 答①GaussianNB适合连续型特征如身高、体重、温度假设每个类别下的特征服从高斯分布正态分布通过计算样本在该分布下的概率密度来得到条件概率②MultinomialNB适合离散计数型特征如文本词频、用户购买商品次数假设特征服从多项式分布核心用于文本分类如TF-IDF向量、词袋向量③BernoulliNB适合二值离散特征如文本中词是否出现、用户是否点击某按钮假设特征服从伯努利分布取值0或1也可用于文本分类基于词的存在与否而非出现次数。 问朴素贝叶斯是生成模型还是判别模型生成模型和判别模型的区别是什么 答朴素贝叶斯是生成模型。核心区别①生成模型先学习数据的联合概率分布P(X,y)再通过贝叶斯公式推导后验概率P(y|X)P(X|y)P(y)/P(X)本质是学习数据的生成机制代表模型有朴素贝叶斯、隐马尔可夫模型HMM②判别模型直接学习后验概率P(y|X)或决策函数f(X)y不关注数据生成机制本质是学习特征到类别的映射代表模型有逻辑回归、SVM、决策树。生成模型的优势是数据量小时更稳健可处理缺失值判别模型的优势是精度更高适合复杂数据。 7. SVM支持向量机
原理找到最优超平面最大化两类样本间隔非线性问题通过核函数映射到高维空间实现线性可分。
Python实现流程 导入库加载数据预处理必须标准化。 划分训练集与测试集。 初始化模型指定核函数。 训练模型model.fit(X_train, y_train)。 预测并评估分类用accuracy回归用MSE。
核心库scikit-learnsklearn.svm.SVC/SVR、numpy
重要概念与关键参数 概念核函数如RBF低维转高维、软间隔允许少量样本越界平衡间隔与误差。 参数kernel核函数类型linear/rbf默认rbf、C软间隔惩罚系数C越大惩罚越重。
适用问题小样本分类文本分类、回归高维数据基因数据场景。
面试官可能提问及回答 问SVM中的支持向量指的是什么为什么只关注支持向量不关注其他样本 答支持向量是距离最优超平面最近的样本包括间隔边界上的样本和软间隔中越界的样本。因为最优超平面的位置由这些支持向量唯一决定——移除非支持向量超平面不会改变间隔大小和方向不变非支持向量对超平面的构建没有贡献。因此SVM训练和预测时只需关注支持向量能减少计算量同时保证模型泛化能力支持向量反映了两类样本的边界信息。 问为什么SVM用核函数就能处理非线性问题核函数的核技巧本质是什么 答非线性数据在低维空间无法用超平面分隔如环形数据但映射到高维空间后可能线性可分如环形数据映射到3维空间可找到平面分隔。核函数的核心是核技巧——无需显式将数据映射到高维空间而是直接在低维空间计算高维空间中样本的内积。例如RBF核K(x1,x2)e^(-γ||x1-x2||²)其对应的高维映射是无穷维的但内积计算仍在低维完成避免了维度灾难高维空间计算量爆炸高效实现非线性分类。 问线性SVM和逻辑回归在二分类任务中有什么区别分别适合什么场景 答区别①损失函数SVM用 hinge损失关注支持向量对异常值不敏感逻辑回归用交叉熵损失关注所有样本的概率②决策边界SVM追求最大间隔鲁棒性强逻辑回归追求概率拟合可输出类别概率③复杂度SVM在高维小样本场景下更优逻辑回归在大数据场景下训练更快可在线学习。场景①小样本、高维数据如基因数据分类、对鲁棒性要求高选线性SVM②需要输出概率如风险评估需给出违约概率、大数据场景、在线学习选逻辑回归。 问SVM的C参数和RBF核的gamma参数分别控制什么调大gamma会有什么影响 答①C参数控制软间隔的惩罚强度——C越大对越界样本的惩罚越重模型会追求更小的训练误差间隔变小易过拟合C越小惩罚越轻允许更多样本越界间隔变大易欠拟合。②gamma参数控制RBF核的高斯半径——gamma越大高斯半径越小核函数的局部性越强仅关注样本附近的点模型会拟合训练集中的细节包括噪声易过拟合gamma越小局部性越弱模型更关注全局趋势易欠拟合。 问SVM处理大样本数据时效率低为什么有什么改进方法 答效率低的原因传统SVM训练需求解二次规划问题时间复杂度为O(n²)n是样本数当n10万时计算量和内存消耗极大。改进方法①工程优化用SMO序列最小优化算法将大二次规划拆分为多个小问题求解降低时间复杂度②样本采样对大样本集进行随机采样如取10%样本用采样后的小样本训练SVM需保证采样数据分布与原数据一致③核函数优化用线性核时间复杂度O(n)替代RBF核若数据非线性可先降维如PCA再用线性核④使用近似算法如LibSVM、LibLinear等库的高效实现支持并行计算和稀疏数据优化。 8. K-means聚类
原理无监督学习指定K个初始聚类中心迭代将样本分配到最近中心并更新中心最小化簇内方差。
Python实现流程 导入库加载数据标准化消除量纲影响。 用肘部法则确定最优K值。 初始化模型指定K值。 训练模型model.fit(X)迭代优化中心。 获取聚类标签model.labels_可视化聚类结果。
核心库scikit-learnsklearn.cluster.KMeans、matplotlib
重要概念与关键参数 概念聚类中心簇的代表点、肘部法则通过簇内误差变化找最优K。 参数n_clustersK值需指定、n_init初始化中心次数默认10避免局部最优。
适用问题数据聚类用户分群、客户画像、异常检测初步适合凸形簇。
面试官可能提问及回答 问K-means的迭代停止条件是什么 答常见两个停止条件满足其一即可①聚类中心不再变化两次迭代中所有中心的坐标变化量小于预设阈值如1e-4②簇内平方和SSE所有样本到其簇中心的距离平方和不再变化变化量小于阈值。此外也可设置最大迭代次数如sklearn的max_iter默认300防止因数据特殊导致迭代无法收敛。 问初始聚类中心的选择对K-means结果有什么影响sklearn中是怎么处理这个问题的 答影响K-means对初始中心敏感——若初始中心选在同一簇内最终会导致簇重叠部分簇无样本部分簇样本过多陷入局部最优解。sklearn的处理方法通过n_init参数默认10随机初始化10组不同的聚类中心分别训练K-means最终选择簇内平方和SSE最小的一组结果大幅降低陷入局部最优的概率。 问除了肘部法则还有什么方法确定K值轮廓系数的取值范围和意义是什么 答其他方法①轮廓系数Silhouette Coefficient对每个样本计算轮廓值样本到其他簇的平均距离-样本到自身簇的平均距离/max(两者)所有样本的轮廓值平均值即为模型的轮廓系数取值范围[-1,1]——越接近1聚类效果越好样本在自身簇内紧密与其他簇分离越接近-1聚类效果越差样本可能分错簇。②Calinski-Harabasz指数计算簇间方差和/簇数-1/簇内方差和/样本数-簇数指数越大聚类效果越好簇间差异大簇内差异小。 问K-means对非凸形状的簇比如环形簇效果不好为什么怎么解决 答原因K-means基于欧氏距离和簇内方差最小化会将样本分配到最近的中心导致非凸簇如环形簇被错误分为多个凸簇如环形中心的样本会被归为一个簇环形外围的样本被归为另一个簇。解决方法①用密度聚类算法如DBSCAN通过样本密度划分簇天然支持非凸形状②用核K-means将数据通过核函数映射到高维空间再做K-means高维空间中环形簇可能变为凸簇③用谱聚类基于图论将聚类问题转为图分割问题适合非凸、高维数据。 问K-means对异常值敏感吗异常值会对聚类结果产生什么影响怎么处理异常值 答敏感。因为异常值如远离所有样本的点会显著拉大簇内方差SSE为了最小化SSEK-means可能会将异常值单独分为一个簇浪费K值或让正常簇的中心向异常值偏移导致聚类结果失真。处理方法①聚类前用统计方法检测并删除异常值如Z-score3的样本、IQR外的样本②用K-means初始化中心优先选择远离已有中心的样本减少异常值成为初始中心的概率③用加权K-means给异常值分配较低权重降低其对聚类中心的影响④用基于密度的方法如DBSCAN自动将异常值标记为噪声不参与簇划分。 9. DBSCAN
原理密度聚类基于样本密度划分簇通过核心点邻域内样本数达标和密度可达关系形成任意形状簇无需指定K。
Python实现流程 导入库加载数据标准化。 调整参数eps邻域半径和min_samples核心点最小样本数。 初始化DBSCAN模型。 训练模型model.fit(X)得到聚类标签。 可视化聚类结果-1表示异常点。
核心库scikit-learnsklearn.cluster.DBSCAN、numpy
重要概念与关键参数 概念核心点邻域内样本数≥min_samples、密度可达通过核心点链连接的样本。 参数eps邻域半径需根据数据分布调整、min_samples核心点最小样本数默认5。
适用问题非凸形状聚类空间点聚类、异常检测欺诈识别能处理噪声。
面试官可能提问及回答 问DBSCAN中的核心点、边界点、噪声点分别是什么怎么区分 答①核心点以该点为中心半径eps的邻域内包含的样本数≥min_samples自身也计入②边界点邻域内样本数min_samples但该点可通过密度可达即存在一条核心点链从核心点到该点的所有点都在彼此的eps邻域内连接到某个核心点③噪声点异常值既不是核心点也无法通过密度可达连接到任何核心点最终被标记为-1。例如环形簇中环形上的样本是核心点邻域内样本多环形内侧少量样本是边界点邻域内样本少但能连接到核心点远离环形的点是噪声点。 问eps和min_samples这两个参数怎么调优如果eps太小或太大会出现什么问题 答调优方法①先固定min_samples通常设为特征数1如2维数据设为3用K距离图选eps——计算每个样本到其第min_samples个最近邻居的距离排序后画图找拐点距离突然增大的点对应的距离作为eps②再调整min_samples如3、5、7通过聚类结果的合理性如簇数量、噪声点比例验证。问题①eps太小大部分样本被归为噪声点仅少数密集样本形成小簇②eps太大所有样本被归为一个簇无法区分不同簇。 问DBSCAN和K-means相比优缺点分别是什么 答 维度 DBSCAN 优点 DBSCAN 缺点 K-means 优点 K-means 缺点 簇形状 支持任意形状凸、非凸 - 仅支持凸形簇 无法处理非凸形状 参数依赖 无需指定K但需调eps和min_samples 参数对结果影响大调优难 仅需指定K调优简单如肘部法则 依赖K值对初始中心敏感 噪声处理 自动标记噪声点抗噪声能力强 - 对噪声敏感易影响聚类中心 - 数据适应性 适合密度不均匀的数据 对密度差异大的数据效果差 适合密度均匀的凸簇数据 对密度不均匀、非凸数据效果差 效率 时间复杂度O(n²)大数据场景慢 - 时间复杂度O(nKiter)效率高 - 问当数据密度不均匀时比如有的区域样本密、有的区域疏DBSCAN会遇到什么问题怎么解决 答问题密度偏差导致簇分裂或合并——例如数据中有密集小簇和稀疏大簇若eps设为适合密集簇的值稀疏大簇会被拆分为多个小簇或标记为噪声若eps设为适合稀疏簇的值密集小簇会合并为一个大簇。解决方法①用层次DBSCANHDBSCAN通过不同eps值构建密度层次结构自动选择最优密度水平适应密度不均匀数据②对数据分区域处理如先将数据按密度分区再在每个区域内跑DBSCAN③用可变eps根据样本局部密度调整eps密集区域eps小稀疏区域eps大。 问DBSCAN怎么用于异常检测和其他异常检测算法比如孤立森林比有什么优势 答DBSCAN用于异常检测的逻辑将无法通过密度可达连接到任何核心点的样本噪声点视为异常值。优势①无需假设数据分布非参数方法对非线性、非凸数据的异常检测效果好②能同时完成聚类和异常检测适合先分群再找异常的场景如用户分群后找异常用户③抗噪声能力强不会将密集区域的正常样本误判为异常。相比之下孤立森林的优势是效率高适合大数据但对密集型异常如簇内的孤立点检测效果不如DBSCAN。 10. TF-IDF
原理文本特征提取方法通过词频TF和逆文档频率IDF衡量词在文档中的重要性词频高且少文档出现的词更重要。
Python实现流程 导入库准备文本数据如句子列表。 初始化TF-IDF转换器。 拟合文本数据学习词表与IDF。 转换文本为TF-IDF向量X model.transform(texts)。 用向量做后续任务如分类、检索。
核心库scikit-learnsklearn.feature_extraction.text.TfidfVectorizer
重要概念与关键参数 概念词频TF词在文档中出现次数、逆文档频率IDFlog(总文档数/含该词的文档数)。 参数max_features保留最高频的词数控制维度、stop_words停用词列表如english去除英文虚词。
适用问题文本分类、信息检索、关键词提取处理结构化文本数据。
面试官可能提问及回答 问TF-IDF的计算公式是什么IDF部分为什么要用对数 答TF-IDFTF×IDF。其中①TF词频某词在文档中的出现次数/该文档总词数或直接用出现次数即原始TF②IDF逆文档频率log(总文档数/(含该词的文档数1))加1是为了避免含该词的文档数为0时分母为0。IDF用对数的原因①压缩IDF的取值范围若总文档数1000含该词的文档数10IDFlog(100)2若含该词的文档数1IDFlog(1000)3避免IDF值过大②让IDF的增长呈线性减缓符合词的重要性随含该词的文档数增加而递减但递减速度逐渐变慢的直觉如含该词的文档数从1到2重要性下降明显从100到200重要性下降不明显。 问为什么要去除停用词停用词对TF-IDF结果有什么影响 答停用词是在文本中频繁出现但无实际语义的词如英文的theand中文的的是。去除停用词的原因①减少特征维度停用词占比高去除后可大幅降低TF-IDF向量的维度提升后续模型训练速度②避免干扰重要词的权重——停用词的TF很高几乎每个文档都有但IDF很低含该词的文档数接近总文档数TF-IDF值虽不高但大量停用词会占用特征空间可能掩盖关键语义词如机器学习人工智能的重要性影响模型精度。 问TF-IDF和词袋模型Bag of Words有什么区别TF-IDF解决了词袋模型的什么问题 答区别①词袋模型仅统计词在文档中的出现次数或是否出现生成词频向量不考虑词的重要性如的和机器学习的权重相同②TF-IDF在词频基础上乘以IDF突出词频高且少文档出现的词赋予其更高权重。TF-IDF解决了词袋模型的词权重无差别问题——词袋模型中频繁出现的停用词如的和关键语义词如机器学习权重相同无法区分词的重要性而TF-IDF通过IDF惩罚了频繁出现在多个文档中的词让关键语义词的权重更高更符合文本处理的需求如文本分类中关键语义词对类别判断更重要。 问处理中文文本时用TF-IDF前需要做什么额外步骤和英文比 答英文文本天然以空格分隔单词而中文文本是连续字符如我爱机器学习需额外做分词处理将连续字符拆分为独立单词如我/爱/机器学习这是中文TF-IDF处理的核心额外步骤。具体流程①文本清洗去除标点、特殊符号、数字②分词用jieba、THULAC等工具如jieba.lcut(我爱机器学习)③去除停用词加载中文停用词表如哈工大停用词表删除的是等词④后续步骤计算TF-IDF与英文一致。若不分词中文文本会以单个字符为单位如我爱机无法体现语义TF-IDF向量会失去意义。 问当文本中出现生僻词只在个别文档中出现一次TF-IDF值会很高这会有什么问题怎么处理 答问题生僻词如颟顸觊觎的IDF很高含该词的文档数少即使TF1TF-IDF值也会很高但这类词往往无实际语义或仅在特定文档中有用会导致①特征维度冗余生僻词数量多增加TF-IDF向量维度②模型过拟合模型可能过度关注生僻词将其作为分类的假特征无法泛化到测试集。处理方法①词频过滤用TfidfVectorizer的min_df参数如min_df2保留至少在2个文档中出现的词过滤仅在1个文档中出现的生僻词②手动构建生僻词表直接过滤③用词干提取或词形还原对英文有效中文可用品词标注过滤无意义的生僻词。 11. 词向量转换如Word2Vec
原理将词映射到低维稠密向量通过上下文训练使语义相近的词向量距离近如国王-男人女人≈女王。
Python实现流程 导入库准备文本数据分词后的句子列表。 初始化Word2Vec模型指定向量维度、窗口大小。 训练模型model.build_vocab(texts)model.train(texts, total_examplesmodel.corpus_count, epochsmodel.epochs)。 获取词向量model.wv[word]。 用向量做NLP任务如文本分类、相似度计算。
核心库gensimgensim.models.Word2Vec、nltk分词
重要概念与关键参数 概念分布式表示向量包含语义信息、CBOW/Skip-gram两种训练模式前者用上下文预测词后者用词预测上下文。 参数vector_size向量维度默认100、window上下文窗口大小默认5、sg0CBOW1Skip-gram默认0。
适用问题NLP任务情感分析、机器翻译、命名实体识别处理语义理解场景。
面试官可能提问及回答 问Word2Vec的CBOW和Skip-gram两种模式有什么区别分别适合什么数据场景 答区别①CBOW连续词袋模型输入上下文词如我/爱/学习中的我/学习预测中心词如爱本质是用多个上下文词的平均向量预测中心词②Skip-gram跳字模型输入中心词如爱预测上下文词如我/学习本质是用单个中心词向量预测多个上下文词。场景①CBOW训练速度快每次输入多个词梯度更新效率高适合大数据、高频词场景对低频词的表示效果较差②Skip-gram训练速度慢每次输入一个词需预测多个上下文词但对低频词、罕见词的表示效果更好能从少量出现次数中学习语义适合小数据、需要精准表示低频词的场景。 问Word2Vec的词向量为什么能体现语义关系比如国王-男人女人≈女王 答核心原因是Word2Vec的训练目标是让语义相近的词在向量空间中距离相近。训练时模型通过上下文学习词的共现模式——例如国王常与王后城堡国家共现女王也常与这些词共现且国王与男人的共现差异、女王与女人的共现差异高度相似导致向量空间中国王的向量 - 男人的向量 ≈ 女王的向量 - 女人的向量整理后即国王-男人女人≈女王。这种向量运算本质是捕捉了词在语义场景中的角色差异体现了语义关系。 问Word2Vec和TF-IDF相比优势是什么 答 维度 Word2Vec 优势 TF-IDF 劣势 向量性质 低维稠密向量如100维语义信息丰富 高维稀疏向量维度词表大小无语义信息 语义理解 能捕捉词的语义相似性如猫和狗向量近 仅衡量词的文档重要性无法体现语义相似性 一词多义 部分改进模型如FastText、BERT可处理一词多义 无法处理一词多义同一词在不同文档中TF-IDF值不同但向量无差异 文本表示 可通过词向量平均得到文档向量保留语义 文档向量是词频加权和仅体现词的出现频率无语义关联 下游任务适配 适合需要语义理解的任务如情感分析、机器翻译 适合文本检索、关键词提取等对语义要求低的任务 问如果遇到训练集中没有的词OOV词怎么获取它的词向量有哪些解决方法 答解决方法①子词级模型用FastTextWord2Vec的改进版将词拆分为子词如机器学习拆分为机器学习机器学器学习OOV词的向量可通过其子词向量的平均得到只要OOV词的子词在训练集中出现过②字符级模型用字符级CNN/RNN训练词向量OOV词可通过其字符序列生成向量无需依赖训练集中的词③预训练词向量使用大规模语料预训练的词向量如Google的300维Word2Vec、GloVeOOV词若在预训练词表中可直接调用④上下文预测用BERT等预训练语言模型通过OOV词在具体句子中的上下文动态生成向量最有效能处理一词多义。 问除了Word2Vec还有哪些常见的词向量模型FastText和Word2Vec的区别是什么 答常见模型Word2Vec、GloVe、FastText、BERT动态词向量。FastText和Word2Vec的核心区别①词的表示方式Word2Vec将每个词视为一个整体生成唯一向量FastText将词拆分为子词n-gram词向量是其子词向量的平均支持OOV词OOV词的子词若在训练集中可生成向量②训练数据Word2Vec适合处理纯文本数据FastText还能处理带有形态变化的语言如英文的runrunningran可通过子词共享语义信息③训练速度FastText训练速度比Word2Vec快因为子词的共享性减少了参数数量④精度对低频词、罕见词FastText的表示精度更高子词提供了更多语义信息。 12. PCA降维
原理无监督降维通过线性变换找到数据方差最大的主成分将高维数据投影到低维空间保留关键信息。
Python实现流程 导入库加载数据标准化保证各特征方差可比。 初始化PCA模型指定降维后维度或方差保留比例。 训练模型model.fit(X)计算主成分。 对数据降维X_pca model.transform(X)。 分析主成分解释的方差比例model.explained_variance_ratio_。
核心库scikit-learnsklearn.decomposition.PCA、numpy
重要概念与关键参数 概念主成分数据方差最大的方向、方差解释率主成分保留的原数据信息比例。 参数n_components降维后维度可设0-1间的数表示方差保留比例如0.95保留95%信息。
适用问题高维数据降维图像、基因数据、去噪简化后续模型计算。
面试官可能提问及回答 问PCA的计算步骤是什么 答标准PCA的计算步骤①数据中心化将每个特征的均值减为0即X X - X.mean(axis0)这是PCA的前提确保主成分围绕原点旋转②计算协方差矩阵若数据是n行p列n样本p特征协方差矩阵为p×p矩阵元素(i,j)是特征i和特征j的协方差③计算协方差矩阵的特征值和特征向量特征向量是主成分的方向特征值表示主成分的方差大小④对特征值降序排序选择前k个最大特征值对应的特征向量这k个特征向量即前k个主成分⑤将原始数据投影到前k个主成分上得到降维后的数据X_pca X × 主成分矩阵。 问PCA为什么需要对数据标准化如果不标准化哪些特征会主导主成分 答因为PCA是基于方差最大化的降维方法方差大的特征会主导主成分的方向。若特征量纲差异大如身高0-100cm和收入0-100万元收入的数值范围远大于身高其方差也远大于身高导致第一主成分几乎完全由收入决定身高的信息被忽略降维后的数据无法反映身高的特征。标准化如Z-score标准化(X - mean)/std能将所有特征的方差缩放到1让各特征对主成分的贡献均衡确保主成分能捕捉所有特征的关键信息。 问第一主成分和第二主成分是什么关系为什么要保证正交 答第一主成分和第二主成分是正交的夹角90度内积为0。原因①PCA的目标是在降维后保留尽可能多的信息正交能确保各主成分之间信息不重叠——第二主成分捕捉的是第一主成分未解释的方差即与第一主成分无关的信息若主成分不正交会存在信息冗余导致降维后的数据仍有较高的相关性无法有效降低维度②从计算角度协方差矩阵是对称矩阵其特征向量天然正交因此主成分必然正交。 问PCA是线性降维还是非线性降维非线性降维有哪些方法和PCA的区别是什么 答PCA是线性降维通过线性变换将高维数据投影到低维空间。常见非线性降维方法t-SNE、LLE局部线性嵌入、Isomap等距映射。区别①降维方式PCA用全局线性变换无法处理非线性数据如环形数据非线性降维用局部非线性变换如t-SNE关注样本的局部邻域关系能处理非线性数据保留数据的局部结构②目标PCA追求全局方差最大化适合保留数据的全局结构非线性降维如t-SNE追求局部邻域关系不变适合可视化高维数据如将1000维的图像特征降维到2维可视化③适用场景PCA适合高维数据预处理如降维后用SVM训练、去噪t-SNE适合高维数据可视化LLE适合流形数据如人脸图像的降维。 问PCA能用于特征选择吗和直接基于特征重要性的选择方法有什么区别 答PCA不能直接用于特征选择即不能直接选出原始特征中的重要特征但可间接辅助特征选择。区别①PCA的本质是特征融合——降维后的主成分是原始特征的线性组合如主成分10.8×身高0.2×体重无法对应到单个原始特征因此不能直接选出重要的原始特征②基于特征重要性的选择方法如决策树的feature_importances_、L1正则化直接评估每个原始特征对目标的贡献选出贡献大的特征能保留原始特征的物理意义如身高是重要特征。PCA辅助特征选择的方式通过主成分的载荷矩阵特征对主成分的贡献度找出对前k个主成分贡献大的原始特征间接筛选出重要特征。 13. XGBoost
原理优化的梯度提升树串行训练决策树每棵树拟合前序模型的残差通过正则化和并行计算提升效率与性能。
Python实现流程 导入库加载数据预处理处理缺失值、编码分类特征。 划分训练集与测试集转为DMatrix格式XGBoost专用。 定义参数学习率、树深度等。 训练模型model xgb.train(params, dtrain, num_boost_round)。 预测model.predict(dtest)并评估分类用accuracy回归用MSE。
核心库xgboostxgboost.XGBClassifier/XGBRegressor、pandas
重要概念与关键参数 概念正则化提升加入树复杂度惩罚减少过拟合、并行计算特征分裂候选点并行加速训练。 参数learning_rate学习率默认0.1、max_depth树深度默认3、n_estimators树数量默认100、objective损失函数如binary:logistic用于二分类。
适用问题高维数据分类信用风险评估、回归销量预测竞赛与工业界常用精度高。
面试官可能提问及回答 问XGBoost和传统的梯度提升树GBM相比有哪些优化 答XGBoost是工程化优化的梯度提升树核心优化点①正则化优化加入树复杂度惩罚项叶子节点数树深度防止过拟合传统GBM无正则化②缺失值处理自动学习缺失值的最优分裂方向无需手动填充缺失值传统GBM需手动处理③并行计算在特征分裂候选点选择阶段并行非树训练并行因为树是串行训练的加速训练传统GBM无并行④梯度优化用二阶泰勒展开近似损失函数比传统GBM的一阶梯度更精准收敛更快⑤稀疏数据优化针对稀疏特征如one-hot编码后的特征设计高效的分裂算法减少计算量⑥早停机制训练过程中监控验证集误差若误差连续多轮不下降则停止训练避免过拟合。 问XGBoost的目标函数由哪两部分组成正则项包括哪些部分 答XGBoost的目标函数损失函数正则项。①损失函数衡量模型预测值与真实值的差异如二分类用对数损失回归用平方损失且通过二阶泰勒展开近似损失≈一阶梯度×残差 0.5×二阶梯度×残差²便于高效求解②正则项控制树的复杂度防止过拟合公式为λ×Σ叶子节点权重² γ×叶子节点数其中λ是叶子节点权重的L2正则系数减少叶子节点权重的绝对值γ是叶子节点数的惩罚系数减少叶子节点数量简化树结构。 问XGBoost怎么处理缺失值和随机森林处理缺失值的方法有什么区别 答XGBoost处理缺失值的逻辑训练时对每个特征的分裂点将缺失值样本分别分配到左子树和右子树计算两种分配方式的损失减少量选择损失减少更多的分配方向将该方向作为缺失值的默认分裂方向后续训练和预测时缺失值样本直接按该方向分裂。区别①XGBoost自动学习缺失值的分裂方向无需手动填充适合缺失值比例高的场景②随机森林通过袋外样本或特征重要性间接处理缺失值——训练时若某样本的特征缺失该样本不参与该特征的分裂计算或用中位数/众数填充缺失值需手动处理本质是忽略缺失值的信息不如XGBoost主动学习缺失值的分裂方向高效。 问学习率learning_rate和树数量n_estimators之间有什么关系调小学习率时通常需要怎么调整n_estimators 答学习率η控制每棵树的贡献权重最终预测值Ση×单棵树预测值树数量n_estimators控制集成的树的总数两者是互补关系。核心关系①学习率越小单棵树的贡献越小需要更多的树才能达到足够的模型复杂度即需要增大n_estimators否则模型会欠拟合②学习率越大单棵树的贡献越大需要 fewer 的树减小n_estimators否则模型会过拟合。例如若将学习率从0.1调小到0.01为了保持模型精度通常需要将n_estimators从100增大到1000左右具体需通过交叉验证调整。 问XGBoost容易过拟合吗有哪些防止过拟合的参数分别怎么起作用 答XGBoost虽然有正则化但在数据量小、特征维度高或树数量过多时仍可能过拟合。防止过拟合的核心参数及作用①max_depth树深度默认3限制树的最大深度减少树的复杂度深度越大越容易拟合噪声②min_child_weight叶子节点最小样本权重和默认1若叶子节点的样本权重和小于该值不分裂节点防止生成过深的树③subsample样本采样比例默认1.0训练每棵树时随机采样部分样本如subsample0.8用80%样本训练减少样本间的相关性④colsample_bytree特征采样比例默认1.0训练每棵树时随机采样部分特征如colsample_bytree0.8用80%特征训练减少特征间的相关性⑤reg_alphaL1正则系数默认0对叶子节点权重施加L1正则可让部分叶子节点权重为0简化树结构⑥reg_lambdaL2正则系数默认1对叶子节点权重施加L2正则减少权重的绝对值让模型更稳健⑦early_stopping_rounds早停轮次如10若验证集误差连续10轮不下降停止训练避免过多树导致过拟合。