AI人工智能面试题

news2024/9/27 7:23:46

目录

01、监督学习和非监督学习?

02、常用的分类器有哪些,简述其原理?

03、逻辑回归(LR,Logistic Regression)与线性回归的对比

05、简述一下BP网络神经

06、AdaBoost的基本原理?

07、聚类算法——说一下你所熟悉的聚类的算法并加以说明;

08、机器学习中,为何要经常对数据做归一化?

10、归一化的种类

11、归一化和标准化的区别是什么?

12、简单说一下“熵”

13、L1和L2的区别

14、SGD 中 S(stochastic)代表什么?

15、Softmax Loss推倒

16、引入非线性激活函数的原因?

17、什么造成了梯度消失和梯度膨胀?

18、为什么我们要称“朴素“贝叶斯?

19.第一类误差和第二类误差有什么区别,简单举一下啊例子?

20、什么是深度学习,它与机器学习算法之间有什么联系?

21、什么时候你应该使用分类而不是回归?

22.交叉检验如何用在时间序列数据上?

23、如何对决策树进行剪枝?

24、什么是贝叶斯定理,它是如何使用在机器学习中的?

25、解释一下ROC曲线的原理

26、如何理解TensorFlow的计算图?

27、TensorFlow中都有哪些优化方法?

28、TensorFlow中常见的激活函数有?

29、TensorFlow中交叉熵 常用的有哪些?

28、TensorFlow中常见的核函数都有哪些?

29、什么是核技巧,有什么用处?

30、什么是偏倚(bias)、方差(variable)均衡?


01、监督学习和非监督学习?

监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如:分类

非监督学习:直接对输入数据集进行建模,例如聚类

半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数。

02、常用的分类器有哪些,简述其原理?

线性分类器:Logistic归回 y=sigmoid(wx+b)

传统方式:特征描述和检测

KNN、k最邻近,判断图像与各个类别的距离

SVM、选项定特征、SVM算法输出一个最优化的分隔超平面(分类面)

BPNN,全连接网络,计算量巨大

CNN,卷积神经网络

03、逻辑回归(LR,Logistic Regression)与线性回归的对比

逻辑回归(LR,Logistic Regression)的优化函数为似然函数,经典线性回归的优化函数为最小二乘。

LR将预测范围缩小到了[0,1],而经典线性回归的预测范围为整个实数。

似然函数其实最终原理也是最小二乘法

04、SVM是什么?

是一个二分分类器,找寻数据之间间隔最大的线性分类器。

其学习策略是使分隔间隔最大化。

  • 对于线性可分的数据,SVM构造一个分隔面。
  • 对于线性不可分的数据,SVM采用核函数将低维空间的问题映射到了高维空间,从而线性可分。

常用核函数有多项式核函数、高斯核函数、线性核函数。为了应对维度爆炸的情形,核函数事先在低维空间上进行计算,再将分类的实际效果展现在高维上。

SVM的损失函数叫做Hinge(hɪndʒ) Loss,形式为max(0,1-y*a),y为真实值+-1,a为预测值,介于-1到1之间。

05、简述一下BP网络神经

back propagation神经网络 简写“BP”,输入X,通过隐藏节点的非线性变换后,输出信号Y,通过误差分析,来调整隐藏节点的W和b。

06、AdaBoost的基本原理?

AdaBoost是一个广泛使用的BOOSTING算法,其中训练集上依次训练弱分类器,每次下一个弱分类器是在训练样本的不同权重集合上训练。权重是由每个样本分类的难度确定的。分类的难度是通过分类器的输出估计的。

07、聚类算法——说一下你所熟悉的聚类的算法并加以说明;

K-meansClustering(K均值聚类)

 

将输入数据分到K个类中。K均值是通过循环更新类中心的初始估计值来实现的。优势是实现起来很简单,是并行化的。主要缺陷是,类的数目需要提前确定。

主要分三步:

  1. 随机选取k个聚类质心点(cluster centroids)
  2. 对于每一个样例i,计算其应该属于的类
  3. 对于每一个类j,重新计算该类的质心

层次聚类

层次聚类(或者叫做凝聚聚类)是另一个简单但是强大的聚类算法。其思想是基于成对距离建立一棵相似度树。该算法首先分组成为两个最近的对象(基于特征向量之间的距离),并且在一棵有着两个对象作为孩子的树中创建一个平均结点。然后在余下的结点中找到一个最近的pair,并且也包含任何平均节点,等等。在每一个结点,两个孩子之间的距离也会被存储。簇然后可以通过遍历这棵树并在距离比某个阈值小以至于决定聚类的大小的结点处停止来被提取出来。

层次聚类有几个优势。比如,树结构可以被用来可视化关系,并且显示簇是如何关联起来的。一个好的特征向量将得到树中好的分离。另一个优势是树可以在不同的簇阈值中被重用,而不需要重新计算树。缺点是需要选择一个阈值如果实际的簇需要的话

谱聚类

对于n个元素的相似度矩阵(或者叫affinity matrix, 有时也叫距离矩阵)是一个有着成对相似度分数的n*n矩阵。谱聚类的这个名称是从相似度矩阵构造的矩阵的谱的使用得来。这个矩阵的特征向量被用来降维,然后再聚类。

谱聚类方法的其中一个优势是唯一的输入就是这个矩阵,并且可以被你可以想到的任何相似度度量构造出来。像K均值和层次聚类这样的方法计算特征向量的平均值,这个限制了特征(或者是描述符)对向量(为了能够计算平均值)。有了谱方法,不再需要任何类型的特征向量,只有“距离”或者“相似度”。

Mean Shift 聚类算法

  1. 在未被标记的数据点中随机选择一个点作为中心center;
  2. 找出离center距离在bandwidth之内的所有点,记做集合M,认为这些点属于簇c。同时,把这些求内点属于这个类的概率加1,这个参数将用于最后步骤的分类
  3. 以center为中心点,计算从center开始到集合M中每个元素的向量,将这些向量相加,得到向量shift。
  4. center = center+shift。即center沿着shift的方向移动,移动距离是||shift||。
  5. 重复步骤2、3、4,直到shift的大小很小(就是迭代到收敛),记住此时的center。注意,这个迭代过程中遇到的点都应该归类到簇c。
  6. 如果收敛时当前簇c的center与其它已经存在的簇c2中心的距离小于阈值,那么把c2和c合并。否则,把c作为新的聚类,增加1类。
  7. 重复1、2、3、4、5直到所有的点都被标记访问。
  8. 分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类。

08、机器学习中,为何要经常对数据做归一化?

归一化后加快的梯度下降对最优解的速度。

归一化有可能提高精度。

10、归一化的种类

线性归一化。利用max和min进行归一化,如果max和min不稳定,则常用经验值来替代max和min。

标准差归一化。利用所有样本的均值和方差将样本归一化为正态分布

非线性归一化。比如指数、对数、三角函数等。

11、归一化和标准化的区别是什么?

标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下。归一化是依照特征矩阵的行处理数据,其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准,也就是说都转化为“单位向量”。

对于深度网络而言,归一化的目的是方便比较,可以加快网络的收敛速度;标准化是将数据利用z-score(均值、方差)的方法转化为符合特定分布的数据,方便进行下一步处理,不为比较。

12、简单说一下“熵”

熵是指样本的随机程度。样本越无序,熵越大, 信息越多。

13、L1和L2的区别

L1范数为向量中各个元素的绝对值之和,符合拉普拉斯分布,可以使权值稀疏;

L2范数为向量中各个元素的平方和的1/2次方,符合高斯分布,可以防止过拟合;

Lp范数为向量中各个元素的p次方和的1/p次方;

14、SGD 中 S(stochastic)代表什么?

Stochastic Gradient Descent 随机梯度下降。GD即Full-Batch,SGD即为Mini-Batch。随机性表现在训练数据的shuffle。

15、Softmax Loss推倒

16、引入非线性激活函数的原因?

指数函数运算量大。ReLU节省运算量。(计算量小)

Sigmoid容易引发梯度消失问题,因为Sigmoid函数在两端的导数趋近于0.(解决梯度消失问题)

ReLU使得一部分神经元死亡,这样可以使得网络变得比较稀疏,缓解了过拟合的发生。(避免过拟合);

17、什么造成了梯度消失和梯度膨胀?

深度网络的链式连乘法则,使得反向传播时到达前几层时,权值更新值非常小或非常大。可以通过ReLU解决一部分。

18、为什么我们要称“朴素“贝叶斯?

因为我们在用到它的时候,有一个很强的假设,现实数据中几乎不会出现的:我们假设特征之间是相互独立,也就是我们计算条件概率时可以简化成它的组件的条件概率乘积。

19.第一类误差和第二类误差有什么区别,简单举一下啊例子?

第一类误差指的是假正率,第二类指的是假负率。简单来说,第一类误差意味着假设为真的情况下,作出了拒绝原假设的一种错误推断。第二类误差意味着假设为假的情况下,做出了接受原假设的一种错误判断。

举个例子:第一类误差,你告诉一个男的他怀孕了。第二类误差,你告诉一个已经怀孕的女子,她没怀孕。

20、什么是深度学习,它与机器学习算法之间有什么联系?

深度学习是机器学习的一个子领域,它关心的是参照神经学科的理论构建神经网络,使用反向传播对大量未标注或半结构化的数据进行建模。从这个角度看,深度学习可以看成一种非监督学习算法,通过使用神经网络学习数据的表示。

21、什么时候你应该使用分类而不是回归?

分类会产生离散的数值,使得数据严格的分为不同类。回归会得到连续的值,使你更好的区分独立点之间的区别。当你需要知道你的数据明确的属于那些类时你可以用分类。

22.交叉检验如何用在时间序列数据上?

与标准的k-folds 交叉检验不同,数据不是随机分布的,而是具有时序性的。如果模式出现在后期,模型仍然需要选择先前时间的数据,尽管前期对模式无影响。我们可以如下这么做:

fold1:training[1], test[2]
fold2:training[1 2], test[3]
fold3:training[1 2 3], test[4]
fold4:training[1 2 3 4], test[5]
fold5:training[1 2 3 4 5], test[6]

交叉验证(Cross Validation)是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(training set),另一部分做为验证集(validation set),首先用训练集对分类器进行训练,在利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。常见的交叉验证方法如下:

1、Hold-Out Method

       将原始数据随机分为两组,一组做为训练集,一组做为验证集,利用训练集训练分类器,然后利用验证集验证模型,记录最后的分类准确率为此分类器的性能指标。此种方法的好处的处理简单,只需随机把原始数据分为两组即可,其实严格意义来说Hold-Out Method并不能算是CV,因为这种方法没有达到交叉的思想,由于是随机的将原始数据分组,所以最后验证集分类准确率的高低与原始数据的分组有很大的关系,所以这种方法得到的结果其实并不具有说服性。

2、Double Cross Validation(2-fold Cross Validation,记为2-CV)

      做法是将数据集分成两个相等大小的子集,进行两回合的分类器训练。在第一回合中,一个子集作为training set,另一个便作为testing set;在第二回合中,则将training set与testing set对换后,再次训练分类器,而其中我们比较关心的是两次testing sets的辨识率。不过在实务上2-CV并不常用,主要原因是training set样本数太少,通常不足以代表母体样本的分布,导致testing阶段辨识率容易出现明显落差。此外,2-CV中分子集的变异度大,往往无法达到“实验过程必须可以被复制”的要求。

3、K-fold Cross Validation(K-折交叉验证,记为K-CV)

      将原始数据分成K组(一般是均分),将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为此K-CV下分类器的性能指标。K一般大于等于2,实际操作时一般从3开始取,只有在原始数据集合数据量小的时候才会尝试取2。K-CV可以有效的避免过学习以及欠学习状态的发生,最后得到的结果也比较具有说服性

23、如何对决策树进行剪枝?

剪枝是决策树发生过拟合后,为了降低模型复杂度,提高模型准确率的一种做法。可以分为自上而下和自下而上两种。常见的方法有:误差降低剪枝(REP)和代价复杂度剪枝(CCP)。

REP简单的来说就是对树的每一个结点进行剪枝,如果剪掉某个结点不会降低模型准确率,那么将其剪掉。这种启发式的做法实际上就是为了最大化准确率。

24、什么是贝叶斯定理,它是如何使用在机器学习中的?

贝叶斯定理会根据一件事发生的先验知识告诉你它后验概率。数学上,它表示为:一个条件样本发生的真正率占真正率和假正率之和的比例,即:

举个例子: 已知某疾病的患病概率为5%,现用某检验方法进行诊断,若患有该病,则有90%的几率检验结果呈阳性。但即使正常人使用该检验方法,也有10%的几率误诊而呈阳性。某人检验结果为阳性,求此人患病的概率。

贝叶斯定理使一些机器学习算法如:朴素贝叶斯等的理论基础。

25、解释一下ROC曲线的原理

ROC曲线是真正率和假正率在不同的阀值下之间的图形表示关系。通常用作权衡模型的敏感度与模型对一个错误分类报警的概率。

真正率表示:表示 正的样本被预测为正占所有正样本的比例。
假正率表示:表示 负的样本被预测为正占所有负样本的比例。
(0,0)点表示所有样本都被预测为负,此时阀值很大。
(1,1)点表示所有样本都被预测为正,此时阀值很小。

26、如何理解TensorFlow的计算图?

TensorFlow分为二部分,

一部分是构造部分,用来构造网络;

一部分是执行部分,用来执行网络中的计算;

27、TensorFlow中都有哪些优化方法?

  1. GradientDescentOptimizer
  2. AdagradOptimizer
  3. Optimizer
  4. 优化最小代价函数

28、TensorFlow中常见的激活函数有?

relu ,sigmoid, tanh

29、TensorFlow中交叉熵 常用的有哪些?

tf.nn.weighted_cross_entropy_with_logits;

tf.nn.sigmoid_cross_entropy_with_logits;

tf.nn.softmax_cross_entropy_with_logits;

tf.nn.sparse_softmax_cross_entropy_with_logits;

28、TensorFlow中常见的核函数都有哪些?

SVM高斯核函数,应为如果想要分割非线性数据集,改变线性分类器隐射到数据集,就要改变SVM损失函数中的核函数;

线性核函数;

多项式核函数;

29、什么是核技巧,有什么用处?

核技巧使用核函数,确保在高维空间不需要明确计算点的坐标,而是计算数据的特征空间中的内积。

这使其具有一个很有用的属性:更容易的计算高维空间中点的坐标。许多算法都可以表示称这样的内积形式,使用核技巧可以保证低维数据在高维空间中运用算法进行计算

30、什么是偏倚(bias)、方差(variable)均衡?

偏倚:指的是模型预测值与真实值的差异,是由使用的学习算法的某些错误或过于简单的假设造成的误差。它会导致模型欠拟合,很难有高的预测准确率。

方差:指的是不同训练数据训练的模型的预测值之间的差异,它是由于使用的算法模型过于复杂,导致对训练数据的变化十分敏感,这样会导致模型过拟合,使得模型带入了过多的噪音。

任何算法的学习误差都可以分解成偏倚、方差和噪音导致的固定误差。模型越复杂,会降低偏倚增加方差。为了降低整体的误差,我们需要对偏倚方差均衡,使得模型中不会由高偏倚或高方差。

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

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

相关文章

数据隐私与安全在大数据时代的挑战与应对

文章目录 数据隐私的挑战数据安全的挑战应对策略和方法1. 合规和监管2. 加密技术3. 匿名化和脱敏4. 安全意识培训5. 隐私保护技术 结论 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏&…

开源网安受邀参加软件供应链安全沙龙,推动企业提升安全治理能力

​8月23日下午,合肥软件行业软件供应链安全沙龙在中安创谷科技园举办。此次沙龙由合肥软件产业公共服务中心联合中安创谷科技园公司共同主办,开源网安软件供应链安全专家王晓龙、尹杰受邀参会并带来软件供应链安全方面的精彩内容分享,共同探讨…

certbot-https证书自动续期

certbot是一个免费的开源项目是EFF的一部分,自动化的工具,用于帮助管理和续期SSL/TLS证书。它可以安装、配置和自动续期证书。 1、安装 snapd 将 EPEL 存储库添加到您的 CentOS 安装中。输入y回车继续安装 sudo yum install snapd; sudo systemctl en…

【算法】倍增-ST表

一.倍增 倍增是一种常用的算法技巧,通常用于优化时间复杂度。它的核心思想是将原问题分解成若干个规模较小的子问题,通过对子问题的求解来得到原问题的解。具体来说,倍增算法通常采用二分思想,将问题规模不断缩小,直到…

springcloud3 GateWay章节-Nacos+gateway(跨域,filter过滤等5

一 常用工具类 1.1 结构 1.2 跨域 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config new CorsConfiguration();config.addAllowedMethod("*");config.addAllowedOrigin("*");config.addAllowe…

【C++】—— c++11新的类功能

目录 (一)默认成员函数 1、 移动构造函数 2、代码辅助理解 3、移动赋值运算符重载 (二)default关键字 (三)delete关键字 (四)委托构造函数 1、优势 2、缺点 总结 &#x…

Shell脚本小试牛刀

都搞忘记了.....记录......... #!/bin/bash - # # # # FILE: countloop.sh # USAGE: ./countloop.sh # DESCRIPTION: # OPTIONS: ------- # REQUIREMENTS: --------- # # BUGS: ------ # …

02.sqlite3学习——嵌入式数据库的基本要求和SQLite3的安装

目录 嵌入式数据库的基本要求和SQLite3的安装 嵌入式数据库的基本要求 常见嵌入式数据库 sqlite3简介 SQLite3编程接口模型 ubuntu 22.04下的SQLite安装 嵌入式数据库的基本要求和SQLite3的安装 嵌入式数据库的基本要求 常见嵌入式数据库 sqlite3简介 SQLite3编程接口模…

Spark整合hive的时候出错

Spark整合hive的时候 连接Hdfs不从我hive所在的机器上找,而是去连接我的集群里的另外两台机器 但是我的集群没有开 所以下面就一直在retry 猜测: 出现这个错误的原因可能与core-site.xml和hdfs-site.xml有关,因为这里面配置了集群的nameno…

es的索引管理

概念 (1)集群(Cluster): ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为集群。 &…

4.8 SYN什么时候被丢弃

TCP四次挥手过程中主动断开连接方有一个TIME_WAIT状态,这个状态会持续2MSL之后才会转变为CLOSED状态。一般一个MSL是30秒,所以以一共一般是60秒。这60秒内客户端会一直占用着端口。如果发起断开端的TIME-WAIT状态过多,占满了端口资源&#xf…

如何制作内部Wiki网站?

Wiki(维基)是一种协作工作的平台,也就是开源的编辑系统。我们可以使用维基建立一个帮助系统,知识库系统。在我国的公众wiki中,最出名的莫过于百度百科全书;本文将讨论的是企业的内部wiki。 企业维基&#…

探秘Linux系统性能监控神器!Linux和Python技术持续学习者必看!

引言 作为Linux运维工程师,我们经常需要对服务器的性能进行监控和调优。而Python作为一门强大的脚本语言,可以帮助我们轻松实现各种系统性能监控任务。本文将介绍几个实用的Python库和工具,帮助我们监控Linux系统的CPU、内存、磁盘和网络等性…

11.Oracle中rollup函数详解

【基本介绍】 【格式】:group by rollup(字段1,字段2,字段3,...,字段n) 【说明】:rollup主要用于分组汇总,如果rollup中有n个字段,则会分别按【字段1】、【字段1,字段2】,【字段1,字段2,字段3】,...&#…

Linux线程篇(中)

有了之前对线程的初步了解我们学习了什么是线程,线程的原理及其控制。这篇文章将继续讲解关于线程的内容以及重要的知识点。 线程的优缺点: 线程的缺点 在这里我们来谈一谈线程健壮性: 首先我们先思考一个问题,如果一个线程出现…

先进API生产力工具eqable HTTP,一站式开发调试工具推荐

简介 Reqable是什么? Regable Fiddler/Charles Postman Reqable是HTTP一站式开发调试国产化解决方案,拥有更便捷的体验,更先进的协议,更高效的性能和更精致的界面。 Reqable是一款跨平台的专业HTTP开发和调试工具,在全平台支持…

JVM调优与参数设置

JVM调优 1、开始 JVM调优不是常规手段,性能问题一般第一选择是优化程序,最后的选择才是进行JVM调优。 JVM的自动内存管理本来就是为了将开发人员从内存管理的泥潭里拉出来。即使不得不进行JVM调优,也绝对不能拍脑门就去调整参数&#xff…

2023年高教社杯 国赛数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

Python 数据分析——matplotlib 快速绘图

matplotlib采用面向对象的技术来实现,因此组成图表的各个元素都是对象,在编写较大的应用程序时通过面向对象的方式使用matplotlib将更加有效。但是使用这种面向对象的调用接口进行绘图比较烦琐,因此matplotlib还提供了快速绘图的pyplot模块。…