精华内容
下载资源
问答
  • 牛客网算法面试
  • 牛客机器学习算法工程师面试题库.pdf
  • ​ 注:机器学习注重原理理解、算法对比及场景使用,应加强算法公式推导及多场景实战。以下试题为作者日常整理的通用高频面经,包含题目,答案与参考文章,欢迎纠正与补充。 更多内容尽在公众号: 目录 1....

    ​    注:机器学习注重原理理解、算法对比及场景使用,应加强算法公式推导及多场景实战。以下试题为作者日常整理的通用高频面经,包含题目,答案与参考文章,欢迎纠正与补充。

    其他相应高频面试题可参考如下内容:

    2020 BAT大厂数据分析面试经验:“高频面经”之数据分析篇

    2020 BAT大厂数据挖掘面试经验:“高频面经”之数据结构与算法篇

    2020 BAT大厂数据开发面试经验:“高频面经”之大数据研发篇

    2020 BAT大厂深度学习算法面试经验:“高频面经”之深度学习篇

     

    目录

    1.常见分类算法及应用场景

    2.逻辑回归推导

    3.SVM相关问题

    4.核函数使用

    5.生成模型和判别模型基本形式

    6.ID3,C4.5和CART区别

    7.交叉熵公式原理

    8.L1和L2正则化的区别

    9.传统机器学习模型有哪些

    10.K-means算法流程

    11.DBSCAN和K-means对比

    12.LDA原理

    13.PCA与SVD的关系

    14.推荐系统常用模型

    15.协调过滤使用场景及冷启动方案

    16.Bagging和Boosting区别

    17.XGBoost和GBDT区别

    18.SGD,Momentum,Adagard,Adam原理

    19.过拟合原因及解决办法

    20.LightGBM优势


     

    1.常见分类算法及应用场景

        单一分类算法:逻辑回归(LR),支持向量机(SVM),决策树(DT)、朴素贝叶斯(NB)、人工神经网络(NN)、K-近邻(KNN)

        集成学习算法:随机森林(RF),GBDT,Adaboost,XGboost。

        应用场景:生物种类判别、图片分类、广告点击行为预测、垃圾短信识别、经营风险量化分析、异常行为分析、用户画像挖掘、领域情感分析、用户评分及征信评估预测、验证码识别、客户流失率预测等

        参考链接:

        https://blog.csdn.net/liulingyuan6/article/details/53637129/

     

    2.逻辑回归推导

        逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层逻辑函数g(z),即先把特征线性求和,然后使用函数g(z)作为假设函数来预测。g(z)可以将连续值映射到0 和1。g(z)为sigmoid函数.

        则

        sigmoid function 的导数如下:

        逻辑回归用来分类0/1 问题,也就是预测结果属于0 或者1 的二值分类问题。这里假设了二值满足伯努利分布,也就是

     

        其也可以写成如下的形式:

        对于训练数据集,特征数据x={x1, x2, … , xm}和对应的分类标签y={y1, y2, … , ym},假设m个样本是相互独立的,那么,极大似然函数为:

        log似然为:

        如何使其最大呢?与线性回归类似,我们使用梯度上升的方法(求最小使用梯度下降),那么

        如果只用一个训练样例(x,y),采用随机梯度上升规则,那么随机梯度上升更新规则为:

        损失函数:

        多分类问题:

        方式一:修改逻辑回归的损失函数,使用softmax函数构造模型解决多分类问题,softmax分类模型会有相同于类别数的输出,输出的值为对于样本属于各个类别的概率,最后对于样本进行预测的类型为概率值最高的那个类别。

        方式二:根据每个类别都建立一个二分类器,本类别的样本标签定义为0,其它分类样本标签定义为1,则有多少个类别就构造多少个逻辑回归分类器

    若所有类别之间有明显的互斥则使用softmax分类器,若所有类别不互斥有交叉的情况则构造相应类别个数的逻辑回归分类器。

     

    3.SVM相关问题

        (1)SVM和LR区别

        支持向量机为一个二分类模型,它的基本模型定义为特征空间上的间隔最大的线性分类器。而它的学习策略为最大化分类间隔,最终可转化为凸二次规划问题求解。

        LR是参数模型,SVM为非参数模型。LR采用的损失函数为logisticalloss,而SVM采用的是hingeloss。在学习分类器的时候,SVM只考虑与分类最相关的少数支持向量点。LR的模型相对简单,在进行大规模线性分类时比较方便。

        (2)SVM硬间隔 软间隔

        硬间隔:完全分类准确,其损失函数不存在;其损失值为0;只要找出两个异类正中间的那个平面;

        软间隔:允许一定量的样本分类错误;优化函数包括两个部分,一部分是点到平面的间隔距离,一部分是误分类的损失个数;C是惩罚系数,误分类个数在优化函数中的权重值;权重值越大,误分类的损失惩罚的越厉害。误分类的损失函数可分为hinge损失,指数损失,对率损失。而经常使用的或者说默认的是使用了损失函数为hinge损失的软间隔函数。

     

        (3)SVM对偶计算目的

        目的有两个:一是方便核函数的引入;二是原问题的求解复杂度与特征的维数相关,而转成对偶问题后只与问题的变量个数有关。由于SVM的变量个数为支持向量的个数,相较于特征位数较少,因此转对偶问题。通过拉格朗日算子发使带约束的优化目标转为不带约束的优化函数,使得W和b的偏导数等于零,带入原来的式子,再通过转成对偶问题。

        参考链接:

        https://blog.csdn.net/ningyanggege/article/details/81015309

     

    4.核函数使用

        常用的核函数包括如下几个:线性核函数,多项式核函数,RBF核函数(高斯核),Sigmoid核函数

        线性核:SVM肯定是可以处理线性问题的,这个就是斯坦福课程里讲SVM时候,最开始讲解的部分,以线性问题入手进行讲解。线性核SVM和逻辑回归本质上没有区别。

        RBF核通常是首选,实践中往往能表现出良好的性能。计算方法如下:

        其中,如果σ选得很大的话,高次特征上的权重实际上衰减得非常快,所以实际上(数值上近似一下)相当于一个低维的子空间;反过来,如果σ选得很小,则可以将任意的数据映射为线性可分——当然,这并不一定是好事,因为随之而来的可能是非常严重的过拟合问题。不过,总的来说,通过调控参数,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。

        多项式核计算方法如下:

        sigmoid核函数计算方法如下:

    采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络,应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。而且支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。

        如何选择:可以利用专家先验知识余弦选定核函数,例如已经知道问题是线性可分的,就可以使用线性核,不必选用非线性核;利用交叉验证,试用不同的核函数,误差最小的即为效果最好的核函数;混合核函数方法,将不同的核函数结合起来;在选择核函数的时候,如果不清楚问题属于哪一类,就两类核都尝试一下,所以可以主要尝试线性核以及RBF核。

        Linear核:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了。

        RBF核:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。

        简要概况:当数据的特征提取的较好,所包含的信息量足够大,很多问题是线性可分的那么可以采用线性核。若特征数较少,样本数适中,对于时间不敏感,遇到的问题是线性不可分的时候可以使用高斯核来达到更好的效果。

     

    5.生成模型和判别模型基本形式

        生成模型:学习得到联合概率分布P(x,y),即特征x和标记y共同出现的概率,然后求条件概率分布。能够学习到数据生成的机制。基本形式:朴素贝叶斯、混合高斯模型、隐马尔可夫模型 (HMM)

        判别模型:学习得到条件概率分布P(y|x),即在特征x出现的情况下标记y出现的概率。基本形式:感知机 (线性分类模型)、k近邻法、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机 (SVM)、boosting方法 (AdaBoost等)、条件随机场 、CNN

        参考链接:

        https://www.cnblogs.com/Harriett-Lin/p/9621107.html

     

    6.ID3,C4.5和CART区别

        ID3决策树:信息熵是度量样本集合纯度最常用的一种指标。假设样本集合D中第k类样本所占的比重为pk,那么信息熵的计算则为下面的计算方式

        当这个Ent(D)的值越小,说明样本集合D的纯度就越高

        有了信息熵,当我选择用样本的某一个属性a来划分样本集合D时,就可以得出用属性a对样本D进行划分所带来的“信息增益”

        一般来讲,信息增益越大,说明如果用属性a来划分样本集合D,那么纯度会提升,因为我们分别对样本的所有属性计算增益情况,选择最大的来作为决策树的一个结点,或者可以说那些信息增益大的属性往往离根结点越近,因为我们会优先用能区分度大的也就是信息增益大的属性来进行划分。当一个属性已经作为划分的依据,在下面就不在参与竞选了,我们刚才说过根结点代表全部样本,而经过根结点下面属性各个取值后样本又可以按照相应属性值进行划分,并且在当前的样本下利用剩下的属性再次计算信息增益来进一步选择划分的结点,ID3决策树就是这样建立起来的。

        C4.5决策树:C4.5决策树的提出完全是为了解决ID3决策树的一个缺点,当一个属性的可取值数目较多时,那么可能在这个属性对应的可取值下的样本只有一个或者是很少个,那么这个时候它的信息增益是非常高的,这个时候纯度很高,ID3决策树会认为这个属性很适合划分,但是较多取值的属性来进行划分带来的问题是它的泛化能力比较弱,不能够对新样本进行有效的预测。

    而C4.5决策树则不直接使用信息增益来作为划分样本的主要依据,而提出了另外一个概念,增益率

    但是同样的这个增益率对可取值数目较少的属性有所偏好,因此C4.5决策树先从候选划分属性中找出信息增益高于平均水平的属性,在从中选择增益率最高的。

        CART决策树:CART决策树的全称为Classification and Regression Tree,可以应用于分类和回归。采用基尼系数来划分属性

        基尼值:

        基尼系数:

        因此在候选属性中选择基尼系数最小的属性作为最优划分属性。

        参考链接:

        https://blog.csdn.net/qq_27717921/article/details/74784400

     

    7.交叉熵公式原理

        设p(x)、q(x)是X中取值的两个概率分布,则p对q的相对熵是:

        在一定程度上,相对熵可以度量两个随机变量的“距离”,且有D(p||q)

    ≠D(q||p)。另外,值得一提的是,D(p||q)是必然大于等于0的。

        互信息:两个随机变量X,Y的互信息定义为X,Y的联合分布和各自独立分布乘积的相对熵,用I(X,Y)表示:

        且有I(X,Y)=D(P(X,Y)||P(X)P(Y))。下面,咱们来计算下H(Y)-I(X,Y)的结果,如下:

     

    8.L1和L2正则化的区别

        正则化的主要作用是防止过拟合,对模型添加正则化项可以限制模型的复杂度,使得模型在复杂度和性能达到平衡。

        常用的正则化方法有L1正则化和L2正则化。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归。

        L1正则化的表达如下,其中 为L1正则化项,L1正则化是指权值向量w 中各个元素的绝对值之和。L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择,一定程度上,L1也可以防止过拟合

        L2正则化项表达式如下,其中 为L2正则化项,L2正则化是指权值向量w 中各个元素的平方和然后再求平方根。L2正则化可以防止模型过拟合(overfitting)

        L1正则化的形式是添加参数的绝对值之和作为结构风险项,L2正则化的形式添加参数的平方和作为结构风险项

        L1正则化鼓励产生稀疏的权重,即使得一部分权重为0,用于特征选择;L2鼓励产生小而分散的权重,鼓励让模型做决策的时候考虑更多的特征,而不是仅仅依赖强依赖某几个特征,可以增强模型的泛化能力,防止过拟合。

        正则化参数 λ越大,约束越严格,太大容易产生欠拟合。正则化参数 λ越小,约束宽松,太小起不到约束作用,容易产生过拟合。

        如果不是为了进行特征选择,一般使用L2正则化模型效果更好。

        参考链接:

        https://blog.csdn.net/liuweiyuxiang/article/details/99984288

     

    9.传统机器学习模型有哪些

    • 回归算法:回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。常见的回归算法包括:最小二乘法(Ordinary Least Square),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)。

    • 基于实例的算法:基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map,SOM)。深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。

    • 决策树学习:决策树算法根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree,CART),ID3 (Iterative Dichotomiser 3),C4.5,Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机森林(Random Forest),多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine,GBM)。

    • 贝叶斯方法:贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators,AODE),以及Bayesian Belief Network(BBN)。

    • 基于核的算法:基于核的算法中最著名的莫过于支持向量机(SVM)了。基于核的算法把输入数据映射到一个高阶的向量空间,在这些高阶向量空间里,有些分类或者回归问题能够更容易的解决。常见的基于核的算法包括:支持向量机(Support Vector Machine,SVM), 径向基函数(Radial Basis Function,RBF),以及线性判别分析(Linear Discriminate Analysis,LDA)等。

    • 聚类算法:聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization,EM)。

    • 降低维度算法:像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis,PCA),偏最小二乘回归(Partial Least Square Regression,PLS),Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(Projection Pursuit)等。

    • 关联规则学习:关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori算法和Eclat算法等。

    • 集成算法:集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting,Bootstrapped Aggregation(Bagging),AdaBoost,堆叠泛化(Stacked Generalization,Blending),梯度推进机(Gradient Boosting Machine, GBM),随机森林(Random Forest)。

    • 人工神经网络:人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation),Hopfield网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ)。

        参考链接:

        https://www.nowcoder.com/tutorial/95/17d29b1ea4bc438f8d61e90db54e6cc0

     

    10.K-means算法流程

        K-Means算法思想:对给定的样本集,事先确定聚类簇数K,让簇内的样本尽可能紧密分布在一起,使簇间的距离尽可能大。该算法试图使集群数据分为n组独立数据样本,使n组集群间的方差相等,数学描述为最小化惯性或集群内的平方和。K-Means作为无监督的聚类算法,实现较简单,聚类效果好,因此被广泛使用。

        算法步骤:

        输入:样本集D,簇的数目k,最大迭代次数N;

        输出:簇划分(k个簇,使平方误差最小);

    (1)为每个聚类选择一个初始聚类中心

    (2)将样本集按照最小距离原则分配到最邻近聚类;

    (3)使用每个聚类的样本均值更新聚类中心;

    (4)重复步骤(2)、(3),直到聚类中心不再发生变化;

    (5)输出最终的聚类中心和k个簇划分;

        流程框图:

        参考链接:

        https://blog.csdn.net/lyq_12/article/details/81043690

     

    11.DBSCAN和K-means对比

    • K-means和DBSCAN都是将每个对象指派到单个簇的划分聚类算法,但是K-means一般聚类所有对象,而DBSCAN丢弃被它识别为噪声的对象。

    • K-means使用簇的基于原型的概念,而DBSCAN使用基于密度的概念。

    • K-means很难处理非球形的簇和不同大小的簇。DBSCAN可以处理不同大小或形状的簇,并且不太受噪声和离群点的影响。当簇具有很不相同的密度时,两种算法的性能都很差。

    • K-means只能用于具有明确定义的质心(比如均值或中位数)的数据。DBSCAN要求密度定义(基于传统的欧几里得密度概念)对于数据是有意义的。

    • K-means可以用于稀疏的高维数据,如文档数据。DBSCAN通常在这类数据上的性能很差,因为对于高维数据,传统的欧几里得密度定义不能很好处理它们。

    • K-means和DBSCAN的最初版本都是针对欧几里得数据设计的,但是它们都被扩展,以便处理其他类型的数据。

    • 基本K-means算法等价于一种统计聚类方法(混合模型),假定所有的簇都来自球形高斯分布,具有不同的均值,但具有相同的协方差矩阵。DBSCAN不对数据的分布做任何假定。

    • K-meansDBSCAN和都寻找使用所有属性的簇,即它们都不寻找可能只涉及某个属性子集的簇。

    • K-means可以发现不是明显分离的簇,即便簇有重叠也可以发现,但是DBSCAN会合并有重叠的簇。

    • K-means算法的时间复杂度是O(m),而DBSCAN的时间复杂度是O(m^2),除非用于诸如低维欧几里得数据这样的特殊情况。

    • DBSCAN多次运行产生相同的结果,而K-means通常使用随机初始化质心,不会产生相同的结果。

    • DBSCAN自动地确定簇个数,对于K-means,簇个数需要作为参数指定。然而,DBSCAN必须指定另外两个参数:Eps(邻域半径)和MinPts(最少点数)。

    • K-means聚类可以看作优化问题,即最小化每个点到最近质心的误差平方和,并且可以看作一种统计聚类(混合模型)的特例。DBSCAN不基于任何形式化模型。

        参考链接:

        https://zhuanlan.zhihu.com/p/94022640

     

    12.LDA原理

        LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。    LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,如下图所示。 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。

        参考链接:

        https://blog.csdn.net/ruthywei/article/details/83045288

     

    13.PCA与SVD的关系

    • PCA求解关键在于求解协方差矩阵的特征值分解

    • SVD关键在于  的特征值分解。

        很明显二者所解决的问题非常相似,都是对一个实对称矩阵进行特征值分解,如果取:

        则有:

        SVD与PCA等价,所以PCA问题可以转化为SVD问题求解,那转化为SVD问题有三点好处:

        一般  的维度很高, 的计算量很大

        方阵的特征值分解计算效率不高

        SVD除了特征值分解这种求解方式外,还有更高效且更准确的迭代求解法,避免了 的计算

        其实,PCA只与SVD的右奇异向量的压缩效果相同。如果取 的前  行作为变换矩阵  ,则  ,起到压缩行即降维的效果;如果取 的前  行作为变换矩阵  ,则  ,起到压缩列即去除冗余样本的效果。

        参考链接:

        https://zhuanlan.zhihu.com/p/58064462

     

     

    14.推荐系统常用模型

        在推荐系统和计算广告业务中,点击率CTR(click-through rate)和转化率CVR(conversion rate)是衡量流量转化的两个关键指标。准确的估计CTR、CVR对于提高流量的价值,增加广告及电商收入有重要的指导作用。业界常用的方法有人工特征工程 + LR(Logistic Regression)GBDT(Gradient Boosting Decision Tree) + LRFM模型。在这些模型中,FM近年来表现突出,分别在由Criteo和Avazu举办的CTR预测竞赛中夺得冠军。

        因子分解机(Factorization Machine, FM)是由Steffen Rendle提出的一种基于矩阵分解的机器学习算法,其主要用于解决数据稀疏的业务场景(如推荐业务),特征怎样组合的问题。

        FM可以实现非常稀疏数据参数估计,而SVM会效果很差,因为训出的SVM模型会面临较高的bias;FMs拥有线性的复杂度, 可以通过 primal 来优化而不依赖于像SVM的支持向量机.

        参考链接:

        https://blog.csdn.net/baymax_007/article/details/83931698

     

    15.协调过滤使用场景及冷启动方案

        Item CF 和 User CF两个方法都能很好的给出推荐,并可以达到不错的效果。但是他们之间还是有不同之处的,而且适用性也有区别。下面进行一下对比

        计算复杂度:

        Item CF 和 User CF 是基于协同过滤推荐的两个最基本的算法,User CF 是很早以前就提出来了,Item CF 是从 Amazon 的论文和专利发表之后(2001 年左右)开始流行,大家都觉得 Item CF 从性能和复杂度上比 User CF 更优,其中的一个主要原因就是对于一个在线网站,用户的数量往往大大超过物品的数量,同时物品的数据相对稳定,因此计算物品的相似度不但计算量较小,同时也不必频繁更新。但我们往往忽略了这种情况只适应于提供商品的电子商务网站,对于新闻,博客或者微内容的推荐系统,情况往往是相反的,物品的数量是海量的,同时也是更新频繁的,所以单从复杂度的角度,这两个算法在不同的系统中各有优势,推荐引擎的设计者需要根据自己应用的特点选择更加合适的算法。

        适用场景:

        在非社交网络的网站中,内容内在的联系是很重要的推荐原则,它比基于相似用户的推荐原则更加有效。比如在购书网站上,当你看一本书的时候,推荐引擎会给你推荐相关的书籍,这个推荐的重要性远远超过了网站首页对该用户的综合推荐。可以看到,在这种情况下,Item CF 的推荐成为了引导用户浏览的重要手段。同时 Item CF 便于为推荐做出解释,在一个非社交网络的网站中,给某个用户推荐一本书,同时给出的解释是某某和你有相似兴趣的人也看了这本书,这很难让用户信服,因为用户可能根本不认识那个人;但如果解释说是因为这本书和你以前看的某本书相似,用户可能就觉得合理而采纳了此推荐。

        相反的,在现今很流行的社交网络站点中,User CF 是一个更不错的选择,User CF 加上社会网络信息,可以增加用户对推荐解释的信服程度。

        冷启动解决方案:

    • 提供非个性化的推荐

    • 利用用户注册信息

    • 选择合适的物品启动用户的兴趣

    • 利用物品的内容信息

    • 采用专家标注

    • 利用用户在其他地方已经沉淀的数据进行冷启动

    • 利用用户的手机等兴趣偏好进行冷启动

     

    16.Bagging和Boosting区别

        样本选择上:

    • Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

    • Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

        样例权重:

    • Bagging:使用均匀取样,每个样例的权重相等

    • Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

        预测函数:

    • Bagging:所有预测函数的权重相等。

    • Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

        并行计算:

    • Bagging:各个预测函数可以并行生成

    • Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

        参考链接:

        https://www.cnblogs.com/earendil/p/8872001.html

     

    17.XGBoost和GBDT区别

    • 传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。

    • 传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。顺便提一下,xgboost工具支持自定义代价函数,只要函数可一阶和二阶求导。

    • xgboost在代价函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、每个叶子节点上输出的score的L2模的平方和。从Bias-variance tradeoff角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合,这也是xgboost优于传统GBDT的一个特性。

    • Shrinkage(缩减),相当于学习速率(xgboost中的eta)。xgboost在进行完一次迭代后,会将叶子节点的权重乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。实际应用中,一般把eta设置得小一点,然后迭代次数设置得大一点。(补充:传统GBDT的实现也有学习速率)

    • 列抽样(column subsampling)。xgboost借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算,这也是xgboost异于传统gbdt的一个特性。

        参考链接:

        https://www.cnblogs.com/fujian-code/p/9018114.html

     

    18.SGD,Momentum,Adagard,Adam原理

    • SGD:随机梯度下降,每一次迭代计算数据集的mini-batch的梯度,然后对参数进行更新。

    • Momentum:参考了物理中动量的概念,前几次的梯度也会参与道当前的计算中,但是前几轮的梯度叠加在当前计算中会有一定的衰减。

    • Adagard:在训练过程中可以自动变更学习的速率,设置一个全局的学习率,而实际的学习率玉以往的参数模的和的开方成反比。

    • Adam:利用梯度的一阶矩估计和二阶矩估计,动态调整每个参数的学习率,在经过偏置的校正后,每一次迭代后的学习率都有个确定的范围,使得参数比较平稳。

        参考链接:

        https://blog.csdn.net/weixin_42338058/article/details/93792205

     

    19.过拟合原因及解决办法

        原因:特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。过度的拟合了训练数据,而没有考虑到泛化能力。因此需要减少特征维度,或者正则化降低参数值。

        方法:

    • 交叉验证:即重复使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集训练模型,用测试集来评估模型预测的好坏。

    • 正则化:(L1和L2)通过改动代价函数实现。

    • 数据增强:增加训练数据样本。

    • Dropout:通过改动神经网络本身来实现。例如,训练前,随机删除一部分隐层单元,保持输入输出层不变,依照BP算法更新上图神经网络中的权值。

    • early stopping:即提前终止。Early stopping是一种以迭代次数截断的方法来防止过拟合。

    • Bagging用不同的模型拟合不同部分的训练集;Boosting只使用简单的神经网络;

    • 数据清洗:将错误的label纠正或者删除错误的数据。

        参考链接:

        https://www.cnblogs.com/hugechuanqi/p/10515901.html

     

    20.LightGBM优势

    • 更快的训练速度和更高的效率:LightGBM使用基于直方图的算法。例如,它将连续的特征值分桶(buckets)装进离散的箱子(bins),这是的训练过程中变得更快。

    • 更低的内存占用:使用离散的箱子(bins)保存并替换连续值导致更少的内存占用。

    • 更高的准确率(相比于其他任何提升算法) :它通过leaf-wise分裂方法产生比level-wise分裂方法更复杂的树,这就是实现更高准确率的主要因素。然而,它有时候或导致过拟合,但是我们可以通过设置 **max-depth** 参数来防止过拟合的发生。

    • 大数据处理能力:相比于XGBoost,由于它在训练时间上的缩减,它同样能够具有处理大数据的能力。

    • 支持并行学习

        参考链接:

        https://www.aboutyun.com/thread-24339-1-1.html】

     

    其他相应高频面试题可参考如下内容:

    2020 BAT大厂数据分析面试经验:“高频面经”之数据分析篇

    2020 BAT大厂数据挖掘面试经验:“高频面经”之数据结构与算法篇

    2020 BAT大厂数据开发面试经验:“高频面经”之大数据研发篇

    2020 BAT大厂深度学习算法面试经验:“高频面经”之深度学习篇

     

     

    欢迎关注作者微信公众号:学习号,涉及数据分析与挖掘、数据结构与算法、大数据与机器学习等内容

    展开全文
  • 校招面试题库(附答案与解析) 机器学习篇。包含数学基础、机器学习、深度学习、算法、计算机基础等。校招面试题库(附答案与解析) 机器学习篇。包含数学基础、机器学习、深度学习、算法、计算机基础等。
  • 机器学习算法工程师面试考点汇总

    千次阅读 多人点赞 2019-07-01 08:44:45
    2019-06-29 10:41:12 ...本篇根据各个公司的机器学习相关岗位面试中问的问题进行总结,后面还会更新面试中考察所占比例。 知识点思维导图 数学基础: 1、微积分 1、SGD,Momentum,Adagard,Adam原...

    https://www.toutiao.com/a6707777153603207691/

     

    2019-06-29 10:41:12

    机器学习算法工程师面试考点汇总

     

    来源 | 牛客网
    编辑 | 小军
    

    前言

    本篇根据各个公司的机器学习相关岗位面试中问的问题进行总结,后面还会更新面试中考察所占比例。

    机器学习算法工程师面试考点汇总

    知识点思维导图

    数学基础:

    1、微积分

    1、SGD,Momentum,Adagard,Adam原理

    2、L1不可导的时候该怎么办

    3、sigmoid函数特性

    2、统计学,概率论

    1、a,b~U[0,1],互相独立,求Max(a,b)期望

    2、一个活动,n个女生手里拿着长短不一的玫瑰花,无序的排成一排,一个男生从头走到尾,试图拿更长的玫瑰花,一旦拿了一朵就不能再拿其他的,错过了就不能回头,问最好的策略?

    3、问题:某大公司有这么一个规定:只要有一个员工过生日,当天所有员工全部放假一天。但在其余时候,所有员工都没有假期,必须正常上班。这个公司需要雇用多少员工,才能让公司一年内所有员工的总工作时间期望值最大?

    4、切比雪夫不等式

    5、一根绳子,随机截成3段,可以组成一个三角形的概率有多大

    6、最大似然估计和最大后验概率的区别?

    7、什么是共轭先验分布

    8、概率和似然的区别

    9、频率学派和贝叶斯学派的区别

    10、0~1均匀分布的随机器如何变化成均值为0,方差为1的随机器

    11、Lasso的损失函数

    12、Sfit特征提取和匹配的具体步骤

    3、线性代数

    1、求mk矩阵A和nk矩阵的欧几里得距离?

    2、PCA中第一主成分是第一的原因?

    3、欧拉公式

    4、矩阵正定性的判断,Hessian矩阵正定性在梯度下降中的应用

    5、概率题:抽蓝球红球,蓝结束红放回继续,平均结束游戏抽取次数

    6、讲一下PCA

    7、拟牛顿法的原理

    8、编辑距离

    机器学习算法工程师面试考点汇总

     

    机器学习算法

    1、处理分类问题常用算法

    1、交叉熵公式

    2、LR公式

    3、LR的推导,损失函数

    4、逻辑回归怎么实现多分类

    5 、SVM中什么时候用线性核什么时候用高斯核?

    6、什么是支持向量机,SVM与LR的区别?

    7、监督学习和无监督学习的区别

    8、机器学习中的距离计算方法?

    9、朴素贝叶斯(naive Bayes)法的要求是?

    10、训练集中类别不均衡,哪个参数最不准确?

    11、你用的模型,最有挑战性的项目

    12、SVM的作用,基本实现原理;

    13、SVM的硬间隔,软间隔表达式;

    14、SVM使用对偶计算的目的是什么,如何推出来的,手写推导;

    15、SVM的物理意义是什么;

    16、如果给你一些数据集,你会如何分类(我是分情况答的,从数据的大小,特征,是否有缺失,分情况分别答的);

    17、如果数据有问题,怎么处理;

    18、分层抽样的适用范围

    19、LR的损失函数

    20、LR和线性回归的区别

    21、生成模型和判别模型基本形式,有哪些?

    22、核函数的种类和应用场景。

    23、分类算法列一下有多少种?应用场景。

    24、给你一个检测的项目,检测罐装的可口可乐,瓶装的可口可乐作为负样本,怎么弄?

    25、SVM核函数的选择

    26、SVM的损失函数

    27、核函数的作用

    28、SVM为什么使用对偶函数求解

    29、ID3,C4.5和CART三种决策树的区别

    30、SVM和全部数据有关还是和局部数据有关?

    31、为什么高斯核能够拟合无穷维度

    32、第二面完整推导了svm一遍,还有强化学习问的很多,dqn的各种trick了解多少,怎么实现知不知道。

    33、SVM所有核函数的了解应用,SVM的损失函数

    34、LR和SVM 区别

    35、朴素贝叶斯基本原理和预测过程

    36、LR推导

    37、交叉熵

    38、LR公式

    39、交叉熵公式

    2、处理回归问题常用算法

    1、L1和L2正则化的区别

    2、问题:Loss Function有哪些,怎么用?

    3、问题:线性回归的表达式,损失函数;

    4、线性回归的损失函数

    5、机器学习:知道哪些传统机器学习模型

    3、处理聚类问题常用算法

    1、什么是DBSCAN

    2、k-means算法流程

    3、LDA的原理

    4、介绍几种机器学习的算法,我就结合我的项目经理介绍了些RF, Kmeans等算法。

    5、KMeans讲讲,KMeans有什么缺点,K怎么确定

    6、Kmeans

    7、DBSCAN原理和算法伪代码,与kmeans,OPTICS区别

    4、推荐系统的常用算法

    1、 问推荐算法,fm,lr,embedding

    2、协同过滤的itemCF,userCF区别适用场景

    3、 推荐系统的大概步骤,解决冷启动。。。

    4、传统的机器学习算法了解吗

    5、用mapreduce实现10亿级以上数据的kmeans

    6、Kmeans

    7、A/B test如何进行流量分流

    8、协同过滤中的算法怎么细分

    9、FM公式

    10、FFM公式

    5、模型融合和提升的算法

    1、bagging和boosting的区别

    2、boosting和 bagging区别

    3、XGBOOST和GDBT的区别

    4、GDBT的原理,以及常用的调参参数

    6、AdaBoost和GBDT的区别,AdaBoost和GBDT的区别

    7、gbdt推导

    8、boosting和bagging在不同情况下的选用

    9、gbdt推导和适用场景

    10、说一下gbdt的全部算法过程

    11、rf和gbdt基分类器区别,里面的决策树分别长啥样,怎么剪枝

    12、随机森林和 GBDT 的区别

    13、xgboost的特征重要性计算

    14、xgboost的正则项表达式

    15、xgboost原理,怎么防过拟合

    16、xgboost,rf,lr优缺点场景。。。

    17、xgboost特征并行化怎么做的

    18、xgboost和lightgbm的区别和适用场景

    6、其他重要算法

    1、HMM隐马尔可夫模型的参数估计方法是?

    2、Bootstrap方法是什么?

    3、如何防止过拟合?

    4、EM算法推导,jensen不等式确定的下界

    机器学习算法工程师面试考点汇总

     

    机器学习

    1、Scikit-learn

    1、Focal Loss 介绍一下

    2、过拟合的解决方法

    3、方差偏差的分解公式

    4、问题:对应时间序列的数据集如何进行交叉验证?

    5、问题:正负样本不平衡的解决办法?评价指标的参考价值?

    6、迁移学习

    7、数据不平衡怎么办?

    8、AUC的理解

    9、AUC的计算公式

    10、生成模型和判别模型的区别

    11、过拟合的解决方法

    12、特征选择怎么做

    13、怎么防止过拟合

    14、L1和L2正则

    15、ID3树用什么指标选择特征

    16、特征工程的问题

    17、给了个链接线上写代码,要求写读文本、文本预处理、特征提取和建模的基本过程,不过写到特征就没写了

    18、softmax公式

    2、Libsvm

    1、 检测20类物体,多少张训练集,怎么训练

    2、 lightgbm优势

    3、Keras/tensorflow

    1、MXNet和Tensorflow的区别

    2、Tensorflow的工作原理

    3、Tensorflow中interactivesession和session的区别

    4、手写了tensorflow的图像分类代码,还有问之前线下笔试最后编程题的思路,算法复杂度,然后项目也问。

    机器学习算法工程师面试考点汇总

     

    深度学习

    1、BatchNormalization的作用

    2、梯度消失

    3、循环神经网络,为什么好?

    4、什么是GroupConvolution

    5、什么是RNN

    6、训练过程中,若一个模型不收敛,那么是否说明这个模型无效?导致模型不收敛的原因有哪些?

    7、图像处理中锐化和平滑的操作

    8、VGG使用3*3卷积核的优势是什么?

    9、Relu比Sigmoid的效果好在哪里?

    10、神经网络中权重共享的是?

    11、神经网络激活函数?

    12、在深度学习中,通常会finetuning已有的成熟模型,再基于新数据,修改最后几层神经网络权值,为什么?

    13、画GRU结构图

    14、Attention机制的作用

    15、Lstm和Gru的原理

    16、什么是dropout

    17、LSTM每个门的计算公式

    18、HOG算法原理

    19、DropConnect的原理

    20、深度学习了解多少,有看过底层代码吗?caffe,tf?

    21、除了GMM-HMM,你了解深度学习在语音识别中的应用吗?

    22、用过哪些移动端深度学习框架?

    23、Caffe:整体架构说一下,新加一个层需要哪些步骤,卷积是怎么实现的,多卡机制,数据并行还是模型并行?

    24、HOG算子是怎么求梯度的

    25、BN层的作用,为什么要在后面加伽马和贝塔,不加可以吗

    26、梯度消失,梯度爆炸的问题,

    27、Adam

    28、attention机制

    29、RNN梯度消失问题,为什么LSTM和GRU可以解决此问题

    30、GAN网络的思想

    31、1*1的卷积作用

    32、怎么提升网络的泛化能力

    33、什么是seq2seq model

    34、激活函数的作用

    35、为什么用relu就不用sigmoid了

    36、讲一下基于WFST的静态解码网络的语音识别流程?

    37、目标检测了解吗,Faster RCNN跟RCNN有什么区别

    38、SPP,YOLO了解吗?

    39、梯度消失梯度爆炸怎么解决

    40、RNN容易梯度消失,怎么解决?

    41、LSTM跟RNN有啥区别

    42、卷积层和池化层有什么区别

    43、 防止过拟合有哪些方法

    44、dropout咋回事讲讲

    45、relu

    46、神经网络为啥用交叉熵。

    47、注意力公式

    48、论文flow情况

    48、Flappy.Bird开发者,怎么利用DNQ方法强化学习你的游戏AI

    49、LeNet-5结构

    50、推导LSTM正向传播和单向传播过程

    51、LSTM原理,与GRU区别

    52、DNN的梯度更新方式

    53、 CNN为什么比DNN在图像识别上更好

    54、现场用collabedit写代码,一个怪异的归并算法。之前没遇到过,直接把归并写出来,但是说复杂度太高,优化了三遍还不行,最后说出用小顶堆解决了。

    55、LSTM和Naive RNN的区别

    56、神经网络为啥用交叉熵。

    57、注意力公式

    58、Inception Score 评价指标介绍

    59、使用的 CNN 模型权重之间有关联吗?

    60、CycleGAN 原理介绍一下

    61、训练 GAN 的时候有没有遇到什么问题

    62、CPM 模型压缩怎么做的?有压过 OpenPose 吗?

    63、用过哪些 Optimizer,效果如何?

    64、图像基础:传统图像处理方法知道哪些,图像对比度增强说一下

    65、介绍一下图像的高频、低频部分,知道哪些图像补全的方法

    66、百度实习:模型压缩的大方向。CPM 模型怎么压缩的,做了哪些工作?

    67、Depthwise 卷积实际速度与理论速度差距较大,解释原因。

    68、RetinaNet 的大致结构画一下

    69、RetinaNet为什么比SSD效果好

    机器学习算法工程师面试考点汇总

     

    数据结构与算法

    1、查找

    1、手写二分查找

    (1)算法题,单调函数求零点 (简单的二分法)

    2、特别大的数据量,实现查找,排序

    2、哈希

    1 Hash表处理冲突的方法

    2、一致性哈希

    3、Hash表处理冲突的方法

    4、apriori

    5、KM算法

    3、表达式、字符串

    1.中缀表达式转后缀表达式

    (1)算法题:翻转中间由各种符号隔开的字符串

    2、问题:A+B∗(C−D)/E的后缀表达式。

    4、栈与堆

    1.大顶堆怎么插入删除

    2、堆栈区别

    3、栈溢出有哪些情况

    5、树

    1、问题: 手撕代码,根据前序,中序创建二叉树。

    2、算法题:从右边看被遮挡的二叉树,求露出的node

    3、算法题,给前序和中序,求出二叉树

    4、算法题,trim二叉搜索树

    5、红黑树

    6、排序

    1、对一千万个整数排序,整数范围在[-1000,1000]间,用什么排序最快?

    2、堆排序的思想

    3、冒泡排序

    4、快速排序的最优情况

    5、抽了两道面试题目两道。8个球,1个比较重,天平,几步找到重的?

    (1)算法题: topK给出3种解法

    6、快排

    7、说一下小顶堆的调整过程

    8、算法题:2sum,3sum

    7、高级算法

    1、手撕代码:以概率p生成1、概率1-p生成0的rand函数,得到0-1等概率的rand函数,计算新的rand函数中:调用一次,while循环的期望次数

    2、Kruskal算法的基本过程

    3、BFS和DFS的实现思想

    4、关联规则具体有哪两种算法,它们之间的区别

    5、贪婪算法

    6、模拟退火,蚁群对比

    7、 算法题:名人问题,给出最优解法

    8、代码题:股票最大值。

    9、编辑距离

    8、链表

    1、如何判断单链表是否是循环链表

    (1)算法题,反转链表

    (2)算法题,单链表判断是否有环 (leetcode easy),以及判断环入口

    9、数组

    1、找出数组中只出现1次的数,其余数均出现2次,扩展,其余数出现2次以上

    10、动态规划

    1、最短描述数,10的最短描述数是3^2+1^2所以是2,求一个数的最短描述数

    2、跳台阶问题,每次只能跳1个台阶或者2个台阶,n个台阶共有多少种方式

    3、动态规划和带记忆递归的区别

    4、手撕代码:0-1矩阵的最大正方形

    11、遍历

    1、代码题:股票最大值。

    机器学习算法工程师面试考点汇总

     

    编程语言,工具和环境

    1、编程语言

    1、什么是python的生成器?

    2、Java抽象类和接口的区别?

    3、python中is和==的区别

    4、python方法解析顺序

    5、strcpy函数

    6、Ctrl+C程序挂掉还是抛出异常,如何判断两个dict是否一样,list头上删除元素,字符串拼接?

    7、6.pytorch中cuda()作用,两个Tensor,一个加了cuda(),一个没加,相加后很怎样?

    8、python中dict和list的区别,dict的内部实现

    9、C++的delete, delete[]的区别

    10、C++相关的问题虚函数

    12、如何写多线程的代码

    13、是否关注过caffe和pytorch是怎么写的吗?pytorch调用多GPU函数内核

    14、Java虚拟机内存的划分

    15、python dict按照value进行排序

    16、C++中static关键字的作用

    17、虚函数和纯虚函数的区别

    18、Python多进程

    19、深拷贝,浅拷贝,写一个出来(写了个自己认为对的版本)

    20、在程序里面智能指针的名字是啥?

    21、new,malloc区别

    22、纯虚函数怎么定义,写一个出来

    23、函数后面接const是什么意思?

    24、写一个函数指针

    25、抽象类和接口的区别,慢慢说

    26、有看过c++的一些库吗?

    27、c++你看的最久的一章是哪一章,c++primer最熟哪一章

    28、开发环境、语言的掌握

    29、Python 多进程

    30、Python 锁

    2、大数据相关

    1、Spark性能如何调优

    2、map reduce实现笛卡尔乘积

    3、 是否写过udf,问udaf,udtf区别和一些细节

    机器学习算法工程师面试考点汇总

     

    自然语言处理

    1、Word2vec

    1、Word2Vec中skip-gram是什么,Negative Sampling怎么做

    2、FastText和Glovec原理

    3、word2vec实施过程

    4、softmax的原理了解

    5、Wod2vec公式

    6、Wod2vec公式

    7、使用gensim的word similar方法预测句子

    机器学习算法工程师面试考点汇总

     

    计算机基础

    1、linux

    1、ELF的bss段

    2、计算机网络

    3、ip报文经过一个路由器改变哪些字段?

    2、TCP/IP算法,IP寻址

    3、操作系统

    1.如何将小端存储模式转为大端存储模式

    2、Python 锁

    4、数据库

    1 .count(*),count(1)和count(列名)的区别

    机器学习算法工程师面试考点汇总

     

    场景题

    1 .如何对10亿个词语进行排序,找出频率最高的100个

    (1)算法题,10亿个32位正整数,求不同值,只给1GB内存。

    2、AI能用在游戏的哪些方面。

    3、如果让我用AI技术怎么加入AI元素

    4、你觉得你的构想能实际实现吗?

    5、那这个技术加进去有什么实际上的意义?

    项目

    1、项目中涉及的算法有了解情况

    2、模型的搭建,后处理,数据中发现的特征,发现的亮点。

    3、数据量和涉及的算法,效果。

    4、你是怎么处理数据中经常存在的数据不平衡的问题。

    5、考察项目中的roi-pooling

    6、自我介绍

    7、项目介绍

    8、问了下项目怎么做的

    9、 问了一下项目和简历

    10、描述一个算法项目从kickoff-落地的全过程

    11、 扣项目,问简历,其中涉及的算法和上面差不多

    12、 对项目中一些技术选型产生质疑,并友好的一起讨论了这个问题

    13、扣简历的项目,扣的很细

    14、 扣简历

    15、扣简历,问得太细了,每个项目都要回答如果再做一次,有什么改进的地方,both算法上和模型选择上

    16、聊简历项目,对搜索推荐算法的了解

    17、简历上聚类项目用到的ISODATA算法比kmeans有哪些改进

    18、自我介绍,

    19、然后让我说一下自己最印象深刻的项目。问我项目的最终成果,分析失败的原因。

    20、主要是问项目,根据项目里问一些细的技术点,比如gan在实际实现中的loss是什么

    21、 第五轮面试:主要是问项目

    22、 第二轮技术面:两个面试官面我一个。

    23、看过的论文,讨论论文

    24、针对岗位需求和我简历里的内容进行提问

    25、 自我介绍

    26、项目经历介绍下

    27、项目中遇到的最大困难

    28、自我介绍

    29、针对简历里的第一个项目问的一些问题

    30、针对项目3,让解释下DOA估计

    33、你的C/C++怎么样?

    34、自我介绍?

    35、谈谈实习项目?

    36、项目难点?

    37、说一下你简历里的图像识别的项目

    38、来问我现在在做什么项目,然后我说OCR,然后介绍了一下

    39、自我介绍

    40、项目经历详细介绍:两种预测方式区别,pair的预测方式,整体项目有哪些可以提升的,遇到的困难之类的,整个项目用了哪些库?

    41、看过的论文,讨论论文

    42、论文flow情况

    43、自我介绍

    44、实习:项目介绍:台球识别和分类使用的方法,Hough 变换原理、后处理

    45、Kaggle 比赛:背景介绍,数据清洗、数据增强、类别平衡,最终成绩,与前几名差距在哪,有没有尝试集成的方法。

    46、GAN 小论文:做了什么,最终效果

    47、GAN 小论文,做了哪些工作,详细公式推一下,对 GAN 的具体应用有了解吗?

    48、简历上项目为何适用xgboost和lr,对比其他分类算法的场景优势。

    49、GAN小论文,你做了什么,有哪些改进,在哪些数据集上做过实验,分辨率是多少?

    50、实习:1)项目背景。台球检测和分类方法,球杆检测方法,球杆遮挡问题怎么处理,不用分类器,直接分割或计算图像差值会怎样?

    51、有什么问题想了解一下

    机器学习算法工程师面试考点汇总

     

    总结

    这几乎包括了机器学习面试中所有可能问到的问题,如果能比较好的掌握它们,拿一份机器学习算法工程师offer应该不难。

    展开全文
  • 机器学习算法工程师校招面试题库 涵盖数学基础、机器学习算法、深度学习、自然语言处理、计算机基础项目等。
  • 在本项目中,作者为大家准备了 ML 算法工程师面试指南,它提供了完整的面试知识点、编程题及题解、各科技公司的面试题锦等内容。...如下所示为整个项目的结构,其中从机器学习到数学主要提供的是笔记...

    在本项目中,作者为大家准备了 ML 算法工程师面试指南,它提供了完整的面试知识点、编程题及题解、各科技公司的面试题锦等内容。目前该 GitHub 项目已经有 2万+的收藏量,想要跳一跳的同学快来试试吧。

    项目地址:https://github.com/imhuay/Algorithm_Interview_Notes-Chinese

    如下所示为整个项目的结构,其中从机器学习到数学主要提供的是笔记与面试知识点,读者可回顾整体的知识架构。后面从算法到笔试面经主要提供的是问题及解答方案,根据它们可以提升整体的解题水平与编程技巧。

    面试知识点

    面试题多种多样,但机器学习知识就那么多,那么为了春招或春季跳槽,何不过一遍 ML 核心知识点?在这个 GitHub 项目中,作者前一部分主要介绍了机器学习及各子领域的知识点。其中每一个知识点都只提供最核心的概念,如果读者遇到不熟悉的算法或者遇到知识漏洞,可以进一步阅读相关文献。

    项目主要从机器学习、深度学习、自然语言处理和数学等方面提供详细的知识点,因为作者比较关注 NLP,所以并没有提供详细的计算机视觉笔记。

    机器学习

    首先对于机器学习,项目主要从基础概念、基本实践、基本算法和集成学习专题这四个方面概括 ML 的总体情况。其中基础概念可能是最基本的面试问题,例如「偏差方差怎么权衡?」、「生成模型和判别模型的差别是什么?」、「先验和后验概率都是什么,它们能转换吗?」。

    这些知识点一般是入门者都需要了解的,而对于 ML 基本实践,主要会从如何做好传统 ML 开发流程的角度提问。例如「你如何选择超参数,能介绍一些超参数的基本搜索方法吗?」、「混淆矩阵、准确率、精确率、召回率或 F1 值都是什么,如何使用它们度量模型的好坏?」、「你能介绍数据清洗和数据预处理的主要流程吗,举个例子?」。

    这些问题都能在前两部分的知识点中找到答案。后一部分的基本算法就非常多了,从最简单的 Logistic 回归到复杂的梯度提升树,这一部分总结了主流的机器学习算法:

    信息论

    逻辑斯蒂回归

    支持向量机

    决策树

    集成学习

    梯度提升决策树 GBDT

    随机森林

    其中每一种算法都提供了最核心的概念,例如对于决策树中的 CART 算法,笔记主要引用了李航《统计学习方法》中的描述:

    最后机器学习还有一个关于集成方法的专题。除了支持向量机,集成方法相关的问题在 ML 中也比较重要,因为像 XGboost 和随机森林等方法在传统 ML 中效果应该是顶尖的,被问到的概率也大得多。

    深度学习

    深度学习的内容就相对比较多了,目前也有非常多的笔记或资料,但是我们可能会感觉深度学习的问题并没有机器学习难。顶多会让我们手推一个反向传播算法,不会像手推支持向量机那样让我们从表达式推一下卷积网络。如果要为深度学习打基础,其实最好的办法是学习 Ian Goodfellow 的《Deep Learning》,我们只要阅读这本书的前两部分:应用数学与机器学习基础;深度网络:现代实践。第三部分因为涉及大量前沿研究的东西,我们暂时可以不急着学。

    该项目主要从以下几个方面介绍深度学习面试知识点:

    深度学习基础

    深度学习实践

    CNN 专题

    RNN 专题

    优化算法专题

    序列建模专题

    《Deep Learning》整理

    前面 6 个专题都是介绍的笔记,每一个专题都有非常多的具体内容,其中序列建模专题还引用了机器之心综述的从循环到卷积,探索序列建模的奥秘。如下展示了优化算法专题所包含的内容:

    在最后的《Deep Learning》整理中,项目作者给出了五十多道深度学习问题,并根据这些问题介绍《Deep Learning》中的知识点。如下为问题示例,不同的星号表示问题的难度:

    自然语言处理与数学

    后面的自然语言处理也是最近在重点更新的,目前介绍的方面主要有;

    自然语言处理基础

    NLP 发展趋势

    词嵌入专题

    句嵌入专题

    多模态专题

    视觉问答综述

    深度理解查询

    NLP 很多知识点其实都不算基础内容,这需要根据我们自己学习的领域收集复习内容。不过像 NLP 基础或词嵌入等知识点,项目作者介绍得很详细,它们也是 NLP 面试必备知识。

    最后还有一些数学知识点,它们是算法工程师面试所需要具备的基础。例如今日头条算法工程师的实习生面试会问:「在圆环上随机选取 3 个点,这 3 个点组成锐角三角形的概率?」,或者其它算个积分之类的。项目作者主要为面试准备了以下几方面的知识点;

    概率论

    微积分本质

    深度学习核心

    其中深度学习核心主要包含非线性激活函数、梯度下降和反向传播。

    算法题和笔试题

    对于编程面试,基础算法是必不可少的,它们一般体现在笔试题上,例如数据结构、动态规划或排列组合等。很多开发者可能感觉笔试解题会很难,因为题目并不会告诉你需要用什么样的基础算法来解决,全靠我们自己一步步解析题目。这就要求我们对各种基础算法都比较熟悉,项目作者提供了以下基本算法专题:

    字符串

    数据结构

    高级数据结构

    动态规划

    双指针

    区间问题

    排列组合

    数学问题

    Shuffle、采样、随机数

    大数运算

    海量数据处理

    这些算法题会介绍具体的问题、解题思路以及对应的解题代码。例如在数据结构中,我们如何判断树 B 是不是树 A 的子树。

    如下所示为解题代码,注意基本上各基础算法的题解都是用 C++写的,作者会引用剑指 Offer 题解和 Leetcode 题解等的解决方案。

     

    此外,该项目还提供了 IO 模板和必备算法模板。作者表示不少笔试不像 LeetCode 那样可以自动完成 I/O,我们需要手动完成数据 I/O,而且如果我们没有 ACM 经验,很可能会在这上面浪费很多时间。因此这里总结的几种常见 IO 模板对于编程面试有很大的帮助,另外的算法模板同样也是。

    例如如果我们输入不定数量个 Input,且以某个特殊输入为结束标志,那么用 C 语言实现的模板为:

     

    用 C++实现的模板为:

     

    面试真题

    最后,项目作者还收集了十多家科技企业面试真题,并介绍从一面到三面的内容与经验。

    例如以下是头条/字节跳动-深度学习/NLP 方向的三面概览:

    具体的面试题也会提供,如下所示为字节跳动 18 年 8 月的笔试题:积分卡牌游戏。

    当然给了题目,对应的解决方案也会提供:

     

    展开全文
  • 机器学习算法常见面试题目总结

    千次阅读 2018-09-11 19:54:45
    决策树的ID3,C4.5,CART等,决策树的split原理和剪枝策略 给出逻辑回归的模型、原理 假设限制有一些数据点,...训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。 Logistic回归分类器,我们在每...
    • 决策树的ID3,C4.5,CART等,决策树的split原理和剪枝策略
    • 给出逻辑回归的模型、原理
    • 假设限制有一些数据点,我们利用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就成为回归。logistic回归进行分类的思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法。
    • z=w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+\cdots +w_{n}x_{n}
    • Logistic回归分类器,我们在每一个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据都被分入1类,小于0.5的即被归入0类。所以,logistic回归也可以被看成是一种概率估计。
    • 随机梯度下降算法的原理和具体迭代函数
    • w:=w-\alpha \bigtriangledown _{w}f(w)
    • 随机梯度上升算法的伪代码:
    • 所有回归系数初始化为1
    • 对数据集中的每个样本
    •               计算该样本的梯度
    •               使用\alpha x gradient更新回归系数
    • 返回回归系数值
    •  
    • GBDT模型的损失函数、建模原理,以及如何调参?
    • GB和牛顿法的区别,它们和泰勒公式的关系
    • 为什么用最小二乘而不是最小四乘
    • 过拟合怎么解决,L1和L2正则化有什么区别
    • 剪枝处理:是决策树学习算法对付“过拟合”的主要手段

    • 卷积神经网络中,使用dropout策略来缓解过拟合。

    • BP算法表示能力强,但易过拟合,两种常用来缓解过拟合的策略:“早停”和“正则化”

    • “早停”:将数据分为训练集和验证集,训练集用来计算梯度、更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。

      “正则化”:基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。

    • 对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)。

    • L1正则化是指权值向量ww中各个元素的绝对值之和,通常表示为||w||1||w||1 L2正则化是指权值向量ww中各个元素的平方和然后再求平方根(可以看到Ridge回归的L2正则化项有平方符号),通常表示为||w||2 。

    • L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择 L2正则化可以防止模型过拟合(overfitting);一定程度上,L1也可以防止过拟合。

    • 怎么理解损失函数,SVM的损失函数是什么,写出公式
    • 损失函数是用来测度模型输出值和真实的因变量值之间差异的函数,模型输出值p和和真实值y之间的差异一般称为残差或者误差,但是这个值并不能直接用来衡量模型的质量,当一个模型完美的时候,其误差为0,而当一个模型不够完美时,其误差不论是负值还是正值,都偏离0,因此衡量模型质量的误差偏离0的相对值,即误差函数的值越接近于0,模型的性能越好,反之模型的性能越差。常用的损失函数如下:
    • 均方差(MSE)误差函数:   \frac{1}{N}\sum _{i}(y_{i}-p_{i})^{2}这种损失函数常用在实数值域连续变量的回归问题上,并且对于残差较大的情况给与更多的权重。
    • 平均绝对差(MAE):\frac{1}{N}\sum _{i}|y_{i}-p_{i}|这种损失函数也常用在实数值域连续变量的回归问题上,在时间序列预测问题中也常用。在这个误差函数中每个误差点对总体误差的贡献与其误差绝对值成线性比例关系,而上面的MSE没有此特性。
    • 交叉熵损失函数(Cross-Entropy):这种损失函数也叫对数损失函数,是针对分类模型的性能比较设计的,按照分类模型是二分类还是多分类的区别,可以分为二分类交叉熵和多分类交叉熵两种,交叉熵的数学表达式如下:
    • J(\theta )=-[\sum_{i=1}^{N}\sum_{k=1}^{K}1(y^{(i)}=k)logP(y^{i}=k|x^{(i)};\theta )]
    • 因此交叉熵可以解释为映射到最可能类别的概率的对数。因此,当预测值的分布和实际因变量的分布尽可能一致时,交叉熵最小。
    • SVM的损失函数:常用的是径向基函数(RBF):k(x,y) =exp(\frac{-\left \| x-y \right \|^{2}}{2\sigma ^{2}})
    • 偏差和方差是什么,高偏差和高方差说明了什么

      1.数据欠拟合会出现高偏差问题。

      2.数据过度拟合会出现高方差问题。

      3.怎么处理高偏差和高方差问题:

      高偏差:训练误差很大,训练误差与测试误差差距小,随着样本数据增多,训练误差增大。

    • 解决方法:寻找更具代表性的特征、.用更多的特征(增大输入向量的维度)

      高方差:训练误差小,训练误差与测试误差差距大,可以通过增大样本集合来减小差距。随着样本数据增多,测试误差会减小。

    • 解决方案:增大数据集合(使用更多的数据)、减少数据特征(减小数据维度)

      一般采取判断某函数是高方差还是高偏差,简单的判断是看训练误差与测试误差的差距,差距大说明是高方差的,差距小说明是高偏差的。
    • 聚类过程
    • Bagging 和 Boosting的区别
    • 朴素贝叶斯的公式
    • SVM的原理及公式推导

       

    • 神经网络如何工作
    • 激活函数:大多数神经元都将一维向量的网络输入变量通过一个函数映射到另外一个一维向量的数值,这个函数被称为激活函数。
    • 如果输入变化很小,导致输出结构发生截然不同的结果,这种情况是我们不希望看到的,为了模拟更细微的变化,输入和输出数值不只是0到1,可以是0和1之间的任何数,激活函数是用来加入非线性因素的,因为线性模型的表达力不够 。
    • 这句话字面的意思很容易理解,但是在具体处理图像的时候是什么情况呢?我们知道在神经网络中,对于图像,我们主要采用了卷积的方式来处理,也就是对每个像素点赋予一个权值,这个操作显然就是线性的。但是对于我们样本来说,不一定是线性可分的,为了解决这个问题,我们可以进行线性变化,或者我们引入非线性因素,解决线性模型所不能解决的问题。

      这里插一句,来比较一下上面的那些激活函数,因为神经网络的数学基础是处处可微的,所以选取的激活函数要能保证数据输入与输出也是可微的,运算特征是不断进行循环计算,所以在每代循环过程中,每个神经元的值也是在不断变化的。

      这就导致了tanh特征相差明显时的效果会很好,在循环过程中会不断扩大特征效果显示出来,但有是,在特征相差比较复杂或是相差不是特别大时,需要更细微的分类判断的时候,sigmoid效果就好了。

      还有一个东西要注意,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,否则激活后的值都会进入平坦区,使隐层的输出全部趋同,但是 ReLU 并不需要输入归一化来防止它们达到饱和。

      构建稀疏矩阵,也就是稀疏性,这个特性可以去除数据中的冗余,最大可能保留数据的特征,也就是大多数为0的稀疏矩阵来表示。其实这个特性主要是对于Relu,它就是取的max(0,x),因为神经网络是不断反复计算,实际上变成了它在尝试不断试探如何用一个大多数为0的矩阵来尝试表达数据特征,结果因为稀疏特性的存在,反而这种方法变得运算得又快效果又好了。所以我们可以看到目前大部分的卷积神经网络中,基本上都是采用了ReLU 函数

      常用的激活函数

      激活函数应该具有的性质:

      (1)非线性。线性激活层对于深层神经网络没有作用,因为其作用以后仍然是输入的各种线性变换。。

      (2)连续可微。梯度下降法的要求。

      (3)范围最好不饱和,当有饱和的区间段时,若系统优化进入到该段,梯度近似为0,网络的学习就会停止。

      (4)单调性,当激活函数是单调时,单层神经网络的误差函数是凸的,好优化。

      (5)在原点处近似线性,这样当权值初始化为接近0的随机值时,网络可以学习的较快,不用可以调节网络的初始值。

      目前常用的激活函数都只拥有上述性质的部分,没有一个拥有全部的~~

      Sigmoid函数 

      目前已被淘汰

      缺点

      饱和时梯度值非常小。由于BP算法反向传播的时候后层的梯度是以乘性方式传递到前层,因此当层数比较多的时候,传到前层的梯度就会非常小,网络权值得不到有效的更新,即梯度耗散。如果该层的权值初始化使得f(x) 处于饱和状态时,网络基本上权值无法更新。

      ∙ 输出值不是以0为中心值。

      Tanh双曲正切函数

      其中σ(x) 为sigmoid函数,仍然具有饱和的问题。

      ReLU函数 

      Alex在2012年提出的一种新的激活函数。该函数的提出很大程度的解决了BP算法在优化深层神经网络时的梯度耗散问题

      优点

      ∙ x>0 时,梯度恒为1,无梯度耗散问题,收敛快;

      ∙ 增大了网络的稀疏性。当x<0 时,该层的输出为0,训练完成后为0的神经元越多,稀疏性越大,提取出来的特征就约具有代表性,泛化能力越强。即得到同样的效果,真正起作用的神经元越少,网络的泛化性能越好

      ∙ 运算量很小; 

      缺点

      如果后层的某一个梯度特别大,导致W更新以后变得特别大,导致该层的输入<0,输出为0,这时该层就会‘die’,没有更新。当学习率比较大时可能会有40%的神经元都会在训练开始就‘die’,因此需要对学习率进行一个好的设置。

      优缺点可知max(0,x) 函数为一个双刃剑,既可以形成网络的稀疏性,也可能造成有很多永远处于‘die’的神经元,需要tradeoff。

      Leaky ReLU函数

      改善了ReLU的死亡特性,但是也同时损失了一部分稀疏性,且增加了一个超参数,目前来说其好处不太明确

      Maxout函数

      泛化了ReLU和Leaky ReLU,改善了死亡特性,但是同样损失了部分稀疏性,每个非线性函数增加了两倍的参数

      真实使用的时候最常用的还是ReLU函数,注意学习率的设置以及死亡节点所占的比例即可

    • 对于输出层,应当尽量选择适合因变量分布的激活函数:

    • 对于只有0,1取值的双值因变量,logistic函数是一个比较好的选择。

    • 对于有多个取值的离散因变量,比如0到9数字识别,softmax激活函数是logistic激活函数的自然衍生。

    • 对于有限值域的连续因变量logistic或者tanh激活函数都可以用,但是需要将因变量的值域伸缩到logistic或tanh对应的值域中。

    • 如果因变量取值为正,但是没有上限,那么指数函数是一个较好的选择。

    • 如果因变量没有有限值域,或者虽然有限值域但是边界未知,那么最好采用线性函数作为激活函数。

      训练集(train set) 验证集(validation set) 测试集(test set)

            一般需要将样本分成独立的三部分训练集(train set),验证集(validation set)和测试集(test set)。其中训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,而测试集则检验最终选择最优的模型的性能如何。一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。 
           样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。

           training set是用来训练模型或确定模型参数的,如ANN中权值等; validation set是用来做模型选择(model selection),即做模型的最终优化及确定的,如ANN的结构;而 test set则纯粹是为了测试已经训练好的模型的推广能力。当然,test set这并不能保证模型的正确性,他只是说相似的数据用此模型会得出相似的结果。但实际应用中,一般只将数据集分成两类,即training set 和test set,大多数文章并不涉及validation set。

    展开全文
  • 一面HR问的问题如下: 1、讲讲项目里面用的算法,效果如何。我就讲的时域行为检测,时序卷积,图卷积,目标检测啥的。 2、问了一下行为检测算法的细节。比如数据的预处理方法,时域的定位...6、常用的机器学习算法
  • 机器学习算法面试题(搜集)

    千次阅读 2018-08-28 18:16:01
    LR 面试常见问题 感觉这个有点难,自己也百度了一下,很多的解释都是以结果为导向,逆着推,利用sigmoid函数的优点来进行解释,总给人的感觉是以结果推结果,这个先放下,等以后深究后,再回来写。 PS:自己写的...
  • 小编给大家带来一个好的项目中,作者为川大研究生,为大家准备了 ML 算法工程师面试指南,它提供了完整的面试知识点、编程题及题解、各科技公司的面试题锦等内容。目前该 GitHub 项目已经有 1 万+的收藏量,同学们快...
  • 作者于2018年夏秋开始备战机器学习算法岗,总结汇总了如此的面试和笔试经验,希望能够对众多童鞋有用。
  • 机器学习常见问题1) 几种模型( SVM,LR,GBDT,EM )的原理以及公式推导; 2) RF,GBDT 的区别; GBDT,XgBoost的区别(烂大街的问题最好从底层原理去分析回答); 3) 决策树处理连续值的方法; 4) 特征选择的...
  • 腾讯视频机器学习算法面经
  • 这个系列是为了应对找工作面试面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此 算法的常见面问题 一、PCA(主成分分析)   PCA是一种降维技术,其做法是—寻找最小均方意义下...
  • 【为什么学习机器学习算法?】 人工智能是国家发展的战略,未来发展的必然趋势。 将来很多岗位终将被人工智能所代替,但人工智能人才只会越来越吃香。 中国人工智能人才缺口超过500万,人才供不应求。 要想掌握人工...
  • 2019牛客网校招面试题库(附答案)机器学习算法篇【电子版】 10牛币=10元买的 祝大家早日收到机器学习算法的Offer
  • 深度学习(机器学习算法面试(一)

    千次阅读 2019-02-20 10:10:26
    SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。 扩展: 支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。当训练...
  • 在大部分机器学习课程中,回归算法都是介绍的第一个算法。原因有两个:一回归算法比较简单,介绍它可以让人平滑地从统计学迁移到机器学习中。二回归算法是后面若干强大算法的基石,如果不理解回归算法,无法学习那些...
  • 现在已经有这么多经典的机器学习算法,如果能抓住它们的核心本质,无论是对于理解还是对于记忆都有很大的帮助,还能让你更可能通过面试。在本文中,SIGAI将用一句话来总结每种典型的机器学习算法,帮你抓住问题的...
  • 本题库均来自海量真实校招面试题目大数据进行的整理,学完这个题库,把此题库都理解透彻应对各家企业面试完全没有问题。
  • 这个系列是为了应对找工作面试面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此算法的常见面试的问题! 贝叶斯分类器的原理其实很简单,知道了贝叶斯公式基本上就知道了贝叶斯分类器...
  • 300到算法面试基本问题
  • AdaBoost是一种迭代算法,针对同一训练集训练处不同的分类器(弱分类器),将前面训练的分类器以某种方式组合起来,组合成一个强分类器。算法是通过改变数据的分布来实现的。每次训练分类器是参考 1、某样本在上个...
  • 机器学习算法工程师面试集锦(更新中)面试问题汇总训练决策树时的参数是什么在决策树的节点处分割标准是什么基尼系数的公式熵的公式是什么决策树如何决定在哪个特征处分割随机森林的优点有哪些介绍一下...
  • 首先SVM是支持向量机support vector machine的缩写,它是现在使用比较广泛的一个分类算法(二分类),是一个线性分类器! 当数据是线性可分的时候: SVM是在空间找一个分类超平面,将数据分开,下面以二维为例 ...
  • 这个系列是为了应对找工作面试面试官问的算法问题,所以只是也谢算法的简要介绍,后期会陆续补充关于此 算法的常见面问题! 决策树是一种依托于策略抉择而建立起来的树,是一种依托于分类、训练上的预测树,根据...
  • 机器学习面试必会算法集合,xgboost调参,boosting,LR,梯度下降,过拟合问题,HMM算法,FFM算法,SVD算法,SVM算法,决策树算法,随机森林算法等等
  • 41个机器学习面试

    万次阅读 多人点赞 2018-01-25 22:09:33
    偏倚指的是模型预测值与真实值的差异,是由使用的学习算法的某些错误或过于简单的假设造成的误差。它会导致模型欠拟合,很难有高的预测准确率。 方差指的是不同训练数据训练的模型的预测值之间的差
  • 机器学习算法工程师面试问题

    千次阅读 2018-07-22 22:11:22
    一、OPPO提前批(岗位:机器学习算法工程师) 1.1 一面(通过) 2018.07.21 手写二叉树前序遍历 剑指offer青蛙跳台阶问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,927
精华内容 19,970
关键字:

机器学习算法面试