美文网首页数据结构与算法
BAT机器学习面试1000题系列(第31~40题)

BAT机器学习面试1000题系列(第31~40题)

作者: Hebborn_hb | 来源:发表于2017-10-10 23:58 被阅读19次

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

    32.数据的逻辑存储结构(如数组,队列,树等)对于软件开发具有十分重要的影响,试对你所了解的各种存储结构从运行速度、存储效率和适用场合等方面进行简要地分析。

    33.什么是分布式数据库?


    分布式数据库系统是在集中式数据库系统成熟技术的基础上发展起来的,但不是简单地把集中式数据库分散地实现,它具有自己的性质和特征。集中式数据库系统的许多概念和技术,如数据独立性、数据共享和减少冗余度、并发控制、完整性、安全性和恢复等在分布式数据库系统中都有了不同的、更加丰富的内容。

    34.简单说说贝叶斯定理。


    贝叶斯定理便是基于下述贝叶斯公式:


    上述公式的推导其实非常简单,就是从条件概率推出。

    根据条件概率的定义,在事件B发生的条件下事件A发生的概率是


    同样地,在事件A发生的条件下事件B发生的概率

    整理与合并上述两个方程式,便可以得到:

    接着,上式两边同除以P(B),若P(B)是非零的,我们便可以得到贝叶斯定理的公式表达式:

    更多请参见此文:《从贝叶斯方法谈到贝叶斯网络》

    35.#include和#include“filename.h”有什么区别?
    用 #include 格式来引用标准库的头文件(编译器将从标准库目录开始搜索).
    用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

    36. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A)
    A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理

    37.将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C)
    A. 频繁模式挖掘 B. 分类和预测 C. 数据预处理 D. 数据流挖掘

    38.下面哪种不属于数据预处理的方法? (D)
    A变量代换 B离散化 C 聚集 D 估计遗漏值

    39.什么是KDD? (A)
    A. 数据挖掘与知识发现 B. 领域知识发现 C. 文档知识发现 D. 动态知识发现


    40.说说梯度下降法.
    @来源:《回归(regression)、梯度下降(gradient descent)》
    下面是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为构建一个模型。


    我们用X1,X2..Xn 去描述feature里面的分量,比如x1=房间的面积,x2=房间的朝向等等,我们可以做出一个估计函数:
    image
    θ在这儿称为参数,在这儿的意思是调整feature中每个分量的影响力,就是到底是房屋的面积更重要还是房屋的地段更重要。为了如果我们令X0 = 1,就可以用向量的方式来表示了:
    image
    我们程序也需要一个机制去评估我们θ是否比较好,所以说需要对我们做出的h函数进行评估,一般这个进行评估的函数称为损失函数(loss function),描述h函数不好的程度,在下面,我们称这个函数为J函数
    在这儿我们可以做出下面的一个损失函数:
    image
    换言之,我们把对x(i)的估计值与真实值y(i)差的平方和作为损失函数,前面乘上的1/2是为了在求导的时候,这个系数就不见了。
    如何调整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一种完全是数学描述的方法,另外一种就是梯度下降法。
    梯度下降法是算法流程如下:
    1)首先对θ赋值,这个值可以是随机的,也可以让θ是一个全零的向量。
    2)改变θ的值,使得J(θ)按梯度下降的方向进行减少。
    为了描述的更清楚,给出下面的图:
    image
    这是一个表示参数θ与误差函数J(θ)的关系图,红色的部分是表示J(θ)有着比较高的取值,我们需要的是,能够让J(θ)的值尽量的低,也就是达到深蓝色的部分。θ0,θ1表示θ向量的两个维度。
    在上面提到梯度下降法的第一步是给θ给一个初值,假设随机给的初值是在图上的十字点。
    然后我们将θ按照梯度下降的方向进行调整,就会使得J(θ)往更低的方向进行变化,如下图所示,算法的结束将是在θ下降到无法继续下降为止。
    image
    当然,可能梯度下降的最终点并非是全局最小点,即也可能是一个局部最小点,如下图所示:
    image
    上面这张图就是描述的一个局部最小点,这是我们重新选择了一个初始点得到的,看来我们这个算法将会在很大的程度上被初始点的选择影响而陷入局部最小点。
    下面我将用一个例子描述一下梯度减少的过程,对于我们的函数J(θ)求偏导J:
    image
    下面是更新的过程,也就是θi会向着梯度最小的方向进行减少。θi表示更新之前的值,-后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少。
    image
    一个很重要的地方值得注意的是,梯度是有方向的,对于一个向量θ,每一维分量θi都可以求出一个梯度的方向,我们就可以找到一个整体的方向,在变化的时候,我们就朝着下降最多的方向进行变化就可以达到一个最小点,不管它是局部的还是全局的。
    用更简单的数学语言进行描述步骤2)是这样的:
    image

    相关文章

      网友评论

        本文标题:BAT机器学习面试1000题系列(第31~40题)

        本文链接:https://www.haomeiwen.com/subject/cwhiyxtx.html