年前,技术群组织了一场数据类的技术&面试讨论会,邀请了一些大厂同学和23年参加招聘的同学来分享:新人如何入门数据和算法岗,面经/面试题分享、大厂在算法场景的落地项目及经验分享等热门话题。
今天我整理了风控算法方向的面试题,分享给大家,希望对后续找工作的有所帮助。如果你想加入我们的讨论群或者希望要更详细的资料,文末加入。喜欢本文记得收藏、关注、点赞 。
问题1:样本不平衡问题怎么处理的,有什么方法?
-
重采样方法:通过欠采样(随机删除多数类样本)或过采样(复制少数类样本或生成合成样本)来平衡样本分布。常见的方法包括随机欠采样、SMOTE(Synthetic Minority Over-sampling Technique)等。
-
类别权重调整:通过调整分类算法中不同类别的权重,使得分类器更加关注少数类样本。一些分类算法(如逻辑回归、支持向量机)提供了设置类别权重的参数。
-
集成方法:使用集成学习算法,如随机森林或梯度提升树(例如XGBoost和LightGBM),能够处理样本不平衡问题。这是因为集成算法可以从多个子模型中综合考虑不同类别的情况。
问题2:快速排序时间复杂度?稳定性怎么样?为什么是不稳定的
快速排序(QuickSort)的平均时间复杂度为O(n log n),最坏情况下的时间复杂度为O(n^2)。快速排序的稳定性取决于具体的实现方式。通常情况下,快速排序是不稳定的,因为在分区过程中,元素的相对顺序可能会改变。
快速排序的不稳定性是由于分区过程中的元素交换操作引起的。在分区过程中,我们选择一个基准元素(通常是第一个或最后一个元素),将小于基准的元素放在基准的左边,大于基准的元素放在基准的右边。在交换元素的过程中,相等元素的相对顺序可能发生改变,从而导致排序结果的不稳定性。
问题3:各种评估指标
-
准确率(Accuracy):分类正确的样本数与总样本数之比。
-
精确率(Precision):在被分类为正例的样本中,真正例的比例。
-
召回率(Recall):在所有正例中,被正确分类为正例的比例。
-
F1分数(F1 Score):精确率和召回率的调和均值,综合考虑了两者。
-
ROC曲线(Receiver Operating Characteristic curve)和AUC(Area Under the Curve):绘制真正例率(TPR)和假正例率(FPR)之间的关系曲线,并计算曲线下面积。
-
混淆矩阵(Confusion Matrix):展示分类结果的四个统计数字:真正例(True Positive, TP)、假正例(False Positive, FP)、真反例(True Negative, TN)和假反例(False Negative, FN)。
问题4:gboost算法介绍?
XGBoost是一种基于梯度提升树(Gradient Boosting Tree)算法的集成学习模型,它在梯度提升树的基础上进行了优化和改进。
XGBoost的主要特点和优势包括:
-
正则化:XGBoost引入了正则化项来控制模型的复杂度,防止过拟合。它通过控制叶子节点的权重以及树的复杂度来实现正则化,避免单棵树过于复杂。
-
自定义损失函数:XGBoost允许用户自定义损失函数,从而能够灵活地适应不同的任务需求。
-
特征选择:XGBoost通过计算特征的重要性得分,可以帮助识别和选择最具预测能力的特征。
-
高效并行:XGBoost在训练过程中支持并行计算,可以利用多线程和分布式计算加速模型的训练。
-
缺失值处理:XGBoost能够自动学习如何处理缺失值,无需对缺失值进行特殊处理。
-
特征交叉:XGBoost支持特征交叉,可以通过组合特征创建新的特征,提升模型的表达能力。
问题5:评分卡建模全流程?
-
数据准备:收集并清洗需要建模的数据,包括缺失值处理、异常值处理、变量转换等。
-
变量选择:通过特征分析、相关性分析、变量筛选方法(如IV值、WOE值)等,选择最具预测能力的变量作为建模输入。
-
数据切分:将数据集切分为训练集和验证集(测试集),用于模型训练和验证。
-
建立评分卡模型:根据业务需求选择适当的分类算法,如逻辑回归、决策树等,建立评分卡模型。在建模过程中,需要进行特征工程、变量转换、变量融合等步骤。
-
模型评估和验证:使用验证集对模型进行评估,包括计算评分卡的各项指标,如准确率、精确率、召回率、F1分数等。根据评估结果对模型进行调优和验证。
问题6:是否熟悉 transformer 的架构
Transformer本身是一个典型的encoder-decoder模型,Encoder端和Decoder端均有6个Block,Encoder端的Block包括两个模块,多头self-attention模块以及一个前馈神经网络模块;Decoder端的Block包括三个模块,Masked多头self-attention模块,多头Encoder-Decoder attention交互模块,以及一个前馈神经网络模块;需要注意:Encoder端和Decoder端中的每个模块都有残差层和Layer Normalization层。
问题7:transformer输出层的softmax有什么用
Transformer输出层的softmax用于将模型的输出转换为概率分布,以便进行分类任务。它将模型的最后一层的隐藏状态映射到一个多类别分类任务上的概率分布,使得模型可以计算每个类别的概率,并选择概率最高的类别作为预测结果。
问题8:一个数组 返回所有和为k的组合
给定一个数组,返回所有和为k的组合可以通过回溯法或动态规划来实现。以下是一个示例的伪代码,演示如何使用回溯法来找到和为k的组合:
def find_combinations(nums, k):
def backtrack(start, target, path):
if target == 0:
result.append(path)
return
for i in range(start, len(nums)):
if nums[i] <= target:
backtrack(i, target - nums[i], path + [nums[i]])
result = []
backtrack(0, k, [])
return result
技术交流
独学而无优则孤陋而寡闻,技术要学会交流、分享,不建议闭门造车。
建立了技术交流与面试交流群,面试真题、答案获取,均可加交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。
方式①、微信搜索公众号:Python学习与数据挖掘,后台回复:交流
方式②、添加微信号:dkl88194,备注:交流
文章精选
- 美团营销机器学习算法岗(实习)面试题9道(含答案解析)
- 面了滴滴的数据分析师(实习),几道面试题都是原题啊
- 面试必备!机器学习常用十大算法的优缺点!
- 25道机器学习面试问题(附答案)
- 5个必考的大厂SQL面试题
- 一文解决样本不均衡
- 10 大经典排序算法 Python 版实现
- 实战案例:时间序列预测代码模板(单变量、多元、多步、多元多步)
- 实战案例:基于fasttext embedding + lightgbm 垃圾短信识别
- 实战案例:构建基于 DSSM 双塔模型的电影推荐系统
- 实战案例:构建基于 Transformer 建立时间序列预测模型(附完整代码)
- 实战案例:基于LSTM的四种方法进行电影评论情感分类预测
- 实战案例:基于LSTM的国际航空公司乘客预测
- 实战案例:基于电商销售数据的 RFM 模型构建
- 实战案例:一文详解数据分析经典模型RFM
- 实战案例:基于孤立森林的信用卡欺诈检测