贝叶斯概率

P(y_ix)=P(xy_i)P(y_i)P(x)P\left(y\_{i} | x\right)=\frac{P\left(x | y\_{i}\right) P\left(y\_{i}\right)}{P(x)}

极大似然估计

判别式和生成式算法各有哪些?区别是什么?

区别:二者最本质的区别是建模对象的不同。

  • 判别式模型的评估对象是最大化条件概率P(Y|X)并对此进行建模;

  • 生成式模型的评估对象是最大化联合概率P(X,Y)并对此进行建模。

判别式模型:线性回归、决策树、支持向量机SVM、kNN、神经网络等;

生成式模型:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA。

集成学习

决策树和随机森林的区别

决策树 + Bagging + 随机特征选择 = 随机森林(bagging,包含CART决策树等)

随机森林可以防止过拟合原因(随机性):

  1. 产生决策树的样本是随机生成。
  2. 构建决策树的特征值是随机选取。
  3. 树产生过程中裂变的时候是选择N个最佳方向中的随机一个裂变的。

Bagging 和 Boosting的区别

  • 样本选择上:
    Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
    Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
  • 样例权重:
    Bagging:使用均匀取样,每个样例的权重相等。
    Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
  • 预测函数:
    Bagging:所有预测函数的权重相等。
    Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。
  • 并行计算:
    Bagging:各个预测函数可以并行生成。
    Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

随机森林的优缺点

优点:

  • 相比于其他算法,在训练速度和预测准确度上有很大的优势;
  • 能够处理很高维的数据,不用选择特征,在模型训练完成后,能够给出特征的重要性;
  • 可以写成并行化方法;
    缺点:在噪声较大的分类回归问题上,容易过拟合。

LDA(Latent Dirichlet Allocation)

隐狄利克雷分布,无监督的主题概率生成模型。输入是文档集合和主题个数,输出是以概率分布的形式呈现的主题,常用于主题建模、文本分类、观点挖掘等多个领域。

三种梯度下降算法区别

  1. Batch gradient descent(BGD)

θ_j:=θ_jαθ_jJ(θ)\theta\_{j} :=\theta\_{j}-\alpha \frac{\partial}{\partial \theta\_{j}} J(\theta)

可以得到全局最优解,缺点是更新每个参数都需要遍历所有数据,计算量大,还有很多冗余计算,在数据非常大的时候,每个参数的更新(训练速度)都是非常慢的;
2. Stochastic gradient descent(SGD)

θ_j=θ_j+(yh_θ(xi))x_ji\theta\_{j}^{\prime}=\theta\_{j}+\left(y^{\prime}-h\_{\theta}\left(x^{i}\right)\right) x\_{j}^{i}

以高方差频繁更新,使SGD跳到新的或潜在更优的局部解,但是也使得收敛到局部最优解的过程更加复杂;
4. Mini-batch gradient descent(MBGD)

θ_j:=θ_jα1N_k=iN(h_θ(x(k))y(k))x_j(k)\theta\_{j} :=\theta\_{j}-\alpha \frac{1}{N} \sum\_{k=i}^{N}\left(h\_{\theta}\left(x^{(k)}\right)-y^{(k)}\right) x\_{j}^{(k)}

结合了二者的优点,每次选取N个样本,减少了参数更新的次数,可以达到更加稳定的收敛结果。

查准率(precision)和查全率(recall)

注: 如何绘制ROC曲线?

以真正例率为纵坐标,假正例率为横坐标绘制的曲线。

TPR = TP /(TP + FN)真

FPR = TN / ( TN + FP) 假

排序算法

特征选择

在文本分类中,首先要对数据进行特征提取,特征提取中又分为特征选择和特征抽取两大类,在特征选择算法中有互信息,文档频率,信息增益,卡方检验以及期望交叉熵。

防止过拟合的方法

  1. dropout
  2. early-stop
  3. 减小网络
  4. Batch Normalization
  5. data augmentation
  6. 加入正则化项
    • L1正则化:L1优点是能够获得sparse模型,对于large-scale的问题来说这一点很重要,因为可以减少存储空间。缺点是加入L1后目标函数在原点不可导,需要做特殊处理。
    • L2正则化:L2优点是实现简单,能够起到正则化的作用。

SVM及其相关问题

为什么引入拉格朗日的优化方法?

将拉格朗日对偶性应用到求解原始问题上,通过求解对偶问题进而求得原始问题的最优解,原因如下:

  1. 对偶问题往往更容易求解;
  2. 自然引入核函数,继而推广到非线性分类问题。

为什么选择最大间隔分类器?

  1. 从数学上考虑,误分类次数和几何间隔存在下列关系,

误分类次数(2Rδ)2误分类次数\leq (\frac{2R}{\delta})^2

RR表示所有样本中最长的向量值,δ\delta表示几何间隔。
2. 最大间隔求得最优分离超平面,模型的鲁棒性更好,对未知样本的泛化能力最强。

样本失衡对SVM的结果有影响吗?如何解决SVM中样本失衡的问题?

样本失衡会对结果产生影响,分类超平面会靠近样本少的类别。原因:因为使用软间隔最大化,假设对所有类别使用相同的惩罚因子,而优化目标是最小化惩罚量,所以靠近样本少的类别惩罚量少。

解决SVM样本失衡问题的方法:

  1. 对于不同的类别赋予不同的惩罚因子(C),训练样本越少,C越大。(会偏离原始样本的概率分布)
  2. 对于样本少的类别,基于某种策略采样。

当样本不均衡时,采用ROC曲线评价分类器的好坏。

SVM如何解决多分类的问题?

  1. 修改目标函数,将多个分类面的参数求解合并在一个目标函数上,一次性求解。
  2. One vs Rest:训练时将某类化为一类,其它样本为另一类;假设有k类,那么需要训练k个模型。

SVM适合处理是什么类型的数据?

高维、稀疏、样本少的数据。

SVM为什么对缺失数据敏感?

  1. SVM没有缺失值处理策略。
  2. SVM假设样本在一特征空间可分,特征空间的好坏决定了SVM的性能。
  3. 缺失特征数据影响训练结果。

SVM的损失函数 - hinge loss (合页损失函数)

_iN[1y_i(wx_i+b)]_++λw2\sum\_{i}^{N}\left[1-y\_{i}\left(w \cdot x\_{i}+b\right)\right]\_{+}+\lambda\|w\|^{2}

注: LR loss:

(θ)=logL(θ)=_i=1my(i)logh(x(i))+(1y(i))log(1h(x(i)))\begin{aligned} \ell(\theta) &=\log L(\theta) \\ &=\sum\_{i=1}^{m} y^{(i)} \log h\left(x^{(i)}\right)+\left(1-y^{(i)}\right) \log \left(1-h\left(x^{(i)}\right)\right) \end{aligned}

SVM中常用的核函数

  • linear:K(x_i,x_j)=x_iTx_jK\left(\mathbf{x}\_{i}, \mathbf{x}\_{j}\right)=\mathbf{x}\_{i}^{T} \mathbf{x}\_{j}

适用于线性可分、特征数量较多。

  • polynomial:K(x_i,x_j)=(γx_iTx_j+r)d,γ>0K\left(\mathbf{x}\_{i}, \mathbf{x}\_{j}\right)=\left(\gamma \mathbf{x}\_{i}^{T} \mathbf{x}\_{j}+r\right)^{d}, \gamma>0
  • radial basis function(RBF,径向基函数):K(x_i,x_j)=exp(γx_ix_j2),γ>0K\left(\mathbf{x}\_{i}, \mathbf{x}\_{j}\right)=\exp \left(-\gamma\left\|\mathbf{x}\_{i}-\mathbf{x}\_{j}\right\|^{2}\right), \gamma>0
    适用于线性不可分时、特征维数少、样本数量均衡、没有先验知识时使用。
  • sigmoid:K(x_i,x_j)=tanh(γx_iTx_j+r)K\left(\mathbf{x}\_{i}, \mathbf{x}\_{j}\right)=\tanh \left(\gamma \mathbf{x}\_{i}^{T} \mathbf{x}\_{j}+r\right)
  • Gaussian kernel:k(x,y)=exp(xy22σ2)k(x, y)=\exp \left(-\frac{\|x-y\|^{2}}{2 \sigma^{2}}\right)

注:linear和RBF的区别:

  1. 训练速度:参数不同导致训练训练速度不同,linear只有惩罚因子一个参数训练速度快,RBF还需要调节γ\gamma.
  2. 训练结果:线性核得到的权重ww能反应出特征的重要性,可以由此进行特征选择。RBF无法解释。
  3. 训练数据:线性核适合样本特征数 >>样本数量,RBF相反。

LR和SVM的联系和区别

联系:

  1. 都是判别式模型
  2. 都是有监督的分类算法
  3. 如果不考虑核函数,都是线性分类算法。
    区别:
  4. LR可以输出概率,SVM不可以
  5. 损失函数不同,即分类机制不同
  6. SVM通过引入核函数解决非线性问题,LR主要靠特征构造,必须组合交叉特征,特征离散化等。
  7. LR中每个样本点都需要参与核计算,计算复杂度高,故不用核函数。
  8. SVM计算复杂,效果比LR好适用于小数据集;LR相反。
  9. SVM分类只与分类超平面附近的点相关,LR与所用样本点有关。
  10. SVM是结构风险最小化,LR则是经验风险最小化。

结构风险最小化就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,减小泛化误差。为了达到结构风险最小化的目的,最常用的方法就是添加正则项。

SVM如何防止过拟合?

通过引入松弛变量

联系作者