【机器学习】算法笔试题刷题笔记01 - 基础概念

119 阅读15分钟
  1. 数理统计中,一般通过增加抽样次数取平均来较小预估误差;

    机器学习中,如随机森林, 通过引入随机样本并且增加决策树的数据,主要降低了预估方差的值,GBDT(梯度提升决策树)降低模型偏差。

    均值是无偏估计,噪音无法改变,完全随机方差能降低。

  2. HMM模型一共有三个经典的问题需要解决:

    2.1 评估观察序列概率。即给定模型λ=(A,B,Π)和观测序列O={o1,o2,...oT},计算在模型λ下观测序列O出现的概率P(O|λ)。这个问题的求解需要用到前向后向算法。

    2.2 模型参数学习问题。即给定观测序列O={o1,o2,...oT},估计模型λ=(A,B,Π)的参数,使该模型下观测序列的条件概率P(O|λ)最大。这个问题的求解需要用到基于EM算法的鲍姆-韦尔奇算法

    2.3 预测问题,也称为解码问题。即给定模型λ=(A,B,Π)λ=(A,B,Π)和观测序列O={o1,o2,...oT}O={o1,o2,...oT},求给定观测序列条件下,最可能出现的对应的状态序列,这个问题的求解需要用到基于动态规划的维特比算法

  3. 一元线性回归的基本假设有
    1、随机误差项是一个期望值或平均值为0的随机变量;
    2、对于解释变量的所有观测值,随机误差项有相同的方差;
    3、随机误差项彼此不相关
    4、解释变量是确定性变量,不是随机变量,与随机误差项彼此之间相互独立;
    5、解释变量之间不存在精确的(完全的)线性关系,即解释变量的样本观测值矩阵是满秩矩阵;
    6、随机误差项服从正态分布

违背基本假设的计量经济学模型还是可以估计的,只是不能使用普通最小二乘法进行估计。

当存在异方差时,普通最小二乘法估计存在以下问题: 参数估计值虽然是无偏的,但不是最小方差线性无偏估计。

杜宾-瓦特森(DW)检验,计量经济,统计分析中常用的一种检验序列一阶 自相关 最常用的方法。

所谓多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确。影响

(1)完全共线性下参数估计量不存在

(2)近似共线性下OLS估计量非有效

多重共线性使参数估计值的方差增大,1/(1-r2)为方差膨胀因子(Variance Inflation Factor, VIF)

(3)参数估计量经济含义不合理

(4)变量的显著性检验失去意义,可能将重要的解释变量排除在模型之外

(5)模型的预测功能失效。变大的方差容易使区间预测的“区间”变大,使预测失去意义。

  1. Bootstrap 在原始数据的范围内作有放回的再抽样(re-sampling),样本含量仍为n,原始数据中每个观测目标被抽到的概率相等,为1/n,所得样本成为Bootstrap样本。

  2. 特征选择

    定义:不改变原始的特征数据,只是选择一部分出来,与特征抽取,即特征降维不同。。

    特征抽取是指对特征进行了高维到低维的映射,特征实际上产生了一定的变化,方法有如缺失值比率(Missing Value Ratio)、低方差滤波(Low Variance Filter)、高相关滤波(High Correlation filter)、随机森林(Random Forest)、反向特征消除(Backward Feature Elimination)、前向特征选择(Forward Feature Selection)、因子分析(Factor Analysis)、主成分分析(PCA)、独立分量分析(ICA)、IOSMAP、t-SNE、UMAP。

    特征选择方法:

    1. DF(Document Frequency) 文档频率

       DF:统计特征词出现的文档数量,用来衡量某个特征词的重要性
      
    2. MI(Mutual Information) 互信息法

      互信息法用于衡量特征词与文档类别直接的信息量。
      
      如果某个特征词的频率很低,那么互信息得分就会很大,因此互信息法倾向"低频"的特征词。
      
      相对的词频很高的词,得分就会变低,如果这词携带了很高的信息量,互信息法就会变得低效。
      
    3. (Information Gain) 信息增益法

       通过某个特征词的缺失与存在的两种情况下,语料中前后信息的增加,衡量某个特征词的重要性。
      
    4. CHI(Chi-square) 卡方检验法

       利用了统计学中的"假设检验"的基本思想:首先假设特征词与类别直接是不相关的;
      
       如果利用CHI分布计算出的检验值偏离阈值越大,那么更有信心否定原假设,接受原假设的备则假设:特征词与类别有着很高的关联度。
      
    5. WLLR(Weighted Log Likelihood Ration)加权对数似然

    6. WFO(Weighted Frequency and Odds)加权频率和可能性

  3. 常见聚类算法

    image.png

  4. Apriori算法

    经典的挖掘频繁项集和关联规则的数据挖掘算法。

    该算法的基本思想是:通过对数据库的多次扫描来计算项集的支持度,发现所有的频繁项集从而生成关联规则。

    步骤:

    (1)扫描全部数据,产生候选1-项集的集合C1;
    
    (2)根据最小支持度,由候选1-项集的集合C1产生频繁1-项集的集合L;
    
    (3)对k>1,重复执行步骤(4)、(5)、(6);
    
    (4)由Lk执行连接和剪枝操作,产生候选(k+1)-项集的集合C(k+1)。
    
    (5)根据最小支持度,由候选(k+1)-项集的集合C(k+1),产生频繁(k+1)-项集的集合L(k+1);
    
    (6)若L≠Ф,则k=k+1,跳往步骤(4);否则往下执行;
    
    (7)根据最小置信度,由频繁项集产生强关联规则,程序结束。
    
  5. 常见分类算法

    决策树 : 通过将数据集划分为不同的子集来预测目标变量。从根节点开始对,根据某个特征对数据集进行划分,然后递归地生成更多的子节点,直到满足停止条件为止。决策树的每个内部节点表示一个特征属性上的判断条件,每个分支代表一个可能的属性值,每个叶节点表示一个分类结果。

    逻辑回归 : 一种用于二元分类的算法,它通过使用逻辑函数将线性回归的结果映射到[0,1]范围内。逻辑回归模型将输入特征与输出类别之间的关系表示为线性回归函数,然后通过逻辑函数将线性回归的结果转换为一个概率值,用于预测目标变量。逻辑回归的优点是计算效率高,但在处理高维数据时可能会过拟合。

    支持向量机(SVM) : 通过找到一个超平面来划分不同的类别。它试图最大化两个类别之间的边界,这个边界被称为间隔。

    朴素贝叶斯 : 基于贝叶斯定理的分类算法。假设每个特征之间是独立的,然后根据这个假设来计算类别的条件概率,并选择概率最大的类别作为预测结果。朴素贝叶斯的优点是在处理高维数据时效率高,并且对数据集的大小和分布不敏感。基于先验概率推导出后验概率。

    K-最近邻(KNN) : 基于实例的学习算法。KNN算法根据距离度量计算待分类项与数据集中每个项的距离,然后选取距离最近的K个项,根据这K个项的类别进行投票,将得票最多的类别作为待分类项的预测类别。KNN的优点是简单、易于理解和实现,但可能会受到数据集大小和维数的影响。

    神经网络 : 基于人工神经元的分类算法,它通过训练神经元之间的连接权重来预测目标变量。神经网络由多个神经元组成,每个神经元接收输入信号并产生输出信号,输出信号通过连接权重与下一个神经元的输入信号相乘得到新的输入信号,最终的输出信号由所有的神经元组成。神经网络的优点是在处理复杂和非线性问题时表现良好,但需要大量的数据和计算资源来训练模型。

    贝叶斯网络 : 基于概率论的分类算法,它通过建立条件独立关系来构建网络模型,并用于分类和概率推理。贝叶斯网络的优点是在处理不确定性和概率推理时表现良好。

    线性判别分析(LDA) : 基于判别函数的分类算法,它通过构建一个线性判别函数来划分不同的类别。LDA的优点是在处理高维数据和多个类别时表现良好。

    最大熵模型(Maximal Entropy Model) : 基于概率论的分类算法,它通过最大化熵来构建模型,并用于分类和概率推理。最大熵模型的优点是在处理具有不确定性和噪声的数据时表现良好。

    随机森林 : 基于决策树算法,通过构建多个决策树并组合它们的预测结果来提高分类精度。它通过随机选择样本和特征来生成多个决策树,然后以投票的方式将最多个数的结果作为最终分类结果。随机森林的优点是可以处理高维数据,并且对数据集的大小和分布不敏感。

    AdaBoost : 迭代算法,它通过将多个弱分类器的结果组合来预测目标变量。AdaBoost算法将数据集分成多个子集,然后针对每个子集训练一个弱分类器,并调整每个弱分类器的权重,使得分类错误的样本得到更大的权重,然后再次训练弱分类器。如此反复迭代,直到达到预设的迭代次数或者弱分类器的精度达到某个阈值为止。最终的预测结果由所有弱分类器的加权和决定。AdaBoost的优点是可以处理多类分类问题,并且对噪声和异常值不敏感。

    梯度提升决策树(GBDT) : 基于梯度提升的分类算法,它通过将多个决策树的结果组合来预测目标变量。GBDT算法通过不断地添加树、更新模型参数和优化目标函数来提高模型的精度。每棵树都是通过对样本特征空间进行划分、寻找最佳划分点来生成的。每棵树生成后,就对应一个残差函数,用当前所有树的残差和作为下一棵树的生成依据。如此反复迭代,直到达到预设的迭代次数或者满足其他停止条件为止。最终的预测结果由所有树的加权和决定。GBDT的优点是在处理复杂和非线性问题时表现良好,并且对数据集的大小和分布不敏感。

    极端梯度提升(XGBoost) : 一种改进的梯度提升算法,它通过使用二阶导数信息来优化损失函数;引入正则项避免树过拟合;Block存储可以并行计算等。

    决策树桩(Decision Stump) : 一种简化版的决策树算法,它只在一个层级上进行划分,从而简化模型的复杂度。决策树桩的优点是在处理小型数据集和进行实时分类时效率高。

    K-最近邻朴素贝叶斯(K-Nearest Neighbor Naive Bayes) : K-最近邻朴素贝叶斯算法结合了K-最近邻和朴素贝叶斯的原理,它通过计算每个类别的最近邻数量来进行分类。K-最近邻朴素贝叶斯的优点是在处理大规模数据集和进行实时分类时效率高。

  6. 决策树指标

    决策树常用三种指标来确定是否继续划分集合:信息增益、信息增益率,基尼指数。

    1. 信息熵:即数据样本的纯度,纯度越高,熵越小。

    2. 信息增益:按照某一特征划分数据集后熵的减少量,选择熵减少量最多的特征进行划分,但是偏好特征取值较多的特征,常见模型ID3

      ID3核心:在决策树的各个结点上应用信息增益准则来选择特征,递归构建决策树,即在每一个节点处选取能获得最高信息增益的分支属性进行分裂。

    3. 信息增益率:在信息增益的基础上除以一个固有值(intrinsic value,和取值数目有关),会对取值数目较多的特征有更多惩罚,偏好取值数较少的特征,常见模型C4.5

    4. 基尼指数:从样本集D中随机抽取两个样本,其类别标记不一致的概率,因此越小越好,常见模型CART

  7. 排序方案

    基于规则的排序方案 :依据规则质量的某种度量对规则进行排序。这种排序方案确保每一个测试记录都是由覆盖它的"最好的"规则来分类。

    基于类的排序方案:属于同一个类的规则在规则集R中一起出现。然后,这些规则根据它们所属的类信息一起排序。

  8. 过拟合

    造成过拟合的原因主要有:

    1. 训练数据不足,有限的训练数据;

    2. 训练模型过度导致模型非常复杂,泛化能力差,权值学习迭代次数足够多,拟合了训练数据中的噪音和训练样例中没有代表性的特征;

      如,SVM算法中使用高斯核/RBF核代替线性核;

    3. 训练集中存在噪音。噪音大到模型过分记住了噪音的特征,反而忽略了真实的输入输出间的关系。

  9. 线性规划的对偶问题

    任何一个线性规划都存在对偶问题,对偶问题的对偶问题就是原问题。互为对偶的线性规划,一个无最优解,另一个也无最优解,但是一个无可行解,另一个可能有可行解。若最优解存在,其应该是对偶的,即,并非相同。一个问题无可行解,另一个问题可能也无可行解,可能具有无界解。

  10. 判别式与生成式模型

    判别式模型(Discriminative Model)是直接对条件概率p(y|x;θ)建模。

    常见的判别式模型有:线性回归模型、逻辑回归、线性判别分析、支持向量机SVM、CART、神经网络、高斯过程、条件随机场等。

    生成式模型(Generative Model)则会对x和y的联合分布p(x,y)建模,然后通过贝叶斯公式来求得p(yi|x),然后选取使得p(yi|x)最大的yi,

    常见的生成式模型有:隐马尔可夫模型HMM、朴素贝叶斯模型、高斯混合模型GMM、LDA、K近邻等。

  11. 集成学习框架

bagging:从训练集从进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果。代表:随机森林

boosting:训练过程为阶梯状,基模型按次序一一进行训练(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化,对所有基模型预测的结果进行线性综合产生最终的预测结果。代表:XGBoost、adaboost、GBM、GDBT;

stacking:将训练好的所有基模型对训练基进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测

  1. 正则化

正则化目的是防止过拟合,是指在损失函数上加上某些规则(限制),缩小解空间,从而减少求出过拟合解的可能性。

L2本质是参数解的2阶范数,以二维为例,L2的最优解就是一个圆;如果你还记得话,loss func的组成是两部分一部分是预测值和真实值之间的error,一部分是正则项,前一部分的解空间可以看作是一个梯度下降的等高线,这样一来,loss func的所有局部解就是每层等高线和这个圆之间的切点,所以说约束了解空间。这也是为啥L2会让解平滑,L1会让解稀疏(因为L1的解是一个四个顶点在坐标轴上的正方形,等高线与它的交点多半落在坐标轴上,意味着某一维会变成零)

Dropout也是一种正则化方法。