机器学习 面试/笔试题

1. 生成模型 VS 判别模型

生成模型:
由数据学得联合概率分布函数 P ( X , Y ) P(X,Y) P(X,Y),求出条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)的预测模型。
朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机。
判别式模型:
由数据直接学习决策函数 Y = f ( X ) Y=f(X) Y=f(X),或由条件分布概率 P ( Y ∣ X ) P(Y|X) P(YX)作为预测模型。
K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场。

2. 线性回归

原理:用线性函数拟合数据,用 MSE 计算损失,然后用梯度下降法(GD)找到一组使 MSE 最小的权重。

3. 什么是回归?哪些模型可用于解决回归问题?

指分析因变量和自变量之间关系。
线性回归: 对异常值非常敏感;
多项式回归: 如果指数选择不当,容易过拟合;
岭回归:加入L2正则项,等价于对参数 w w w引入协方差为 α \alpha α的零均值高斯先验,不能做variable selection;
Lasso回归:加入L1正则项,等价于对参数 w w w引入拉普拉斯先验,可以做variable selection;弹性网络回归。

4. 梯度下降法找到的一定是下降最快的方向吗?

不一定,它只是目标函数在当前的点的切平面上下降最快的方向。
在实际执行期中,牛顿方向(考虑海森矩阵)才一般被认为是下降最快的方向,可以达到超线性的收敛速度。梯度下降类的算法的收敛速度一般是线性甚至次线性的(在某些带复杂约束的问题)。

5. 逻辑回归

是一中常见的用于分类的模型,本质上还是一个线性回归,先把特征线性组合,然后使用sigmoid函数(单调可微)将结果约束到0~1之间,结果用于二分类或者回归预测。

6. 逻辑回归和最大似然有什么关系?

通过极大似然法可以求解逻辑回归模型中的参数。最大似然估计就是通过已知结果去反推最大概率导致该结果的参数。极大似然估计是概率论在统计学中的应用,它提供了一种给定观察数据来评估模型参数的方法,即 “模型已定,参数未知”,通过若干次试验,观察其结果,利用实验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计。逻辑回归是一种监督式学习,是有训练标签的,就是有已知结果的,从这个已知结果入手,去推导能获得最大概率的结果参数 β \beta β,只要我们得出了这个参数,那我们的模型就自然可以很准确的预测未知的数据了。

7. 逻辑回归的损失函数;为什么不用MSE作为损失函数?

L o s s = − y log ⁡ ( y ^ ) − ( 1 − y ) log ⁡ ( 1 − y ^ ) Loss =-y\log(\hat{y})-(1-y)\log(1-\hat{y}) Loss=ylog(y^)(1y)log(1y^)
原因:

  • 损失函数的角度:逻辑回归预测函数是非线性的,采用MSE得到的损失函数是非凸函数,会存在很多局部极小值,梯度下降法可能无法获得全局最优解。
  • 极大似然的角度:采用极大似然法估计逻辑回归模型的参数,最终得到的对数似然函数形式与对数损失函数一致。

8. 逻辑回归中样本不均衡我们怎么处理?

  • 调整分类阈值,不统一使用0.5,根据样本中类别的比值进行调整。
  • 多类样本负采样。进一步也可将多类样本负采样构建多个训练集,最后聚合多个模型的结果。
  • 少类样本过采样:随机复制、基于聚类的过采样、SMOTE。
  • 改变性能指标,推荐采用ROC、AUC、F1-Score。
  • 模型训练增加正负样本惩罚权重,少类样本权重加大,增大损失项。

9. 逻辑回归模型是线性模型还是非线性,为什么?能推导它的原理吗?

逻辑回归模型是广义线性模型,但其原始形式是非线性的,决定这个复合函数是否是线性的,要看 g ( x ) g(x) g(x)的形式,假如阈值为 0.5,那么 g ( x ) > = 0 g(x)>=0 g(x)>=0时,预测为 1,否则预测为 0.因此,这里的$ g(x)$,实际是一个决策面,这个决策面的两侧分别是正例和负例。逻辑回归的作用是把决策面两侧的点映射到逻辑回归曲线阈值的两侧。

10. 逻辑回归如何解决非线性分类问题?

加核函数或特征变换,显式地把特征映射到高维空间。

11. 逻辑回归使用注意事项,相比别的分类模型为什么使用它?

注意,建模数据量不能太少,目标变量中每个类别所对应的样本数量要足够充分,才能支持建模排除共线性问题(自变量间相关性很大);异常值会给模型带来很大干扰,要剔除;逻辑回归不能处理缺失值,所以之前应对缺失值进行适当处理。
相对于别的模型用逻辑回归的好处是在于在数据量比较大的情况下越复杂的模型可能会越慢,逻辑回归就显得会快上很多了。

12. LR 和 DNN 联系和区别是什么?

二者都是用于二分类问题,且无法学习比较复杂的非线性模型,区别在于DNN 是神经网络,输出结果为 ( 1 , − 1 ) (1,-1) (1,1),lr 输出结果为 (0,1);DNN 的激活函数为sign,lr 的激活函数为 sigmoid。

13. LR逻辑回归为什么对特征进行离散化?

  • 离散特征的增加和减少都很容易,易于模型的快速迭代;

  • 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;

  • 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;

  • 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;

  • 离散化后可以进行特征交叉,由 M + N M+N M+N个变量变为 M × N M\times N M×N个变量,进一步引入非线性,提升表达能力;

  • 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;

  • 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

14. 谈谈牛顿法

收敛速度快,指数级收敛,但是不保证线性收敛,只保证二阶导收敛。
牛顿法比梯度下降法收敛的要快,这是因为牛顿法是二阶收敛,梯度下降是一阶收敛。事实上,梯度下降法每次只从当前位置选一个上升速度最大的方向走一步,牛顿法在选择方向时,不仅会考虑上升速度是否够大,还会考虑你走了一步之后,上升速度是否会变得更大。,所以所需要的迭代次数更少。从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

15. 牛顿法优化过程

牛顿法的基本思想是用迭代点的梯度信息和二阶导数对目标函数进行二次函数逼近,然后把二次函数的极小值作为新的迭代点,并不断重复这一过程,直到求出极小点。
假设 f ( x ) f(x) f(x)的二阶导数 ∇ 2 f ( x ) \nabla^2f(x) 2f(x)连续,函数 f ( x ) f(x) f(x) x k x_k xk处的二阶泰勒展开为
f ( x ) ≈ f k + ∇ f ( x k ) ( x − x k ) + 1 2 ( x − x k ) T ∇ 2 f ( x k ) ( x − x k ) f(x) \approx f_k +\nabla f(x_k)(x- x_k)+\frac 12 (x-x_k)^T\nabla ^2f(x_k)(x-x_k) f(x)fk+f(xk)(xxk)+21(xxk)T2f(xk)(xxk)
其中 f k : = f ( x k ) f_k:=f(x_k) fk:=f(xk),求函数的驻点那就是求导并令导数为0,即
∇ f ( x ) = ∇ f ( x k ) + ∇ 2 f ( x k ) ( x − x k ) = 0 \nabla f(x)=\nabla f(x_k)+\nabla ^2f(x_k)(x-x_k)=0 f(x)=f(xk)+2f(xk)(xxk)=0
如果二阶导数为非奇异,可以得到下一个迭代点(上式求出来的 x x x就是 x k + 1 x_{k+1} xk+1
x k + 1 = x k − ∇ 2 f ( x k ) ∇ f ( x k ) x_{k+1}=x_k-\nabla^2f(x_k)\nabla f(x_k) xk+1=xk2f(xk)f(xk)
如果二阶导数奇异,那么可以求解下面线性方程确定搜索方向 d k d_k dk
∇ 2 f ( x k ) d k = − ∇ f ( x k ) \nabla^2f(x_k)d_k=-\nabla f(x_k) 2f(xk)dk=f(xk)
后计算下一个迭代点 x k + 1 = x k + d k x_{k+1}=x_k +d_k xk+1=xk+dk

16. 交叉熵的物理含义

交叉熵是由相对熵导出的,相对熵的含义是衡量两个概率分布 p p p q q q 之间的差异。相对熵的前半部分是交叉熵,后半部分是常数,相对熵达到最小值的时候,交叉熵也达到了最小值,所以交叉熵也可以衡量计算之后的概率分布 q q q 与真实概率分布 p p p 之间的差异。交叉熵最小值等同于最大似然估计。

17. SVM

SVM 是一种二分类模型,学习的目标是在特征空间中找到一个分离超平面,且此超平面是间隔最大化的最优分离超平面,最终可转化为一个凸二次规划问题求解。(间隔最大是它有别于感知机)
(1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
(2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
(3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
注:以上各SVM的数学推导应该熟悉:硬间隔最大化(几何间隔)—学习的对偶问题—软间隔最大化(引入松弛变量)— 非线性支持向量机(核技巧)

18. SVM,LR 的区别联系,重点介绍下 SVM 算法。

  • 相同之处:如果不考虑核函数,LR和SVM都是线性分类器,都是监督算法,都是判别模型。
  • 不同之处:1.损失函数不同,LR使用logistical loss(交叉熵),SVM使用hingeloss,SVM的损失函数自带正则项,而LR则需要自己添加正则项;2.解决非线性问题时,SVM采用核函数机制,而LR一般不用,因为复杂核函数需要很大计算量,SVM中只有支持向量参与计算,而LR是全部样本都需要参与计算,若使用核函数计算量太大。3.对异常值的敏感度不一样。LR中所有样本都对分类平面有影响,所以异常点的影响会被掩盖。但SVM的分类平面取决于支持向量,如果支持向量受到异常值影响,则结果难以预测。4.在高维空间LR的表现比SVM更稳定,因为SVM是要最大化间隔,这个间隔依赖与距离测度,在高维空间时这个距离测度往往不太好。(所以需要做归一化)

假设:特征数量为 n n n,训练样本数量为 m m m
1)如果 n n n相对于 m m m更大,比如 n = 10000 n=10000 n=10000 m = 1000 m=1000 m=1000,则使用LR或线性SVM
理由:特征数相对于训练样本数已经够大了,使用线性模型就能取得不错的效果,不需要过于复杂的模型。

2)如果 n n n 较小, m m m比较大,比如 n = 10 n = 10 n=10 m = 10 , 000 m = 10,000 m=10,000,则使用 SVM(高斯核函数)
理由:在训练样本数量足够大而特征数较小的情况下,可以通过使用复杂核函数的 SVM 来获得更好的预测性能,而且因为训练样本数量并没有达到百万级,使用复杂核函数的 SVM 也不会导致运算过慢。

3)如果 n n n 较小, m m m 非常大,比如 n = 100 n = 100 n=100, m = 500 , 000 m = 500,000 m=500,000,则应该引入/创造更多的特征,然后使用LR 或者线性核函数的 SVM。
理由::因为训练样本数量特别大,使用复杂核函数的 SVM 会导致运算很慢,因此应该考虑通过引入更多特征,然后使用线性核函数的 SVM 或者 LR来构建预测性更好的模型。

19. SVM 为什么采用间隔最大化?

当训练数据线性可分时,存在无穷个分离超平面可以将两类数据正确分开。感知机利用误分类最小策略,求得分离超平面,不过此时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。可以借此机会阐述一下几何间隔以及函数间隔的关系。

20. 为什么 SVM 要引入核函数?

原始样本空间可能会线性不可分,这样需要将原始空间映射到一个更高维的特征空间,使得样本在这个特征空间线性可分。样本映射到高维空间后的内积求解通常是困难的,引入核函数可简化内积的计算。

21. 为什么SVM对缺失数据敏感?

这里说的缺失数据是指缺失某些特征数据,向量数据不完整。SVM 没有处理缺失值的策略。而 SVM 希望样本在特征空间中线性可分,所以特征空间的好坏对SVM的性能很重要。缺失特征数据将影响训练结果的好坏。

22. 核函数要满足什么性质,常见的核函数有哪些?

核函数的性质:核函数必须是连续的,对称的,并且最优选地应该具有正(半)定 Gram 矩阵。据说满足 Mercer 定理的核是正半定数,意味着它们的核矩阵只有非负特征值。使用肯定的内核确保优化问题将是凸的和解决方案将是唯一的。
然而,许多并非严格定义的核函数在实践中表现得很好。一个例子是 Sigmoid内核,尽管它广泛使用,但它对于其参数的某些值不是正半定的。 Boughorbel(2005)也实验证明,只有条件正定的内核在某些应用中可能胜过大多数经典内核。
内核还可以分为各向异性静止,各向同性静止,紧凑支撑,局部静止,非稳定或可分离非平稳。此外,内核也可以标记为 scale-invariant(规模不变)或scale-dependent(规模依赖),这是一个有趣的属性,因为尺度不变内核驱动训练过程不变的数据的缩放。

补充:Mercer定理:任何半正定的函数都可以作为核函数。所谓半正定的函数 f ( x i , x j ) f(x_i,x_j) f(xi,xj),是指拥有训练数据集合 ( x 1 , x 2 , … , x n ) (x_1,x_2,\dots,x_n) (x1,x2,,xn),我们定义一个矩阵的元素 a i j = f ( x i , x j ) a_{ij}=f(x_i,x_j) aij=f(xi,xj),这个矩阵是 n × n n\times n n×n,如果这个矩阵式半正定的,那么 f ( x i , x j ) f(x_i,x_j) f(xi,xj)就称为半正定函数。这个 Mercer 定理不是核函数必要条件,只是一个充分条件,即还有不满足 mercer 定理的函数也可以是核函数。

几种常用的核:

  • 线性核:线性内核是最简单的内核函数。它由内积 < x , y > <x,y> <xy>加上可选的常数 c c c给出。使用线性内核的内核算法通常等于它们的非内核对应物,即具有线性内核的 KPCA与标准 PCA 相同。
  • 多项式核函数:多项式核是非固定内核。 多项式内核非常适合于所有训练数据都归一化的问题。
  • 高斯核:高斯核是径向基函数核的一个例子。可调参数 σ \sigma σ在内核的性能中起着主要作用,并且应该仔细地调整到手头的问题。 如果过高估计,指数将几乎呈线性,高维投影将开始失去其非线性功率。 另一方面,如果低估,该函数将缺乏正则化,并且决策边界将对训练数据中的噪声高度敏感。
  • 指数的内核:指数核与高斯核密切相关,只有正态的平方被忽略。 它也是一个径向基函数内核。
  • 拉普拉斯算子核:拉普拉斯核心完全等同于指数内核,除了对 σ \sigma σ参数的变化不那么敏感。作为等价的,它也是一个径向基函数内核。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145733.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之单链表

首先我们要分析为什么要链表 那么我们就要先分析顺序表的优缺点 首先我们要确定链表的结构是一个数据存放的空间&#xff0c;指向下个结点的指针域 然后我们实现打印和创建新的节点 然后我们实现头插和尾插 这个地方有一个易错点 首先对尾插来说&#xff0c;如果我们插入的是…

国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄

国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄 国庆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书行将售罄

Vue之transition组件

Vue提供了transition组件&#xff0c;使用户可以更便捷地添加过渡动画效果。 transition组件 transition组件也是一个抽象组件&#xff0c;并不会渲染出真实dom。Vue会在其第一个真实子元素上添加过渡效果。 props render 这里将render分为两部分&#xff0c;第一部分界定真…

【模板语法+数据绑定+el与data的两种写法+MVVM模型】

模板语法数据绑定el与data的两种写法MVVM模型 1 模板语法1.1 插值语法1.2 指令语法 2 数据绑定2.1 单向数据绑定2.2 双向数据绑定 3 el与data的两种写法4 MVVM模型 1 模板语法 1.1 插值语法 双大括号表达式功能&#xff1a;用于解析标签体内容语法&#xff1a;{{xxx}}&#x…

Firecamp2.7.1exe安装与工具调试向后端发送SocketIO请求

背景&#xff1a; 笔者在python使用socket-io包时需要一个测试工具&#xff0c;选择了firecamp这个测试工具来发送请求。 参考视频与exe资源包&#xff1a; Firecamp2.7.1exe安装包以及基本使用说明文档&#xff08;以SocketIO为例&#xff09;.zip资源-CSDN文库 15_send方法…

论文笔记(整理):轨迹相似度顶会论文中使用的数据集

0 汇总 数据类型数据名称数据处理出租车数据波尔图 原始数据&#xff1a;2013年7月到2014年6月&#xff0c;170万条数据 ICDE 2023 Contrastive Trajectory Similarity Learning with Dual-Feature Attention 过滤位于城市&#xff08;或国家&#xff09;区域之外的轨迹 过…

html、css学习记录【uniapp前奏】

Html 声明&#xff1a;该学习笔记源于菜鸟自学网站&#xff0c;特此记录笔记。很多示例源于此官网&#xff0c;若有侵权请联系删除。 文章目录 Html声明&#xff1a; CSS 全称 Cascading Style Sheets&#xff0c;层叠样式表。是一种用来为结构化文档&#xff08;如 HTML 文档…

NLP 04(GRU)

一、GRU GRU (Gated Recurrent Unit)也称门控循环单元结构,它也是传统RNN的变体,同LSTM一样能够有效捕捉长序列之间的语义关联&#xff0c; 缓解梯度消失或爆炸现象&#xff0c;同时它的结构和计算要比LSTM更简单,它的核心结构可以分为两个部分去解析: 更新门、重置门 GRU的内…

宝塔 php修改了php.ini配置不生效

最近在使用hypref&#xff0c;php的版本是7.4 服务器linux&#xff0c;用宝塔安装完php,并装完swoole插件后 安装了swoole后&#xff0c;需要在php.ini中修改一下配置文件 添加 swoole.use_shortnameOff 但是添加了&#xff0c;重启php,依然不生效 解决方法是&#xff1a; 同时…

AI项目十三:PaddleOCR训练自定义数据集

若该文为原创文章&#xff0c;转载请注明原文出处。 续上一篇&#xff0c;PaddleOCR环境搭建好了&#xff0c;并测试通过&#xff0c;接下来训练自己的检测模型和识别模型。 paddleocr检测模型训练 1、准备数据集 在PaddleOCR目录下新建文件夹&#xff1a;train_data, 这个…

idea2023根据表自动生成+springboot跑起来

idea安装插件 idea中显示数据库连接 就可以看到如下界面 选中你想生成的表&#xff0c;右键如下操作 如上就有了所有需要的后端代码 生成后&#xff0c;要查看一下mapper.xml中的文件是否 正确&#xff0c;若有误请先去修改&#xff0c;例如我的版本下生成了xml文件中缺乏…

从 低信噪比陆上地震记录 解决办法收集 到 走时层析反演中的折射层析调研

目录 (前言1) 关于背景的回答:(前言2) 现有的降低噪声, 提高信噪比的一些特有方法的论文资料 (传统策略):1. 关于波形反演与走时层析反演2. 折射层析3. 用一个合成数据来解释折射层析反演的思路4. 其他层析反演方法:5. 关于层析反演的一些TIPS (可补充)参考文献: 降噪有关资料参…

Unity中Shader的前向渲染路径ForwardRenderingPath

文章目录 前言一、前向渲染路径的特点二、渲染方式1、逐像素(效果最好)2、逐顶点(效果次之)3、SH球谐(效果最差) 三、Unity中对灯光设置 后&#xff0c;自动选择对应的渲染方式1、ForwardBase仅用于一个逐像素的平行灯&#xff0c;以及所有的逐顶点与SH2、ForwardAdd用于其他所…

GitHub 基本操作

最近要发展一下自己的 github 账号了&#xff0c;把以前的项目代码规整规整上传上去&#xff0c;这里总结了一些经验&#xff0c;经过数次实践之后&#xff0c;已解决几乎所有基本操作中的bug&#xff0c;根据下面的操作步骤来&#xff0c;绝对没错了。&#xff08;若有其他问题…

Java初始化大量数据到Neo4j中(二)

接Java初始化大量数据到Neo4j中(一)继续探索&#xff0c;之前用create命令导入大量数据发现太过耗时&#xff0c;查阅资料说大量数据初始化到Neo4j需要使用neo4j-admin import 业务数据说明可以参加Java初始化大量数据到Neo4j中(一)&#xff0c;这里主要是将处理好的节点数据和…

装饰器模式详解和实现(设计模式 二)

装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许你动态地将对象添加到现有对象中&#xff0c;以提供额外的功能&#xff0c;同时又不影响其他对象。 实现示例 1.定义一个接口或抽象类&#xff0c;表示被装饰对象的公共接口 //抽…

3D孪生场景搭建:模型区域摆放

前面介绍完了NSDT场景编辑器的线性绘制和阵列绘制&#xff0c;本章将讲述下编辑器的另一种绘制方式&#xff1a;区域绘制。 1、区域绘制功能简介 在场景中绘制资产时&#xff0c;除使用上述两个的方式外&#xff0c;NSDT 编辑器还支持使用区域绘制的方式进行绘制。先选取需要…

Linux常用指令(二)

目录 一、 删除空目录&#xff08;rmdir&#xff09; 二、ln 硬链接与软链接 三、新建空文件或更新文件的时间戳&#xff08;touch&#xff09; 四、比较文件内容的差异&#xff08;diff&#xff09; 五、显示当前时间或设置系统时间&#xff08;date&#xff09; 六、显…

Git多账号管理通过ssh 公钥的方式,git,gitlab,gitee

按照目前国内访问git&#xff0c;如果不科学上网&#xff0c;我们很大可能访问会超时。基于这个&#xff0c;所以我现在的git 配置已经增加到了3个了 一个公司gitlab&#xff0c;一个git&#xff0c;一个gitee. 以下基于这个环境&#xff0c;我们来说明下如何创建配置ssh公钥。…

信号类型(雷达)——脉冲雷达(四)

系列文章目录 《信号类型&#xff08;雷达通信&#xff09;》 《信号类型&#xff08;雷达&#xff09;——雷达波形认识&#xff08;一&#xff09;》 《信号类型&#xff08;雷达&#xff09;——连续波雷达&#xff08;二&#xff09;》 《信号类型&#xff08;雷达&…