程序员

注册

 

发新话题 回复该主题

机器学习深度学习面试知识点汇总 [复制链接]

1#

导读

本文总结了一些秋招面试中会遇到的问题和一些重要的知识点,适合面试前突击和巩固基础知识。

前言

最近这段时间正临秋招,这篇文章是老潘在那会找工作过程中整理的一些重要知识点,内容比较杂碎,部分采集于网络,简单整理下发出来,适合面试前突击,当然也适合巩固基础知识。有时间一定要需要看的书籍:

程序员的数学系列,适合重温知识,回顾一些基础的线性代数、概率论。深度学习花书,总结类书,有基础知识的讲解,比较全面。统计学习方法,总结类书,篇幅不长,都是核心。PatternRecognitionandMachineLearning,条理清晰,用贝叶斯的方式来讲解机器学习。机器学习西瓜书,适合当教材,内容较广但是不深。常见的常识题L1正则可以使少数权值较大,多数权值为0,得到稀疏的权值;L2正则会使权值都趋近于0但非零,得到平滑的权值;在AdaBoost算法中,被错分的样本的权重更新比例的公式相同;Boosting和Bagging都是组合多个分类器投票的方法,但Boosting是根据单个分类器的正确率决定其权重,Bagging是可简单地设置所有分类器权重相同;EM算法不能保证找到全局最优值;SVR中核函数宽度小欠拟合,宽度大容易过拟合PCA和LDA都是经典的降维算法。PCA是无监督的,也就是训练样本不需要标签;LDA是有监督的,也就是训练样本需要标签。PCA是去除掉原始数据中冗余的维度,而LDA是寻找一个维度,使得原始数据在该维度上投影后不同类别的数据尽可能分离开来。

PCA是一种正交投影,它的思想是使得原始数据在投影子空间的各个维度的方差最大。假设我们要将N维的数据投影到M维的空间上(MN),根据PCA,我们首先求出这N维数据的协方差矩阵,然后求出其前M个最大的特征值所对应的特征向量,那么这M个特征向量即为所求的投影空间的基。LDA投影后类内方差最小,类间方差最大。如下图所示有两种投影方式,左边的投影后红色数据和蓝色数据还有重叠部分,右边的投影后红色数据和蓝色数据则刚好被分开。LDA的投影即类似右边的投影方式,投影后使得不同类别的数据尽可能分开,而相同类别的数据则尽可能紧凑地分布。

PCA和LDA参考链接:PCA和LDA的对比KNNK近邻

关于K近邻算法的知识有很多,比如算法执行的步骤、应用领域以及注意事项,不过相信很多人对K近邻算法的使用注意事项不是很清楚。在这篇文章中我们针对这个问题进行解答,带大家来好好了解一下k近邻算法的注意事项以及K近邻算法的优点与缺点。

K近邻算法的注意事项

K近邻算法的使用注意事项具体就是使用距离作为度量时,要保证所有特征在数值上是一个数量级上,以免距离的计算被数量级大的特征所主导。在数据标准化这件事上,还要注意一点,训练数据集和测试数据集一定要使用同一标准的标准化。其中的原因总的来说就有两点内容,第一就是标准化其实可以视为算法的一部分,既然数据集都减去了一个数,然后除以一个数,这两个数对于所有的数据来说,就要一视同仁。第二就是训练数据集其实很少,在预测新样本的时候,新样本就更少得可怜,如果新样本就一个数据,它的均值就是它自己,标准差是0,这根本就不合理。

K近邻算法的优点是什么呢?

K近邻算法的优点具体体现在四方面。第一就就是k近邻算法是一种在线技术,新数据可以直接加入数据集而不必进行重新训练,第二就是k近邻算法理论简单,容易实现。第三就是准确性高,对异常值和噪声有较高的容忍度。第四就是k近邻算法天生就支持多分类,区别与感知机、逻辑回归、SVM。

K近邻算法的缺点是什么呢?

K近邻算法的缺点,基本的k近邻算法每预测一个“点”的分类都会重新进行一次全局运算,对于样本容量大的数据集计算量比较大。而且K近邻算法容易导致维度灾难,在高维空间中计算距离的时候,就会变得非常远;样本不平衡时,预测偏差比较大,k值大小的选择得依靠经验或者交叉验证得到。k的选择可以使用交叉验证,也可以使用网格搜索。k的值越大,模型的偏差越大,对噪声数据越不敏感,当k的值很大的时候,可能造成模型欠拟合。k的值越小,模型的方差就会越大,当k的值很小的时候,就会造成模型的过拟合。

二维高斯核函数

如果让你写一个高斯模糊的函数,你该怎么写呢?

`defgaussian_2d_kernel(kernel_size=3,sigma=0):kernel=np.zeros([kernel_size,kernel_size])center=kernel_size//2ifsigma==0:sigma=((kernel_size-1)*0.5-1)*0.3+0.8s=2*(sigma**2)sum_val=0foriinrange(0,kernel_size)orjinrange(0,kernel_size)=i-centery=j-centerkernel[i,j]=np.exp(-(x**2+y**2)/s)sum_val+=kernel[i,j]#/(np.pi*s)sum_val=1/sum_valreturnkernel*sum_val`训练采样方法交叉验证留一法自助法(bootstrap):有放回的抽样方法,可能会抽到重复的样本Kmean和GMM原理、区别、应用场景

kmeans的收敛性?

可以看这里
分享 转发
TOP
发新话题 回复该主题