
机器学习面试必备:算法、评价指标与特征工程
版权申诉
16.8MB |
更新于2024-11-07
| 147 浏览量 | 举报
收藏
**一、特征工程**
特征工程是机器学习中极为关键的一步,涉及对原始数据进行预处理、转换,以适应算法模型的需求。以下是特征工程中的几个重要知识点:
- **特征预处理**:
- **标准化(Standardization)**:将特征按比例缩放,使之落入一个小的特定区间,常用方法有Z-score标准化,其公式为\( (X - \mu) / \sigma \),其中\( \mu \)是均值,\( \sigma \)是标准差。
- **归一化(Normalization)**:将特征缩放到0和1之间的值,常用方法包括最小-最大标准化,即\( (X - X_{min}) / (X_{max} - X_{min}) \)。
- **异常特征清洗**:检测并处理数据中的异常值,常见的方法有箱型图、Z分数等。
- **不平衡数据处理**:不平衡数据是指某些类别的样本数远多于其他类别,常用的处理方法包括过采样少数类别、欠采样多数类别或使用合成数据生成技术(如SMOTE)。
- **特征表达**:
- **缺失值处理**:对于缺失数据,常见的处理方法包括删除含有缺失值的记录、填充缺失值(如平均值、中位数、众数填充或使用模型预测)。
- **特殊特征处理**:比如时间特征可能需要转换为天数、星期几、工作日/节假日等。
- **离散特征与连续特征**:连续特征离散化有助于处理非线性关系,改善模型性能。
- **模型对缺失值的敏感性**:决策树和基于树的模型对缺失值不敏感,而基于距离的模型(如KNN)和基于梯度的模型(如线性回归)则较为敏感。
- **特征选择**:
- **过滤法**:通过统计测试选择特征。
- **包装法**:使用模型作为标准,根据模型性能选择特征子集。
- **嵌入法**:结合模型训练和特征选择的过程。
- **Kaggle代码实战**:Kaggle竞赛平台上的实战经验是面试时的亮点。
**二、算法基础**
- **评价指标**:
- **PR曲线和F1**:精确率和召回率的综合指标,适用于类别不平衡情况。
- **ROC曲线和AUC**:受试者工作特征曲线及其下面积,用于评估模型的分类性能。
- **AUC与GAUC**:GAUC是加权AUC,考虑到不同样本的重要性。
- **正则项**:
- **正则化与数据先验分布的关系**:正则化是一种防止模型过拟合的手段,常见的有L1、L2正则项。
- **L1在0点处不可导问题**:L1正则项导致的不可导问题可以通过坐标轴下降、最小角回归法等算法解决。
- **L1比L2解更稀疏的原因**:L1惩罚项倾向于生成稀疏权重矩阵,有助于特征选择。
- **损失函数**:
- **常见损失函数**:包括平方损失、绝对损失、对数损失等。
- **损失函数的选择**:不同模型和问题适合使用不同的损失函数。
- **模型训练**:
- **经验误差与泛化误差**:经验误差是模型在训练集上的误差,泛化误差是模型在未见过的数据上的误差。
- **偏差与方差**:偏差是指模型的预测平均值与真实值之间的差异,方差是指模型预测值的波动性。
- **欠拟合与过拟合**:欠拟合是模型对训练数据的拟合程度不够,过拟合则是模型对训练数据过度拟合而泛化能力差。
- **交叉验证**:一种评估模型泛化能力的方法,常见的有K折交叉验证。
- **参数初始化**:深度学习模型的参数初始化对模型训练至关重要,常见的初始化方法包括Lecun初始化、Xavier初始化、He初始化。
- **dropout**:随机丢弃一部分神经元,防止过拟合。
- **Batch Normalization**:批量归一化,用于稳定深层网络的训练。
- **Layer Normalization**:层归一化,适用于RNN等序列模型。
- **Transformer与LN**:Transformer模型通常使用Layer Normalization而非Batch Normalization,因为LN更适合处理序列数据。
- **优化算法**:
- **梯度下降法**:最基础的优化算法,通过计算损失函数的梯度来更新参数。
- **牛顿法和拟牛顿法**:是基于二阶导数的优化算法,比一阶导数的梯度下降法收敛速度更快。
- **深度学习优化算法**:针对深度学习提出的一系列优化算法,如Adam、RMSprop等,适应性强,收敛速度快。
以上知识点是机器学习面试中的高频内容,掌握它们对于准备面试至关重要。
相关推荐





















进击的代码家
- 粉丝: 3248
最新资源
- CRMGraphQL实用指南:JavaScript开发者必备
- FilmsCave: Kotlin开发的压缩包子工具
- Java RMI实现桌面聊天应用的教程与源码分享
- C# Final Project 解压缩技术探讨
- 深入解析天池O2O数据集:merchant2与merchant3特性文件
- 在Python中实现类型检查与警报自动化
- 探索喀拉拉邦旅游的魅力与信息技术的结合
- 深入理解bbenoitstudio项目中的PHP应用
- DongZiyuan的GitHub主页探索
- 深入解析merng-Server关键技术与架构
- MIPS汇编语言实例解析与教程
- R语言课程DSC381核心内容介绍
- C++ 编程实践:压缩包子制作食谱
- 探索DragonPeng的Hexo博客搭建经验
- 打造自己的开源机器人手臂-MeArm项目指南
- 蓝牙控制LED:Arduino项目开发教程
- Nextion 3.5英寸LCD数字罗盘项目开发指南
- Arduino RGB灯光控制:彩虹效果与自定义颜色设置
- 通过蓝牙控制的2WD拾放机器人开发教程
- 打造物联网LED旋转显示屏:项目实施与开发
- Arduino扩展继电器控制技术开发指南
- 学习Git:从Youtobe教程到TestGit项目实战
- 交易次数统计与分析系统
- 小型电子商务网站开发实践:Node.js、ReactJS、Bootstrap4