机器学习算法
本篇整理了传统的机器学习算法在面试中的考点,主要涉及算法的基本原理和具体细节。包含的算法有:分类算法:逻辑回归、决策树、随机森林、朴素贝叶斯、KNN、GBDT、XgBoost和LightGBM、stacking集成模型、最大熵模型;聚类算法:K-Means和混合高斯模型;降维算法:PCA、LDA;推荐系统算法:协同过滤;关联规则算法:Apriori算法;图模型:HMM和CRF等。除此之外,还包括一些经典面试问题。
分类模型
逻辑回归
决策树
随机森林
朴素贝叶斯
SVM
KNN
AdaBoost
GBDT
XGBoost
LightGBM
Stacking集成模型
最大熵模型
聚类算法
K-Means算法
混合高斯模型
降维算法
PCA
LDA
特征选择方法
推荐系统算法
关联规则算法-Apriori算法
图模型
HMM
CRF
其他常见面试问题
分类模型指标及应用场景
怎样解决样本不平衡的情况
过拟合的含义、原因及解决方法
L1和L2正则化的原理;L1为什么可以做特征选择
交叉熵推导
维特比算法的基本原理
jieba分词的原理
数据归一化和数据标准化的区别;哪些模型需要数据归一化
Bagging和Boosting的区别
最大后验概率和最大似然估计的对比
逻辑回归
逻辑回归是一种分类算法,在线性回归的基础上添加了sigmoid函数将线性回归的值映射成一个概率,根据概率值大小预测。
sigmoid函数:
S ( x ) = 1 / ( 1 + e − x ) S(x) = 1/(1+e^{-x}) S(x)=1/(1+e−x)
sigmoid函数的特质:
S ′ ( x ) = S ( x ) ∗ ( 1 − S ( x ) ) S'(x) = S(x)*(1-S(x)) S′(x)=S(x)∗(1−S(x))
逻辑回归的损失函数是对数损失函数,对数函数是交叉熵损失函数对应类别为二分类时的特殊情况。对数损失函数的公式为:
L ( y , h θ ( x ) ) = Σ i m ( y i ∗ l o g ( h θ ( x i ) ) + ( 1 − y i ) ∗ ( l o g ( 1 − h θ ( x i ) ) ) L(y,h_\theta(x))=\Sigma_i^m(y_i*log(h_\theta(x_i))+(1-y_i)*(log(1-h_\theta(x_i))) L(y,hθ(x))=Σim(yi∗log(hθ(xi))+(1−yi)∗(log(1−hθ(xi)))
在逻辑回归中,一般基于自变量相互独立的假设,若两个变量出现相关性,则认为是多重共线性。多重共线性可通过方差膨胀因子检验,会导致难以区分每个解释变量对结果的影响,也会使回归模型缺乏稳定性。解决多重共线性的方法:逐步回归或者主成分分析。
逻辑回归的优点:1.模型简单,易于理解; 2. 数据量较大时,训练效率很高;
缺点: 1.只能解决线性问题(可通过构建多项式等特征解决非线性问题) 2. 模型较简单,易欠拟合; 3. 不适用于特征较多的数据集。
决策树
决策树是一种分类和回归模型,通过从训练样本中生成一些规则,用这些规则搭建一棵决策树,实现新样本的预测。
决策树按照结点的划分标准可以分为三种,ID3,C4.5和CART树。ID3树以最大信息增益为划分标准,C4.5以最大信息增益率作为划分标准,CART树以最大基尼系数作为划分标准。公式如下。
ID3-信息增益
待分类的集合的熵和选定某个特征的条件熵之差。
E n t D = − Σ i V ∣ D i ∣ / ∣ D V ∣ ∗ l o g ( ∣ D i ∣ / ∣ D V ∣ ) Ent_D=-\Sigma_i^V|D_i|/|D_V|*log(|D_i|/|D_V|) EntD=−ΣiV∣Di∣/∣DV∣∗log(∣Di∣/∣DV∣)
G a i n i = E n t D − Σ j V i ( ∣ D j ∣ / ∣ D V i ∣ ∗ l o g ( ∣ D j ∣ / ∣ D V i ∣ ) Gain_{i}=Ent_D-\Sigma_j^{V_i}(|D_j|/|D_{V_i}|*log(|D_j|/|D_{V_i}|) Gaini=EntD−ΣjVi(∣Dj∣/∣DVi∣∗log(∣Dj∣/∣DVi∣)
C4.5-信息增益率
ID3基于信息增益的缺点:会倾向于选择类别多对应的特征作为划分特征,为改善基于信息增益的这个缺点,C4.5基于信息增益率。
G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) / I V ( a ) Gain\_ratio(D,a)=Gain(D,a)/IV(a) Gain_ratio(D,a)=Gain(D,a)/IV(a)
其中, I V ( i ) = − Σ v = 1 V ∣ D v ∣ / ∣ D ∣ ∗ l o g ( ∣ D v ∣ / ∣ D ∣ ) IV(i)=-\Sigma_{v=1}^{V}|D_v|/|D|*log(|D_v|/|D|) IV(i)=−Σv=1V∣Dv∣/∣D∣∗log(∣Dv∣/∣D∣)
信息增益率一般倾向于选择类别个数少对应的特征,在实际操作中,C4.5算法并不是直接选择信息增益率最大的属性作为划分结点的标准,而是先从候选属性中找出信息增益高于平均水平的属性,再从中选择信息增益率最高的。
CART树-基尼系数
G i n i ( D ) = 1 − Σ k = 1 K p ( k ) 2 Gini(D)=1-\Sigma_{k=1}^{K}p(k)^2 Gini(D)=1−Σk=1Kp(k)2
G i n i i n d e x ( D ) = Σ v V ∣ D v ∣ / ∣ D ∣ ∗ G i n i ( D v ) Gini_index(D)=\Sigma_v^V|D_v|/|D|*Gini(D_v) Giniindex(D)=ΣvV∣Dv∣/∣D∣∗Gini(Dv)
选择基尼系数最小的特征作为划分结点
决策树对应sklearn包中的DecisionTree模块,需要调节的参数包括:划分标准、树的最大深度、叶子节点划分包含的最少样本数、最大叶子节点个数等。
决策树在处理缺失值时,对于缺失的数据以不同的权重分配到多个类中,即对于缺失的数据权重为,缺失的数据在多个类中权重加起来为1,基于这样的样本分布计算信息增益等指标进行划分。
决策树在处理连续变量时,可以先对某个连续变量的值排序,取每两个值的中位数作为划分的结点,计算在哪个位置划分可以取得最好的划分指标值从而进行划分。(类似于XgBoost的预排序)
决策树的优点:1. 易于理解,可解释性强; 2. 模型简单,建模容易; 3. 可以处理缺失值;
缺点: 1. 受噪声值影响较大 2. 易过拟合
随机森林
随机森林是一种bagging集成模型,基学习器是决策树,通过构建多个弱分类器即决策树,并通过多棵决策树进行投票得到最后的分类结果。
随机体现在数据和特征两个层面:
- 数据的随机性:对样本数据有放回抽样(bootsrap,1/e的样本不会被抽到,袋外数据),基于小样本集合训练决策树
- 特征的随机性:对特征进行列抽样,每次抽取少量的特征进行训练。
随机森林对应sklearn包中的RandomForest模块,需要调节的参数包括:森林中树的个数、划分标准、树的最大深度、叶子节点划分包含的最少样本数、每棵树使用的特征数等。
法一:看每个特征在多个决策树中分布的层数,层数越靠上说明特征越重要
法二:基于随机森林的袋外数据,对特征X给予一定程度的随机扰动,计算扰动后的袋外误差,平均袋外误差越大的则认为越重要
随机森林的优缺点:
优点:1. 建模容易,可解释性强; 2. 分类效果好;3.小样本抽样,可有效防止过拟合,泛化能力强;4. 能够处理高维数据且可做特征选择;5. 可以有效处理缺失值; 6. 可以平衡不平衡样本数据;
缺点:1.易受噪声值影响; 2. 回归能力欠缺。
朴素贝叶斯
朴素贝叶斯是以贝叶斯定理为基础并且假设特征条件之间相互独立的分类方法,是一种生成模型,先通过已给定的训练集,以特征词之间独立作为前提假设,学习从输入到输出的联合概率分布,再基于学习到的模型,输入X求出使得后验概率最大的输出Y。
朴素指朴素贝叶斯的前提假设是各个特征之间相互独立,假设比较苛刻,现实中难以满足。
判别模型通过学习一个映射函数,可以将特征变量X映射至标签y。包括逻辑回归、决策树、SVM、CRF等。
生成式模型通过构建特征变量X和不同标签y的联合概率分布,对比选择联合概率最大的标签作为预测标签。包括朴素贝叶斯、HMM等。
极大似然估计是一种参数估计的算法,通过构建以未知参数为基础的可观测值分布的目标函数,并最大化这个目标函数来估计未知参数。最大后验估计是根据经验数据获得对难以观察的量的点估计。与最大似然估计类似,但是最大的不同是,最大后验估计的融入了要估计量的先验分布在其中。故最大后验估计可以看做规则化的最大似然估计。
SVM是一种二分类算法,寻找一个超平面可以最大化分类间隔,判别模型。
合页损失函数(hinge loss)
L ( x ) = m a x ( 0 , 1 − y ∗ y ′ ) L(x)=max(0,1-y*y') L(x)=max(0,1−y∗y′)
- 减少需要求的参数的个数
- 方便引入核函数
SMO算法的大体流程是
- 从 α 1 , α 2 , … , α m \alpha_1,\alpha_2,\dots,\alpha_m α1,α2,…,αm中选取一对进行优化;
- 将除了上步挑选的一对参数以外的其他参数看作常数,从而转化为一个二次函数求最优的问题,对两个参数不断更新求得最大值。
核函数可将SVM从能解决线性问题延展为能解决非线性问题。常用的核函数包括线性核函数、多项式核函数、高斯核函数(也称径向基核函数)、sigmoid核函数等,对应的公式如下。
线性核函数
k ( x , z ) = x ∗ z k(x,z)=x*z k(x,z)=x∗z
多项式核函数
k ( x , z ) = ( γ ∗ x ∗ z + r ) d k(x,z)=(\gamma*x*z+r)^d k(x,z)=(γ∗x∗z+r)d
高斯核函数(拟合效果好,容易过拟合)
k ( x , z ) = e − ∣ x − z ∣ 2 / 2 ∗ σ 2 k(x,z)=e^{-|x-z|^2/2*\sigma^2} k(x,z)=e−∣x−z∣2/2∗σ2
SVM的优缺点:
优点:1. 模型分类效果好 2. 可以解决非线性问题 3. 对异常值不敏感 4. 适用于高维数据
缺点:1. 对于大样本数据集复杂度较高; 2. 不易处理缺失数据
LR适用于处理大样本数据集,但是对于高维特征不易处理,且不能处理非线性问题 SVM适用于处理高维特征数据集,但不适合处理大样本数据集,可以通过核函数处理非线性问题
如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。
- 计算测试数据与各个训练数据之间的距离;
- 按照距离的递增关系进行排序;
- 选取距离最小的K个点;
- 确定前K个点所在类别的出现频率;
- 返回前K个点中出现频率最高的类别作为测试数据的预测分类。
KNN的优缺点:
优点:1.理论成熟,思想简单;2.可以用于非线性分类; 3. 适用于类域的交叉或重叠较多的待分类样本集
缺点:1. 时间复杂度较高 2. 样本不平衡时对稀有类别预测效果差 3. K的选择比较困难
K值较小,则模型复杂度较高,容易发生过拟合,学习的估计误差会增大,预测结果对近邻的实例点非常敏感。K值较大可以减少学习的估计误差,但是学习的近似误差会增大,与输入实例较远的训练实例也会对预测起作用,使预测发生错误,k值增大模型的复杂度会下降。在应用中,k值一般取一个比较小的值,通常采用交叉验证法来来选取最优的K值。
Boosting集成算法,初始时给每个样本分配同样的权重值,构建一棵决策树,依据分类结果对样本权重进行调整,加大分错样本的权重值使分类器更注重这些样本,依据分类器分类的效果给每个分类器赋一个权值,最后将这些分类器加权组合起来得到最终的预测结果。
指数损失函数
L = e x p ( − y ∗ f ( x ) ) L=exp(-y*f(x)) L=exp(−y∗f(x))
Adaboost优缺点:
优点:1. 分类效果好 2. 基分类器多样
缺点: 1. 不能并行 2. 数据不平衡易影响效果
基于前向分布算法,加法模型,只能使用CART回归树作为基分类器,每次拟合上一次损失函数的负梯度值,不断迭代,得到最终分类器。
1.样本选择:Bagging每次针对少量样本,Boosting每次针对所有样本;
2.样本权重: Bagging每个样本的全中国相同,Boosting每个样本权重不同,错分类样本的权值较大;
3.基学习器权重:Bagging每个基学习器权重相同,Boosting每个基学习器分配不同的权重;
4.并行计算:Bagging可以并行计算,Boosting因为是加法模型,只能串行;
5.方差和偏差:Bagging通过减少方差提升模型性能,Boosting通过减少偏差提升模型性能。
GBDT算法优缺点:
优点:1. 预测精度高 2. 适合低维数据 3. 能处理非线性数据 4. 对异常值鲁棒性强
缺点:1. 难以并行训练数据 2. 数据维度较高会导致时间复杂度较高。
XgBoost是GBDT的工程实现,将GBDT的一阶泰勒展开扩展至二阶泰勒展开。通过不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差。当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数,最后只需要将每棵树对应的分数加起来就是该样本的预测值。
1.将一阶泰勒展开扩展至二阶泰勒展开
2.基分类器可以是决策树也可以是线性分类器
3.在损失函数中加入了正则项
4.采样技术中添加列采样技术
5.可以自动学习缺失值分裂方向
6.支持并行(不是指构建多棵决策树的并行,是指特征粒度的并行。每个基分类器的生成还是串行的,但是基分类器中每个特征的最优切分点的确定是并行的,每次节点分裂的时候各个特征的增益计算可以开多线程进行。)
1.xgboost在构建决策树时,为了在分岔的时候判断分割点,需要先对每个特征的值预排序,并存储到内存中,比较消耗时间
2. 针对缺失值和稀疏数据的处理方法:当样本某个特征缺失时无法针对这个特征划分,xgboost将样本分别划分到左节点和右节点,然后计算增益,哪边增益大就划分到哪边。
XgBoost对应xgboost包中的XGBClassifier模块,需要调节的参数包括三个部分:general parameters,booster parameters和learning task parameters。 general parameters中的booster可调整每一次迭代中模型的种类,包括线性模型和树模型。booster parameters中可调整:eta学习率,每一步缩小权重shrinkage,提高模型的鲁棒性;min_child_weight,孩子结点的最小权重,可防止过拟合;max_depth:树的最大深度,防止过拟合;max_leaf_odes:叶子节点的最大值;gamma:一个阈值,当增益大于这个阈值时再分裂;subsample:抽样样本比例;colsample_bytree:列抽样比例;lambda:L2正则项。
它和XgBoost一样是对GBDT的高效实现,对xgboost的改进,原理上它和GBDT及XGBoost类似,都采用损失函数的负梯度作为当前决策树的残差近似值,去拟合新的决策树。
1.基于直方图的决策树算法
2. 带深度限制的leaf-wise的叶子生长策略
3. 直方图做差加速
4. 直接支持类别特征,不需要onehot从而加速训练
5. cache命中率优化
1.基于直方图的决策树算法:由于xgboost中需要针对每个特征预排序在选择分割点比较浪费时间,lightgbm中先把连续的负点特征值离散化成k个整数,构造一个宽度为k的直方图,遍历数据时根据离散化后的值作为索引在直方图中累计统计量。遍历数据后累计需要的统计量根据直方图的离散值遍历寻找最优分割点。
2.带深度限制的leaf-wise叶子生长策略。xgboost主要基于level-wise,即针对同一层叶子节点不考虑增益大小以及是否需要分裂全部分裂,一方面可以防止过拟合,但另一方面也会导致大的开销。lightgbm基于leaf-wise,从当前叶子节点中找到分裂增益最大的叶子,可以降低误差提升精度,但可能会导致过拟合。因而lightgbm还增加了一个深度限制,防止过拟合。
3.直方图加速:一个叶子的直方图可以由父亲直方图和兄弟直方图做差得到,直方图做差只需要遍历k个桶,提高计算效率。
max_depth:树的最大深度
min_data_in_leaf:叶子包含的最少样本数
feature_fraction:每次特征抽样的比例
bagging_fraction:每次迭代用的数据比例
early_stopping_round:早停
lambda:正则化
learning_rate:学习率
1.更快的训练效率
2.低内存使用
3.更高的准确率
4.支持并行化学习
5.可处理大规模数据
6.支持直接使用category特征
基于交叉验证的思想,每次选择一折作为测试集,其余作为训练集,基于多个基分类器进行分类,得到不同分类器在多份测试集上的分类结果,以分类结果作为特征构建二级分类器(元分类器,一般选择逻辑回归),得到最后的分类结果。
Blending与Stacking大致相同,主要区别在于训练集不是通过K-Fold的CV策略来获得预测值从而生成第二阶段模型的特征,而是建立一个Holdout集。把Stacking流程中的K-Fold CV 改成 HoldOut CV,仅使用了很少的数据。
最大熵模型是运用最大熵思想的多分类模型。最大熵的思想是,当你要猜一个概率分布时,如果你对这个分布一无所知,那就猜熵最大的均匀分布,如果你对这个分布知道一些情况,那么,就猜满足这些情况的熵最大的分布。
每一个x,都对应一个特定的概率分布P(y|x),每一个概率分布都会有一个熵,此时,所谓的最大熵,就是最大化这些所有的概率分布的熵的和,由于每个x都有一个经验概率P~(x),我们还需要对所有这些熵进行加权求和,以此表示哪一个概率分布的熵的最大化更加重要。(作者:milter)
在求解时和SVM一样用拉格朗日乘子法求解。
从最大熵的思想出发得出的最大熵模型,最后的最大化求解就是在求P(y|x)的对数似然最大化。逻辑回归也是在求条件概率分布关于样本数据的对数似然最大化。二者唯一的不同就是条件概率分布的表示形式不同。
K均值聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。
两个样本点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1,y_1),(x_2,y_2) (x1,y1),(x2,y2)
欧氏距离 ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 \sqrt{(x_1-x_2)^2+(y_1-y_2)^2} (x1−x2)2+(y1−y2)2
曼哈顿距离 ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ |x_1-x_2|+|y_1-y_2| ∣x1−x2∣+∣y1−y2∣
余弦距离 ( x 1 ∗ x 2 + y 1 ∗ y 2 ) / ( x 1 2 + y 1 2 ) ∗ ( x 2 2 + y 2 2 ) (x_1*x_2+y_1*y_2)/\sqrt{(x_1^2+y_1^2)*(x_2^2+y_2^2)} (x1∗x2+y1∗y2)/(x12+y12)∗(x22+y22)
1.初始化k个簇中心;
2.更新所有样本点簇归属:样本点到哪个簇中心点最近就属于哪个簇;
3.重新计算每个簇的中心点(直到簇中心点不再变化或达到更新最大次数)。
手肘法(基于SSE)
轮廓系数法(基于轮廓系数)
优点:1.简单、快速; 2.对处理大数据集,该算法保持可伸缩性和高效性; 3.算法的可解释度比较强;4.只需调节K一个参数
缺点:1.K值不易确定;2.聚类中心初始点选择会影响聚类效果; 3.不适用于发现非凸形状的簇;4.受异常值影响较大
多个高斯分布的加权和,每个高斯分布可以看作一个类,试图找到一个多维高斯概率分布的混合,以模拟任何输入数据集。
需要估计的参数包括两部分,一部分是不同高斯分布对应的均值和标准差,另一部分是多个高斯分布的权值。
参数估计采用的是EM算法。
无监督学习的降维方法,将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。寻找数据集中方差最大的方向作为主成分分量的轴。
1.对所有的样本进行中心化: 样本的每个特征减去该特征均值;
2.计算样本的协方差矩阵;
3.对协方差矩阵进行特征值分解;
4.取出最大的n’个特征值对应的特征向量, 将所有的特征向量标准化后,组成特征向量矩阵;
5.用特征向量矩阵乘以样本集中的每一个样本x(i),转化为新的样本,即为降维后的输出样本。
监督学习的降维方法,寻找一个投影矩阵,将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
相同点:
1.PCA和LDA都是经典的降维算法;
2.PCA和LDA都假设数据是符合高斯分布的;
3.PCA和LDA都利用了矩阵特征分解的思想。
不同点:
1.PCA为非监督降维,LDA为有监督降维
2.PCA希望投影后的数据方差尽可能的大(最大可分性),因为其假设方差越多,则所包含的信息越多;而LDA则希望投影后相同类别的组内方差小,而组间方差大。LDA能合理运用标签信息,使得投影后的维度具有判别性,不同类别的数据尽可能的分开。
3.LDA可能会过拟合数据。
通过比较特征的发散性和特征与目标的相关性来进行特征选择,特征选择过程与后续学习器无关
1.方差选择法:先计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征。若特征的方差小于阈值,则代表该特征的发散性太弱。
2.相关系数法:计算特征和标签的相关系数。
3.卡方检验法:只能用于二分类,检验定性自变量对定性因变量的相关性。
4.互信息法:一个随机变量(标签y)由于已知另一个随机变量(特征X)而减少的不肯定性。
将特征选择任务看作特征子集搜索任务,根据预测效果评分来为学习器“量身定制”特征子集,相较于过滤法,能使学习器的性能更佳,缺点即是计算开销往往也更大。(特征选择与模型训练相结合)
1.遗传算法
将特征选择和学习器的训练过程融为一体,即学习器自动的进行了特征选择。
1.L1正则化
2.决策树
##推荐系统
用户画像是对用户特征打标签。信用评级一般先对连续特征进行分箱操作,然后对特征进行建模,用LR进行预测得到不同指标权重,构建评分卡。
基于LightGBM构建决策树发现规则(不用手动构建规则),每个叶子节点对应一个特征,对特征进行onehot编码,并基于编码后的特征用逻辑回归训练,得到可以推荐的目标用户。
Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。算法已经被广泛的应用到商业、网络安全等各个领域。
支持度:同时购买{X,Y}的订单数 / 总订单数
置信度:同时购买{X,Y}的订单数 / 购买X的订单数
提升度X->Y=置信度 / 支持度
HMM即隐马尔科夫模型,有向无环图模型,生成模型,描述的是由一个隐藏的马尔可夫链随机生成不可观测的状态随机序列,再由各个状态生成一个观测而产生观测随机序列的过程。
HMM中包括状态序列和观测序列,隐马尔科夫模型由初始状态概率向量 π \pi π,状态转移概率矩阵A和观测概率矩阵B决定, π \pi π和A决定状态序列,B决定观测序列,因此,隐马尔科夫模型可以用三元符号表示,即 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)
状态转移概率矩阵A和初始状态概率向量确定了隐藏的马尔可夫链,生成不可观测的状态序列,观测概率矩阵B确定了如何从状态生成观测,与状态序列相结合确定了产生的观测序列
HMM的两个假设
1.齐次马尔可夫性假设:隐藏的马尔可夫链在任意t时刻的状态只依赖于t-1时刻的状态
2.观测独立性假设:任意时刻的观测只依赖于该时刻的马尔可夫链的状态
1.概率计算问题:给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列O,计算在模型 λ \lambda λ下观测序列出现的最大概率。采用前向后向算法。
2.学习问题:即给定观测序列O,估计模型的参数 λ \lambda λ, 使得在该参数下观测序列出现的概率最大。极大似然估计,采用EM算法。
3.解码问题。给定模型 λ = ( A , B , π ) \lambda=(A,B,\pi) λ=(A,B,π)和观测序列O,计算最有可能产生这个观测序列的隐含序列X。采用维特比算法。
CRF即条件随机场,无向图模型,判别模型,常用于标注或分析序列资料,如自然语言文字或是生物序列。设X与Y是随机变量,P(Y|X)是给定X的条件下Y的条件概率分布,若随机变量Y构成一个由无向图G=(V,E)表示的马尔科夫随机场。则称条件概率分布P(Y|X)为条件随机场。
1.HMM是生成模型,CRF是判别模型
2.HMM是概率有向图,CRF是概率无向图
3.HMM易陷入局部最优,CRF可求全局最优。
4.CRF相较于HMM可充分利用上下文信息。
1. 分类模型指标及应用场景
Accuracy:当样本不平衡时不适用
Precision:精确率;
Recall:召回率;
F1
AUROC:TPR为纵坐标(灵敏度),FPR为横坐标,FPR=1-特异度
混淆矩阵
模型评价指标选取及对应场景:1.与数据集是否平衡有关,数据集不平衡不能采用准确率,可以采用AUC,因为AUC对于样本数据集的变化相对保持稳定,可以更好衡量模型本身性能,区分不同类别下模型分类的好坏 2. 与任务有关,若任务更关注负样本,则会更关注recall,若更关注预测为正样本的准确性,则会更关注precision
2. 怎样解决样本不平衡的情况
1.通过欠采样或者重采样
2. 通过正负样本的惩罚权重(如SVM中给不同的样本设置不同的权重)
3. 通过组合或者集成的方法(例如随机森林每次从负样本抽取和正样本差不多数量构成小样本然后集成训练)
4. 基于SMOTE插值等方法进行数据合成
5. 把它看做一分类或异常检测问题 (oneclass-SVM)
3. 过拟合的含义、原因及解决方法
含义:模型在训练集上的性能远远好于在测试集上的性能,模型学习到了一些属于样本特有的规则,泛化能力差,则发生了过拟合
原因:
1.假设在训练集上成立在测试集不成立;
2.数据集太小
3.噪声值过多
4.模型选择的特征过于复杂
解决方法:
1.增大样本数据量
2.正则化
3.树模型可以通过剪枝
4.SVM可以把高斯核用线性核代替
5.深度学习中,early stopping, dropout, batch normalization
4. L1和L2正则化的原理;L1为什么可以做特征选择
L1使用一范数,L2使用二范数,L1会得到稀疏解,可以起到降维的作用,L2可以得到均衡解。
L1可以做特征选择的原因:在原函数的基础之上,添加L1正则项之后对函数进行求导,正则项部分产生的导数在Y轴左侧是-C,在右侧是C,只要原目标导数绝对值小于C,则目标函数在原点左侧递减,原点右侧递增,则最优值在原点处取得,得到稀疏解。对于L2正则化项求导之后,在原点处的导数是0,只要远目标函数在原点处导数不为0,则最优点不会在原点处取得。(L1服从拉普拉斯先验,L2服从高斯分布先验)
动态规划算法,每个子部分只存储最优子路径,最后求得最优路径,而不是暴力枚举所有路径来获得最优路径
7. jieba分词的原理
构建字典,基于字典树高效查找,对于未登录词,采用HMM和维特比算法求结果
8. 数据归一化和数据标准化的区别;哪些模型需要数据归一化
数据归一化通过对原始数据进行线性变换把数据映射到[0,1]之间(minmaxscalar),归一化可以消除量纲对最终结果的影响,便于不同单位或量级的指标能够进行比较和加权;标准化常用的方法是z-score标准化,经过处理后的数据均值为0,标准差为1。
归一化和标准化的区别:归一化是将样本的特征值转换到同一量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归一化的一种。标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。
主成分分析、Adaboost、SVM、逻辑回归、KNN等,如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。树模型不需要归一化