精华内容
下载资源
问答
  • AI机器学习面试常见问题与答案

    千次阅读 2018-12-17 10:05:23
    以下问题答案定期更新,弄懂一个更新一个。 1.训练决策树时的参数是什么? 2.在决策树的节点处分割的标准是什么? 3.基尼系数的公式是什么? 4.熵的公式是什么? 答:log底数为2 详见:...

    以下问题答案定期更新,弄懂一个更新一个。

    1.训练决策树时的参数是什么?

    2.在决策树的节点处分割的标准是什么?

    3.基尼系数的公式是什么?

    4.熵的公式是什么?

    答:log底数为2

    详见:https://www.cnblogs.com/shixisheng/p/7147956.html

    5.决策树如何决定在哪个特征处分割?

    6.你如何用数学计算收集来的信息?你确定吗?

    7.随机森林的优点有哪些?

    8.介绍一下boosting算法。

    9.gradient boosting如何工作?

    10.关于AdaBoost算法,你了解多少?它如何工作?

    11.SVM中用到了哪些核?SVM中的优化技术有哪些?

    12.SVM如何学习超平面?用数学方法详细解释一下。

    13.介绍一下无监督学习,算法有哪些?

    14.在K-Means聚类算法中,如何定义K?

    15.告诉我至少3中定义K的方法。
     

    展开全文
  • 机器学习常见面试问题(一)

    万次阅读 2017-03-15 21:31:45
    1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题) 2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。 ...

    过拟合原因
    数据:数据不规范,数据量少,数据穿越,统计特征用到了未来的信息或者标签信息
    算法:算法过于复杂
    解决:
    1、将数据规范化,处理缺失值,增加数据量,采样,添加噪声数据
    2、正则化,控制模型复杂程度,
    3、early stoping,减少迭代次数,减少树的深度,
    4、学习率调大/小点、
    5、融合几个模型

    L1和L2的区别
    1、L1是Lasso Regression,表示向量中每个元素绝对值的和:L1范数的解通常是稀疏性的,倾向于选择数目较少的一些非常大的值或者数目较多的insignificant的小值。
    2、L2是岭回归,Ridge Regression,是欧氏距离也就是平方和的平方根。L2范数越小,可以使得w的每个元素都很小,接近于0,但L1范数不同的是他不会让它等于0而是接近于0。
    3、L1正则化的w可取的值是转置的方形,L2对应的是圆形。这样损失函数l(w)的最小值更容易在L1对应的边角上取得,从而这些维度变成0了。
    从贝叶斯的角度来看,加入正则项相当于加入了一种先验。即当训练一个模型时,仅依靠当前的训练数据集是不够的,为了实现更好的泛化能力,往往需要加入先验项。
    L1范数相当于加入了一个Laplacean先验;
    L2范数相当于加入了一个Gaussian先验。
    4、L2对大数的惩罚更大,但是解相对来说比较均匀。

    生成模型和判别模型区别
    对于输入x,类别标签y:
    生成式模型估计它们的联合概率分布P(x,y)
    Gaussians、Naive Bayes、Mixtures of Multinomials
    Mixtures of Gaussians、Mixtures of Experts、HMMs
    Sigmoidal Belief Networks, Bayesian Networks、Markov Random Fields
    Latent Dirichlet Allocation

    判别式模型估计条件概率分布P(y|x)
    Logistic Regression、SVM、Traditional Neural Networks、Nearest Neighbor、
    CRF、Boosting、Linear Regression

    svm算法的原理、如何组织训练数据、如何调节惩罚因子、如何防止过拟合、svm的泛化能力、增量学习
    1、SVM是一种二类分类的模型,它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。
    2、
    3、惩罚因子C决定了你有多重视离群点带来的损失,显然当所有离群点的松弛变量的和一定时,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点,最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。
    惩罚因子C不是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的值,指定这个值以后,解一下,得到一个分类器,然后用测试数据看看结果怎么样,如果不够好,换一个C的值,再解一次优化问题,得到另一个分类器,再看看效果,如此就是一个参数寻优的过程,但这和优化问题本身决不是一回事,优化问题在解的过程中,C一直是定值,要记住。
    4、解决过拟合的办法是为SVM引入了松弛变量ξ(slack variable),将SVM公式的约束条件改为。因为松弛变量能够容忍异常点的存在,我们的支持向量和超平面都不会受到它的影响。
    我们加上松弛变量的平方和,并求最小值。这样就达到一个平衡:既希望松弛变量存在以解决异常点问题,又不希望松弛变量太大导致分类解决太差。
    LR和SVM的联系与区别:
    联系:
    1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
    2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。
    区别:
    1、LR是参数模型,SVM是非参数模型。
    2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
    3、SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
    4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
    5、logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。

    展开全文
  • [机器学习] 面试常见问题+解析汇总

    万次阅读 2018-08-22 18:52:17
    机器学习面试题的分类 The first really has to do with the algorithms and theory behind machine learning. You’ll have to show an understanding of how algorithms compare with one another and how to ...

    机器学习面试题的分类

    1. The first really has to do with the algorithms and theory behind machine learning. You’ll have to show an understanding of how algorithms compare with one another and how to measure their efficacy and accuracy in the right way.
    2. The second category has to do with your programming skills and your ability to execute on top of those algorithms and the theory.
    3. The third has to do with your general interest in machine learning: you’ll be asked about what’s going on in the industry and how you keep up with the latest machine learning trends.
    4. Finally, there are company or industry-specific questions that test your ability to take your general machine learning knowledge and turn it into actionable points to drive the bottom line forward.

     

    一 方差与偏差

    • 偏差方差分别是用于衡量一个模型泛化误差的两个方面;

      • 模型的偏差,指的是模型预测的期望值真实值之间的差;度量了学习算法的期望输出与真实结果的偏离程度, 刻画了算法的拟合能力,Bias 偏高表示预测函数与真实结果差异很大。
      • 模型的方差,指的是模型预测的期望值预测值之间的差平方和;则代表“同样大小的不同的训练数据集训练出的模型”与“这些模型的期望输出值”之间的差异。训练集变化导致性能变化, Variance 偏高表示模型很不稳定

    • 偏差用于描述模型的拟合能力
      方差用于描述模型的稳定性

    如何权衡偏差与方差?

    • 偏差:度量学习算法的期望预测与真实结果的偏离程度,也叫拟合能力。
    • 方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动造成的影响。

     

    • 随着模型变复杂,Bias导致的error下降;
    • 随着模型变复杂,Variance导致的error上升;
    • 随着模型变复杂,error由下降到上升。
    • 模型较简单时,大的Bias,小的Variance,Underfitting!
    • 模型过于复杂时,小的Bias,大的Variance,Overfitting!

    最后谈一下 K-fold Cross Validation 与权衡 Bais-Variance 之间的关系。这个理解其实很简单,先看对于数据的划分“

    405927-20160327163016089-1365724274

    k-fold交叉验证常用来确定不同类型的模型(线性、指数等)哪一种更好,为了减少数据划分对模型评价的影响,最终选出来的模型类型(线性、指数等)是k次建模的误差平均值最小的模型。

    当k较大时,经过更多次数的平均可以学习得到更符合真实数据分布的模型,Bias就小了,但是这样一来模型就更加拟合训练数据集,再去测试集上预测的时候预测误差的期望值就变大了,从而Variance就大了;

    反之,k较小时模型不会过度拟合训练数据,从而Bias较大,但是正因为没有过度拟合训练数据,Variance也较小。

    过拟合原因
    数据:数据不规范,数据量少,数据泄露,统计特征用到了未来的信息或者标签信息
    算法:算法过于复杂
    解决:
    1、将数据规范化,处理缺失值,增加数据量,采样,添加噪声数据
    2、正则化,控制模型复杂程度,
    3、early stoping,减少迭代次数,减少树的深度,
    4、学习率调大/小点、
    5、融合几个模型

    二 如何处理数据中的缺失值

    可以分为以下 2 种情况:

    1. 缺失值较多

      • 直接舍弃该列特征,否则可能会带来较大的噪声,从而对结果造成不良影响。
    2. 缺失值较少

      当缺失值较少(<10%)时,可以考虑对缺失值进行填充,以下是几种常用的填充策略:
      1. 用一个异常值填充(比如 0),将缺失值作为一个特征处理

        data.fillna(0)

      2. 均值|条件均值填充

        如果数据是不平衡的,那么应该使用条件均值填充

        所谓条件均值,指的是与缺失值所属标签相同的所有数据的均值

        data.fillna(data.mean())

      3. 用相邻数据填充       

        # 上一个数据填充
        data_train.fillna(method='pad')
        # 下一个数据填充
        data_train.fillna(method='bfill') 
      4. 用随机森林等算法拟合       

        将数据分为有值和缺失值2份,对有值的数据采用随机森林拟合,然后对有缺失值的数据进行预测,用预测的值来填充。

    三 KNN和K-Means的区别 ?

    More reading: How is the k-nearest neighbor algorithm different from k-means clustering? (Quora)

    K-Nearest Neighbors is a supervised classification algorithm, while k-means clustering is an unsupervised clustering algorithm. While the mechanisms may seem similar at first, what this really means is that in order for K-Nearest Neighbors to work, you need labeled data you want to classify an unlabeled point into (thus the nearest neighbor part). K-means clustering requires only a set of unlabeled points and a threshold: the algorithm will take unlabeled points and gradually learn how to cluster them into groups by computing the mean of the distance between different points.

    The critical difference here is that KNN needs labeled points and is thus supervised learning, while k-means doesn’t — and is thus unsupervised learning.

    KNN

    K-Means

    目的是为了确定一个点的分类

    目的是为了将一系列点集分成k类

    1.KNN是分类算法

    2.监督学习,分类目标事先已知

    3.喂给它的数据集是带label的数据,已经是完全正确的数据

    1.K-Means是聚类算法

    2.非监督学习

    3.喂给它的数据集是无label的数据,是杂乱无章的,经过聚类后才变得有点顺序,先无序,后有序

    没有明显的前期训练过程,属于memory-based learning有明显的前期训练过程
    K的含义:来了一个样本x,要给它分类,即求出它的y,就从数据集中,在x附近找离它最近的K个数据点,这K个数据点,类别c占的个数最多,就把x的label设为cK的含义:K是人工固定好的数字,假设数据集合可以分为K个簇,由于是依靠人工定好,需要一点先验知识

    K值确定后每次结果固定

    K值确定后每次结果可能不同,从 n个数据对象任意选择 k 个对象作为初始聚类中心,随机性对结果影响较大

      

    相似点:都包含这样的过程,给定一个点,在数据集中找离它最近的点。即二者都用到了NN(Nears Neighbor)算法,一般用KD树来实现NN。

     

    理解准确率(accuracy)、精度(precision)、查全率(recall)、F1

    More reading: Precision and recall (Wikipedia)

    Recall is also known as the true positive rate: the amount of positives your model claims compared to the actual number of positives there are throughout the data. Precision is also known as the positive predictive value, and it is a measure of the amount of accurate positives your model claims compared to the number of positives it actually claims. It can be easier to think of recall and precision in the context of a case where you’ve predicted that there were 10 apples and 5 oranges in a case of 10 apples. You’d have perfect recall (there are actually 10 apples, and you predicted there would be 10) but 66.7% precision because out of the 15 events you predicted, only 10 (the apples) are correct.

    • 预测值为正例,记为P(Positive)
    • 预测值为反例,记为N(Negative)
    • 预测值与真实值相同,记为T(True)
    • 预测值与真实值相反,记为F(False)

    (1) 真阳性(True Positive,TP):检测有结节,且实际有结节;正确肯定的匹配数目;
    (2) 假阳性(False Positive,FP):检测有结节,但实际无结节;误报,给出的匹配是不正确的;
    (3) 真阴性(True Negative,TN):检测无结节,且实际无结节;正确拒绝的非匹配数目;
    (4) 假阴性(False Negative,FN):检测无结节,但实际有结节;漏报,没有正确找到的匹配的数目。

     

    反映的是分类器准确识别真阳性和假阴性的比率。看起来似乎这个指标已经能反映一个分类器的性能了,但我们应当想起一个很重的前提:这个ACC是只针对目前输入的这一组数据做出的判断。这就很容易因为数据偏斜造成模型的“测不准”。

    准确率P、召回率R、F1 值

    • 准确率 (Accuracy):(TP+TN)/(TP+TN+FP+FN)    通俗地讲, (预测正确的样本数)/(总样本数)
    • 精度    (Precision 查准率):P=TP/(TP+FP)。  通俗地讲,就是预测正确的正例数据预测为正例数据的比例。
    • 召回率(Recall       查全率):    R=TP/(TP+FN)。  通俗地讲,就是预测为正例的数据实际为正例数据的比例
    • F1值(F score):

    分类阈值对Precision/Recall的影响

    做二值分类时,我们认为,若h(x)>=0.5,则predict=1;若h(x)<0.5,则predict=0。这里0.5就是分类阈值。

    增加阈值,我们会对预测值更有信心,即增加了查准率。但这样会降低查全率。(High Precision, Low Recall)
    减小阈值,则模型放过的真例就变少,查全率就增加。(Low Precision, High Recall)

     

    五 解释下ROC 和AUC ?

    More reading: Receiver operating characteristic (Wikipedia)

    The ROC curve is a graphical representation of the contrast between true positive rates and the false positive rate at various thresholds. It’s often used as a proxy for the trade-off between the sensitivity of the model (true positives) vs the fall-out or the probability it will trigger a false alarm (false positives).

    ROC曲线是用来验证一个分类器(二分)模型的性能的。其工作原理是,给出一个模型,输入已知正负类的一组数据,并通过对比模型对该组数据进行的预测,衡量这个模型的性能。

    注意,“测试数据”的正负类是已知的,我们需要的是判断模型预测数据的阳性、阴性是否符合“测试数据”的事实。

     

    >ROC曲线是怎么画的呢?

    1. 给定一个初始阈值(一半是从0%开始)
    2. 根据分类结果画上图中第一个表格,然后根据上面的式子算出TPR和FPR。由TPR和FPR可以确定一个点,在图中画出;
    3. 给一个新的阈值(如每次加1%),并重复步骤2、3,直到阈值取到100%。
    4. 若干个点最后组成了ROC曲线。

     

    AUC(Area Under Curve),是对ROC曲线的量化指标。

    一个合适的分类器,要求做到TPR较高而FPR较小,体现在曲线上,就是在相同的FPR时,TPR越大的越好:

    如上图中,红线对应的分类器的性能就好过蓝线对应的分类器。

    但对于人类来说,通过人眼识别自然很简单。但对于计算机呢?而且,某些情况下,ROC曲线并不一定是完全光滑的(由于阈值取值的问题等),有可能某一个时刻红线超过了蓝线而另一个时刻蓝线超过了红线,这就很难进行判断到底哪个分类器性能好。

    所以我们用AUC进行评价。AUC的值,等于曲线与FPR轴线形成的面积。AUC的值越大越好,其取值范围为(0.5,1)

    六 什么是贝叶斯定理?  How is it useful in a machine learning context?

    More reading: An Intuitive (and Short) Explanation of Bayes’ Theorem (BetterExplained)

    Bayes’ Theorem gives you the posterior probability of an event given what is known as prior knowledge.

    Mathematically, it’s expressed as the true positive rate of a condition sample divided by the sum of the false positive rate of the population and the true positive rate of a condition. Say you had a 60% chance of actually having the flu after a flu test, but out of people who had the flu, the test will be false 50% of the time, and the overall population only has a 5% chance of having the flu. Would you actually have a 60% chance of having the flu after having a positive test?

    Bayes’ Theorem says no. It says that you have a (.6 * 0.05) (True Positive Rate of a Condition Sample) / (.6*0.05)(True Positive Rate of a Condition Sample) + (.5*0.95) (False Positive Rate of a Population)  = 0.0594 or 5.94% chance of getting a flu.

    Bayes’ Theorem is the basis behind a branch of machine learning that most notably includes the Naive Bayes classifier. That’s something important to consider when you’re faced with machine learning interview questions.

    七 为什么朴素贝叶斯如此“朴素”?

    More reading: Why is “naive Bayes” naive? (Quora)

    因为它假定所有的特征在数据集中的作用是同样重要和独立的。正如我们所知,这个假设在现实世界中是很不真实的,因此,说朴素贝叶斯真的很“朴素”。

    naive(朴素)是指的对于模型中各个 feature(特征) 有强独立性的假设,并未将 feature 间的相关性纳入考虑中。

    朴素贝叶斯分类器一个比较著名的应用是用于对垃圾邮件分类,通常用文字特征来识别垃圾邮件,是文本分类中比较常用的一种方法。

    八 什么是正则化, 为什么要正则化?  请给出一些正则化常用方法。

    More reading: What is the difference between L1 and L2 regularization? (Quora)

    从贝叶斯的角度来看,加入正则项相当于加入了一种先验。即当训练一个模型时,仅依靠当前的训练数据集是不够的,为了实现更好的泛化能力,往往需要加入先验项。


    L1范数相当于加入了一个Laplacean先验(拉普拉斯分布); L2范数相当于加入了一个Gaussian先验。

    1. L1是Lasso Regression,表示向量中每个元素绝对值的和:L1范数的解通常是稀疏性的,倾向于选择数目较少的一些非常大的值或者数目较多的insignificant的小值。
    2. L2是岭回归,Ridge Regression,是欧氏距离也就是平方和的平方根。L2范数越小,可以使得w的每个元素都很小,接近于0,但L1范数不同的是他不会让它等于0而是接近于0。
    3. L1正则化的w可取的值是转置的方形,L2对应的是圆形。这样损失函数l(w)的最小值更容易在L1对应的边角上取得,从而这些维度变成0了。
    4. L2对大数的惩罚更大,但是解相对来说比较均匀。

    九 数据规范化是什么? 为什么需要对数据进行规范化?

    数据规范化在预处理阶段尤为重要,它可以将数值缩放到特定的范围,以在反向传播时获得更好的收敛性。一般而言,规范化就是让每一个数据点减去它们的均值,并除以标准差。

    如果不这样处理,一些(数量级较大的)特征值在代价函数中的权重就会更大(如果大数量级特征值改变1%,代价函数的变化就会很大,但小数量级的特征值改变1%产生的影响则微乎其微)。规范化使得所有特征值具有相同的权重。

    1)归一化后加快了梯度下降求最优解的速度

    如下图所示,蓝色的圈圈图代表的是两个特征的等高线。其中左图两个特征X1和X2的区间相差非常大,X1区间是[0,2000],X2区间是[1,5],其所形成的等高线非常尖。当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;   

      而右图对两个原始特征进行了归一化,其对应的等高线显得很圆,在梯度下降进行求解时能较快的收敛。      因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

     

    2)归一化有可能提高精度。

     一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

    3)哪些机器学习算法不需要做归一化处理?

    概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、GBDT、XGBoost、SVM、LR、KNN、KMeans之类的最优化问题就需要归一化。

    1)线性归一化

    x' = \frac{x - \text{min}(x)}{\text{max}(x)-\text{min}(x)}

          这种归一化方法比较适用在数值比较集中的情况。这种方法有个缺陷,如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量值来替代max和min。

    2)标准差标准化

      经过处理的数据符合标准正态分布,即均值为0,标准差为1,其转化函数为:

    其中μ为所有样本数据的均值,σ为所有样本数据的标准差。

    3)非线性归一化

         经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。

    十 What’s the difference between Type I and Type II error?

    More reading: Type I and type II errors (Wikipedia)

    Don’t think that this is a trick question! Many machine learning interview questions will be an attempt to lob basic questions at you just to make sure you’re on top of your game and you’ve prepared all of your bases.

    Type I error is a false positive, while Type II error is a false negative. Briefly stated, Type I error means claiming something has happened when it hasn’t, while Type II error means that you claim nothing is happening when in fact something is.

    A clever way to think about this is to think of Type I error as telling a man he is pregnant, while Type II error means you tell a pregnant woman she isn’t carrying a baby.

    Type I error 是指统计学中的一类错误,意思是本来是错误的结论却被接受了。Type II error 是指统计学中的二类错误,也就是本来是正确的错误却被拒绝了。简而言之,就是存伪和弃真。

    第一类错误是指:原假设事实上正确,可是检验统计量的观测值却落入拒绝域, 因而否定了本来正确的假设.这是弃真的错误, 为了降低第一类错误的概率,就要尽可能的做接受的推断,随之带来的就是可能把假的也当成真的接受了,这就导致纳伪错误的增加,即增加第二类错误发生的概率. 原假设事实上不正确,而检验统计量的观测值却落入了不能拒绝域,因而没有否定本来不正确的原假设,这是取伪的错误.

    这样本容量固定的前提下,两类错误的概率不能同时减少.为了同时减少两类错误的概率就得增加样本容量.

    十一 傅里叶变换?

    More reading: Fourier transform (Wikipedia)

    A Fourier transform is a generic method to decompose generic functions into a superposition of symmetric functions. Or as this more intuitive tutorial puts it, given a smoothie, it’s how we find the recipe. The Fourier transform finds the set of cycle speeds, amplitudes and phases to match any time signal. A Fourier transform converts a signal from time to frequency domain — it’s a very common way to extract features from audio signals or other time series such as sensor data.

    图像或声音的数字信号通常在时域上是连续的不具有稀疏性,但经过傅里叶变换、余弦变换、小波变换等处理手段后会转换为频域上的稀疏信号

    十二  概率 and 和似然?

    More reading: What is the difference between “likelihood” and “probability”? (Cross Validated)

    概率(probability)和似然(likelihood),都是指可能性,都可以被称为概率,但在统计应用中有所区别。

       概率是给定某一参数值,求某一结果的可能性。例如,抛一枚匀质硬币,抛10次,6次正面向上的可能性多大?

       似然是给定某一结果,求某一参数值的可能性。例如,抛一枚硬币,抛10次,结果是6次正面向上,其是匀质的可能性多大?

    十三 生成模型和判别模型区别?

    More reading: What is the difference between a Generative and Discriminative Algorithm? (Stack Overflow)

    A generative model will learn categories of data while a discriminative model will simply learn the distinction between different categories of data. Discriminative models will generally outperform generative models on classification tasks.

    判别方法:由数据直接学习决策函数 Y = f(X),或者由条件分布概率 P(Y|X)作为预测模型,即判别模型。

    生成方法:由数据学习联合概率密度分布函数 P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型。

    由生成模型可以得到判别模型,但由判别模型得不到生成模型。

    常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场

    常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机

    十四 线性分类器与非线性分类器的区别以及优劣?

    如果模型是参数的线性函数,并且存在线性分类面,那么就是线性分类器,否则不是。
    常见的线性分类器有:LR,贝叶斯分类,单层感知机、线性回归。
    常见的非线性分类器:决策树、RF、GBDT、多层感知机。
    SVM两种都有(看线性核还是高斯核)。
    线性分类器速度快、编程方便,但是可能拟合效果不会很好。
    非线性分类器编程复杂,但是效果拟合能力强。

    十五 What cross-validation technique would you use on a time series dataset?

    More reading: Using k-fold cross-validation for time-series model selection (CrossValidated)

    Instead of using standard k-folds cross-validation, you have to pay attention to the fact that a time series is not randomly distributed data — it is inherently ordered by chronological order. If a pattern emerges in later time periods for example, your model may still pick up on it even if that effect doesn’t hold in earlier years!

    You’ll want to do something like forward chaining where you’ll be able to model on past data then look at forward-facing data.

    • fold 1 : training [1], test [2]
    • fold 2 : training [1 2], test [3]
    • fold 3 : training [1 2 3], test [4]
    • fold 4 : training [1 2 3 4], test [5]
    • fold 5 : training [1 2 3 4 5], test [6]

    十六 什么是决策树剪枝?

    More reading: Pruning (decision trees)

    决策树对训练属于有很好的分类能力,但是对于未知的测试集未必有好的分类能力,泛化能力弱,即可能发生过拟合现象。 决策树是充分考虑了所有的数据点而生成的复杂树,有可能出现过拟合的情况,决策树越复杂,过拟合的程度会越高。为防止过拟合,我们需要进行剪枝。   剪枝修剪分裂前后分类误差相差不大的子树,能够降低决策树的复杂度,降低过拟合出现的概率

    Pruning can happen bottom-up and top-down, with approaches such as reduced error pruning and cost complexity pruning.

    Reduced error pruning is perhaps the simplest version: replace each node. If it doesn’t decrease predictive accuracy, keep it pruned. While simple, this heuristic actually comes pretty close to an approach that would optimize for maximum accuracy.

    剪枝分为预剪枝和后剪枝:

    预剪枝:

    (1)每一个结点所包含的最小样本数目,例如10,则该结点总样本数小于10时,则不再分;
    (2)指定树的高度或者深度,例如树的最大深度为4;
    (3)指定结点的熵小于某个值,不再划分。

     后剪枝:

    总体思路:由完全树T0开始,剪枝部分结点得到T1,再次剪枝部分结点得到T2...直到剩下树根的树Tk;在验证数据集上对这k个树分别评价,选择损失函数最小的树Ta。

    十七 Which is more important to you– model accuracy, or model performance?

    More reading: Accuracy paradox (Wikipedia)

    This question tests your grasp of the nuances of machine learning model performance! Machine learning interview questions often look towards the details. There are models with higher accuracy that can perform worse in predictive power — how does that make sense?

    Well, it has everything to do with how model accuracy is only a subset of model performance, and at that, a sometimes misleading one. For example, if you wanted to detect fraud in a massive dataset with a sample of millions, a more accurate model would most likely predict no fraud at all if only a vast minority of cases were fraud. However, this would be useless for a predictive model — a model designed to find fraud that asserted there was no fraud at all! Questions like this help you demonstrate that you understand model accuracy isn’t the be-all and end-all of model performance.

    十八 如何处理数据集中缺失或损坏的数据?

    你可以在数据集中找到缺失/损坏的数据,并删除它所在的行或列,或是用其他值代替之。

    Pandas中有两个非常有效的函数:isnull()和dropna(),这两个函数可以帮你找到有缺失/损坏数据的行,并删除对应值。如果要用占位符(比如0)填充这些无效值,你可以使用fillna()函数。

    十九 如何处理不平衡数据集?

    More reading: 8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset (Machine Learning Mastery)

    An imbalanced dataset is when you have, for example, a classification test and 90% of the data is in one class. That leads to problems: an accuracy of 90% can be skewed if you have no predictive power on the other category of data! Here are a few tactics to get over the hump:

    1- Collect more data to even the imbalances in the dataset.

    2- Resample the dataset to correct for imbalances.

    3- Try a different algorithm altogether on your dataset.

    What’s important here is that you have a keen sense for what damage an unbalanced dataset can cause, and how to balance that.

    二十 如何开展探索性数据分析(EDA)?

    EDA的目的是在应用预测模型之前,了解数据的信息,获得对数据的直观感受。总的来说,开展探索性数据分析一般采取由粗到精的方法

    如何开展数据分析

    (1)首先获取一些高层次、全局性的直观感受。检查一下不平衡的类,查看每一类的均值和方差。看看第一行,了解数据大致内容。运行pandas中的http://df.info()函数,看看哪些是连续变量、分类变量,并查看变量的数据类型(整型、浮点型、字符串)。然后删掉一些在分析、预测中不需要的列,这些列中的很多行数值都相同(提供的信息也相同),或者存在很多缺失值。我们也可以用某一行/列的众数或中值填充该行/列中的缺失值。

    (2)可以做一些基本的可视化操作。从相对高层次、全局性的角度开始,比如绘制分类特征关于类别的条形图,绘制最终类别的条形图,探究一下最“常用”的特征,对独立变量进行可视化以获得一些认知和灵感等。

    (3)可以展开更具体的探索。比如同时对两三个特征进行可视化,看看它们相互有何联系。也可以做主成分分析,来确定哪些特征中包含的信息最多。类似地,还可以将一些特征分组,以观察组间联系。

    比如可以考察一下,取A = B = 0时,不同的类会有什么表现?取A = 1、B = 0时呢?还要比较一下不同特征的影响,比方说特征A可以取“男性”或“女性”,则可以画出特征A与旅客舱位的关系图,判断男性和女性选在舱位选择上是否有差异。

    除了条形图、散点图或是其他基本图表,也可以画出PDF(概率分布函数)或CDF(累计分布函数)、使用重叠绘图方法等。还可以考察一下统计特性,比如分布、p值等。最后就该建立机器学习模型了。

    从简单的模型开始,比如朴素贝叶斯、线性回归等。如果上述模型效果不理想,或是数据高度非线性,则考虑使用多项式回归、决策树或支持向量机。EDA可以挑选出重要的特征。如果数据量很大,可以使用神经网络。别忘了检查ROC曲线(感受性曲线)、准确率和召回率。

     

    二十一 请解释 降维,以及使用场合和优势? 解释一下什么是PCA?

    降维是一种通过分析出主变量来减少特征变量的过程,其中主变量通常就是重要的特征。一个特征变量的重要性取决于它对数据信息的解释程度,以及你所采用的方法。至于如何选取方法,主要靠不断摸索,以及你自己的偏好。通常大家会从线性方法开始,如果结果欠缺拟合性,则考虑尝试非线性的方法。

    数据降维的优势

    (1)节省存储空间;

    (2)节省计算时间(比如应用于机器学习算法时);

    (3)去除冗余特征变量,正如同时以平方米和平方英里存储地区面积没有任何意义(甚至可能是收集数据时出现错误);

    (4)将数据降维到二维或三维后,我们或许可以画图,将数据可视化,以观察数据具有的模式,获得对数据的直观感受;

    (5)特征变量过多或模型过于复杂可能导致模型过拟合。

    PCA(principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据压缩算法。在PCA中,数据从原来的坐标系转换到新的坐标系,由数据本身决定。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息。第一个新坐标轴选择的是原始数据中方差最大的方法,第二个新坐标轴选择的是与第一个新坐标轴正交且方差次大的方向。重复该过程,重复次数为原始数据的特征维数。

      通过这种方式获得的新的坐标系,我们发现,大部分方差都包含在前面几个坐标轴中,后面的坐标轴所含的方差几乎为0,。于是,我们可以忽略余下的坐标轴,只保留前面的几个含有绝不部分方差的坐标轴。事实上,这样也就相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,也就实现了对数据特征的降维处理。

    二十二 回归(regression)与分类(classification)的区别?

    More reading: Regression vs Classification (Math StackExchange)

    分类问题是指,给定一个新的模式,根据训练集推断它所对应的类别(如:+1,-1),是一种定性输出,也叫离散变量预测;
    回归问题是指,给定一个新的模式,根据训练集推断它所对应的输出值(实数)是多少,是一种定量输出,也叫连续变量预测。

    Logistic Regression 和 Linear Regression:

    • Linear Regression:  输出一个标量 wx+b,这个值是连续值,所以可以用来处理回归问题。
    • Logistic Regression:把上面的 wx+b 通过 sigmoid函数映射到(0,1)上,并划分一个阈值,大于阈值的分为一类,小于等于分为另一类,可以用来处理二分类问题。
    • 更进一步:对于N分类问题,则是先得到N组w值不同的 wx+b,然后归一化,比如用 softmax函数,最后变成N个类上的概率,可以处理多分类问题。
    •  

    二十三  Name an example where ensemble techniques might be useful.

    More reading: Ensemble learning (Wikipedia)

    Ensemble techniques use a combination of learning algorithms to optimize better predictive performance. They typically reduce overfitting in models and make the model more robust (unlikely to be influenced by small changes in the training data). 

    You could list some examples of ensemble methods, from bagging to boosting to a “bucket of models” method and demonstrate how they could increase predictive power.

    二十四 如果确定模型是否过拟合overfitting?

    More reading: How can I avoid overfitting? (Quora)

    overfittingt是这样一种现象:一个假设在训练数据上能够获得比其他假设更好的拟合,但是在训练数据外的数据集上却不能很好的拟合数据。此时我们就叫这个假设出现了overfitting的现象。出现这种现象的主要原因是训练数据中存在噪音或者训练数据太少。

    3种方法避免过拟合

    1- Keep the model simpler: reduce variance by taking into account fewer variables and parameters, thereby removing some of the noise in the training data.

    2- 增加数据量(可以通过交叉验证实现)such as k-folds cross-validation.

    3- Use regularization techniques such as LASSO that penalize certain model parameters 在对模型的目标函数(objective function)或代价函数(cost function)加上正则项

    Ps: Dropout,应用在深度学习中,例如:CNN。防止模型过拟合,可以提高模型泛化能力。

    二十五 What evaluation approaches would you work to gauge the effectiveness of a machine learning model?

    More reading: How to Evaluate Machine Learning Algorithms (Machine Learning Mastery)

    You would first split the dataset into training and test sets, or perhaps use cross-validation techniques to further segment the dataset into composite sets of training and test sets within the data. You should then implement a choice selection of performance metrics: here is a fairly comprehensive list. You could use measures such as the F1 score, the accuracy, and the confusion matrix. What’s important here is to demonstrate that you understand the nuances of how a model is measured and how to choose the right performance measures for the right situations.

    二十六 如果评估一个逻辑回归模型?

    More reading: Evaluating a logistic regression (CrossValidated)

    A subsection of the question above. You have to demonstrate an understanding of what the typical goals of a logistic regression are (classification, prediction etc.) and bring up a few examples and use cases.

    二十七 什么是“核机制”,它有什么优势?

    More reading: Kernel method (Wikipedia)

    The Kernel trick involves kernel functions that can enable in higher-dimension spaces without explicitly calculating the coordinates of points within that dimension: instead, kernel functions compute the inner products between the images of all pairs of data in a feature space.

    This allows them the very useful attribute of calculating the coordinates of higher dimensions while being computationally cheaper than the explicit calculation of said coordinates. Many algorithms can be expressed in terms of inner products. Using the kernel trick enables us effectively run  algorithms in a high-dimensional space with lower-dimensional data.

    核机制:更高维空间内积的快速计算。也就是说,核机制的本质是计算内积(只不过这里参与内积运算的两点属于更高维的空间)。

    如果数据在当前空间中不是线性可分的,则需做transform,将数据变换到更高的维度空间中。

    也就是:Kernel = transform + inner product

    Kernel机制的必要性和有效性可通过对比传统的高维空间计算内积的方法显现。
    传统的方法要分两步,

    • step1: 先从X空间升维到Z空间 

    一般情况下,Z空间具有更高的维度。如果升维到无穷维空间,计算量更是难以忍受。

    • step2: 再在Z空间里计算内积

    核方法:

     
    也就是说,K(x1,x2)计算得到的结果就是原始数据空间里的两点先升维ϕ(x)再进行内积ϕ(x1)Tϕ(x2)的结果,不必通过显式的升维变换,也即是说,K(⋅)本身内嵌(embedded)了一种升维变换。两步变一步,形式更为简洁。

     

     

    What’s your favorite algorithm, and can you explain it to me in less than a minute?

    This type of question tests your understanding of how to communicate complex and technical nuances with poise and the ability to summarize quickly and efficiently. Make sure you have a choice and make sure you can explain different algorithms so simply and effectively that a five-year-old could grasp the basics!

    为什么对图像使用卷积而不只是FC层?

    这个问题比较有趣,因为提出这个问题的公司并不多。但不排除一些公司会提出这个问题,如果面试时遇见,你可以分为两方面回答这些问题。

    卷积可以保存、编码、使用图像的空间信息。只用FC层的话可能就没有相关空间信息了。

    卷积神经网络(CNN)某种程度上本身具有平移不变性,因为每个卷积核都充当了它自己的滤波器/特征监测器。

    CNN具有平移不变性

    上文解释过,每个卷积核都充当了它自己的滤波器/特征监测器。假设你正在进行目标检测,这个目标处于图片的何处并不重要,因为我们要以滑动窗口的方式,将卷积应用于整个图像。

    为什么用CNN分类需要进行最大池化?

    这也是属于计算机视觉领域的一个问题。CNN中的最大池化可以减少计算量,因为特征图在池化后将会变小。与此同时,因为采取了最大池化,并不会丧失太多图像的语义信息。还有一个理论认为,最大池化有利于使CNN具有更好的平移不变性。关于这个问题,可以看一下吴恩达讲解最大池化优点的视频。

    视频链接:https://www.coursera.org/learn/convolutional-neural-networks/lecture/hELHk/pooling-layers

    为什么用CNN分割时通常需要编码-解码结构?

    CNN编码器可以看作是特征提取网络,解码器则利用它提供的信息,“解码”特征并放大到原始大小,以此预测图像片段

    为什么要使用许多小卷积核(如3*3的卷积核),而非少量大卷积核?

    这篇VGGNet的论文中有很详细的解释。

    使用小卷积核有两个原因:

    首先,同少数大卷积核一样,更多小卷积核也可以得到相同的感受野和空间背景,而且用小卷积核需要的参数更少、计算量更小。

    其次,使用小卷积核需要更多过滤器,这意味会使用更多的激活函数,因此你的CNN可以得到更具特异性的映射函数。

    论文链接:https://arxiv.org/pdf/1409.1556.pdf

     

     

    data-science-and-machine-learning-interview-questions

    BAT机器学习面试1000题系列(一)

    BAT机器学习面试1000题系列(二)

    展开全文
  • 最新版的机器学习和深度学习面试题目,从牛客等各大网站整理剖析,整合整理,共300多道经典题目。 涉及机器学习和深度学习理论和实践等各方面的知识,底层的知识偏多一些!
  • 机器学习常见面试

    2018-06-24 22:10:21
    阿里天池上总结的机器学习常见面试问题,以及答案,非常详细
  • 主要用于互联网企业机器学习方向的小伙伴参考,包含了互联网公司面试中常问的问题,前人采坑,后人避坑
  • 助大家圆梦大厂,里面有常见机器学习面试可能问道的题目。如果好好的看你就会打败百分之99的人了。加油,你是最靓的仔
  • 机器学习面试题.pdf

    2020-07-15 13:29:51
    这个是机器学习常见的一些面试题目,可能内容涵盖的不完全,对于没有基础的同学来说,一些概念的理解还是有帮助的。
  • 机器学习算法常见面试题目总结

    千次阅读 2018-09-11 19:54:45
    但是对于我们样本来说,不一定是线性可分的,为了解决这个问题,我们可以进行线性变化,或者我们引入非线性因素,解决线性模型所不能解决的问题。 这里插一句,来比较一下上面的那些激活函数,因为神经网络的...
    • 决策树的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。

    展开全文
  • 资料为博主2019年准备北航2系9月推免面试的相关资料。包括通信原理、信息论与编码、线性代数、高等数学等课程的面试准备,侧重定义和概念,分享给有缘人。
  • 机器学习常见问题1) 几种模型( SVM,LR,GBDT,EM )的原理以及公式推导; 2) RF,GBDT 的区别; GBDT,XgBoost的区别(烂大街的问题最好从底层原理去分析回答); 3) 决策树处理连续值的方法; 4) 特征选择的...
  • 机器学习 全概率公式、贝叶斯公式 模型训练为什么引入偏差和方差 CRF、朴素贝叶斯、最大熵模型、马尔科夫随机场、混合高斯模型 如何解决过拟合问题 ONE-HOT的作用,为什么不用数字直接表示 决策树和随机森林 ...
  • 抽象为机器学习能处理的数学问题 理解实际业务场景问题机器学习的第一步,机器学习中特征工程和模型训练都是非常费时的,深入理解要处理的问题,能避免走很多弯路。 获取数据。“ 数据决定机器学习结果的上限,...
  • 本文整理了一些最常见机器学习面试问题及其相应的回答。机器学习有志者以及经验丰富的ML专业人员可以在面试前以此巩固其基础知识。 1. 机器学习和深度学习有什么区别?机器学习是人工智能的一个子集,为机器提供了...
  • 文章目录机器学习问题学习曲线 判断是过拟合还是欠拟合为什么用交叉熵代替二次代价函数?MAE损失函数和MSE损失函数理解L1和L2损失函数和正则化作为损失函数作为正规化KNN里面,如果你要自定义metric(不用内置的欧氏...
  • 第一部分:深度学习 1、CNN 1、CNN问题 2、如何减少参数 权值共享、VGG的感受野、GoogLeNet的inception 3、激活函数选择 4、filter的尺寸选择 5、pooling的作用 6、常用的几个模型 2、RNN 1、RNN、LSTM、...
  • 由于找工作需要,搜集了一些常见的基础机器学习与深度学习面试题,希望对你有所帮助。 参考博客: https://zhuanlan.zhihu.com/p/45091568 https://www.cnblogs.com/hanxiaosheng/p/9934237.html 1.无监督和有监督...
  • 有监督学习和无监督学习的区别 有监督学习对具有标记的训练样本进行学习以尽可能对训练样本集外的数据进行分类预 测LR,SVM,BP,RF,GBDT 无监督学习对未标记的样本进行训练学习比发现这些样本中的结构知识(KMeans,DL) ...
  • 1.请简要介绍下SVM。 SVM,全称是support vector machine,中文名叫支持向量机。SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面...支持向量机学习方法包括构建由简至繁的模型:线性可分支持向量机、...
  • 41个机器学习面试

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

    万次阅读 2020-07-02 15:08:03
    问题1: 什么是偏差(bias)、方差(variable)之间的均衡? Bias 是由于你使用的学习算法过度简单地拟合结果或者错误地拟合结果导致的错误。它反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,...
  • BAT机器学习面试1000题系列

    万次阅读 多人点赞 2017-12-14 15:19:15
    1、本文的内容全部来源于七月在线发布的BAT机器学习面试1000题系列; 2、文章中带斜体的文字代表是本人自己增加的内容,如有错误还请批评指正; 3、原文中有部分链接已经失效,故而本人重新加上了新的链接,如有...
  • ● L1和L2正则化的区别 参考回答: L1是模型各个参数的绝对值之和,L2为各个参数平方和的开方值。L1更趋向于产生少量的特征,其它特征为0,最优的...平方损失(预测问题)、交叉熵(分类问题)、hinge损失(SVM支持...
  • 机器学习面试问题

    千次阅读 2017-12-12 12:00:34
    抽象为机器学习能处理的数学问题 理解实际业务场景问题机器学习的第一步,机器学习中特征工程和模型训练都是非常费时的,深入理解要处理的问题,能避免走很多弯路。 获取数据。“ 数据决定机器学习结果的上限,而...
  • 机器学习面试题面经

    千次阅读 2020-05-05 23:55:33
    SVM优点 可用于线性/非线性分类,也可用于回归,泛化错误率低,也就是说具有良好的学习能力,且学到的结果具有很好的推广性 可以解决小样本情况下的机器学习问题,可以解决高维问题,可以避免神经网络结构选择和...
  • 机器学习面试题最后一节了,前面两期的,你们都会了没啊? 1.人工智能与机器学习的区别? 基于经验数据的特性而设计和开发的算法被称为机器学习。而人工智能不但包括机器学习,还包括诸如知识表示,自然语言...
  •   2019-06-05 22:38:20 ...当要决定一个产品或者新功能是否真的可以上线时,就要做A/B 测试,我们要看这个新的产品或者新...《百面机器学习》 https://youtu.be/u4YnEczu_OE https://youtu.be/YJeWrniW48k
  • 点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:George Seif编译:ronghuaiyang前戏在面试之前,你会觉得自己什么都懂,但是真的开始面试...
  • 监督学习与非监督学习 监督学习有训练集与测试样本,在训练中找规律,有目标值和特征值 非监督学习没有训练集,只有一组数据,在组内寻找数据 分类与聚类 聚类分析是一种分类的多元统计分析方法。按照个体或样品的...
  • 机器学习面试问题汇总

    万次阅读 多人点赞 2017-02-28 17:08:18
    LR,SVM,RF,KNN,EM,Adaboost,PageRank,GBDT,Xgboost,HMM,DNN,推荐算法,聚类算法,等等机器学习领域的算法基本知识:1)监督与非监督区别;是否有监督(supervised),就看输入数据是否有标签(label)。输入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,298
精华内容 12,119
关键字:

机器学习面试常见问题