目录
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均值是通过循环更新类中心的初始估计值来实现的。优势是实现起来很简单,是并行化的。主要缺陷是,类的数目需要提前确定。
主要分三步:
- 随机选取k个聚类质心点(cluster centroids)
- 对于每一个样例i,计算其应该属于的类
- 对于每一个类j,重新计算该类的质心
层次聚类
层次聚类(或者叫做凝聚聚类)是另一个简单但是强大的聚类算法。其思想是基于成对距离建立一棵相似度树。该算法首先分组成为两个最近的对象(基于特征向量之间的距离),并且在一棵有着两个对象作为孩子的树中创建一个平均结点。然后在余下的结点中找到一个最近的pair,并且也包含任何平均节点,等等。在每一个结点,两个孩子之间的距离也会被存储。簇然后可以通过遍历这棵树并在距离比某个阈值小以至于决定聚类的大小的结点处停止来被提取出来。
层次聚类有几个优势。比如,树结构可以被用来可视化关系,并且显示簇是如何关联起来的。一个好的特征向量将得到树中好的分离。另一个优势是树可以在不同的簇阈值中被重用,而不需要重新计算树。缺点是需要选择一个阈值如果实际的簇需要的话。
谱聚类
对于n个元素的相似度矩阵(或者叫affinity matrix, 有时也叫距离矩阵)是一个有着成对相似度分数的n*n矩阵。谱聚类的这个名称是从相似度矩阵构造的矩阵的谱的使用得来。这个矩阵的特征向量被用来降维,然后再聚类。
谱聚类方法的其中一个优势是唯一的输入就是这个矩阵,并且可以被你可以想到的任何相似度度量构造出来。像K均值和层次聚类这样的方法计算特征向量的平均值,这个限制了特征(或者是描述符)对向量(为了能够计算平均值)。有了谱方法,不再需要任何类型的特征向量,只有“距离”或者“相似度”。
Mean Shift 聚类算法
- 在未被标记的数据点中随机选择一个点作为中心center;
- 找出离center距离在bandwidth之内的所有点,记做集合M,认为这些点属于簇c。同时,把这些求内点属于这个类的概率加1,这个参数将用于最后步骤的分类
- 以center为中心点,计算从center开始到集合M中每个元素的向量,将这些向量相加,得到向量shift。
- center = center+shift。即center沿着shift的方向移动,移动距离是||shift||。
- 重复步骤2、3、4,直到shift的大小很小(就是迭代到收敛),记住此时的center。注意,这个迭代过程中遇到的点都应该归类到簇c。
- 如果收敛时当前簇c的center与其它已经存在的簇c2中心的距离小于阈值,那么把c2和c合并。否则,把c作为新的聚类,增加1类。
- 重复1、2、3、4、5直到所有的点都被标记访问。
- 分类:根据每个类,对每个点的访问频率,取访问频率最大的那个类,作为当前点集的所属类。
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中都有哪些优化方法?
- GradientDescentOptimizer
- AdagradOptimizer
- Optimizer
- 优化最小代价函数
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)均衡?
偏倚:指的是模型预测值与真实值的差异,是由使用的学习算法的某些错误或过于简单的假设造成的误差。它会导致模型欠拟合,很难有高的预测准确率。
方差:指的是不同训练数据训练的模型的预测值之间的差异,它是由于使用的算法模型过于复杂,导致对训练数据的变化十分敏感,这样会导致模型过拟合,使得模型带入了过多的噪音。
任何算法的学习误差都可以分解成偏倚、方差和噪音导致的固定误差。模型越复杂,会降低偏倚增加方差。为了降低整体的误差,我们需要对偏倚方差均衡,使得模型中不会由高偏倚或高方差。