算法面经汇总(1)

总结自以下经验贴:

  1. https://www.nowcoder.com/discuss/167046

  2. https://www.nowcoder.com/discuss/205497

  3. https://github.com/elviswf/DeepLearningBookQA_cn

本总结偏向NLP和机器学习,对于计算机视觉和推荐系统等方向的面试问题不进行收集.

算法面经汇总(2)

算法面经汇总(2)

项目

简历上的项目/比赛/实习是必聊的,甚至有的公司在一面基本只聊项目/比赛/实习,相关细节问的很多,而没怎么问通用的技术问题

⭐️ 项目中用到哪些技术 ,然后会针对这些技术的知识点来提问

⭐️ 项目中XXX(神经网络)等算法的性能为什么比不过XXX(gbdt)

以Kaggle比赛为例,为什么基于LSTM与Glove的模型架构比不过基于Bert等预训练模型?

  • 预训练模型可以获得具有上下文语义的Embedding,通常来说效果比固定的Glove等要好
  • 比赛的数据量较少,使用Bert等模型只需要fine-tune,而不像基于LSTM的模型还有大量的参数需要从头训练

⭐️ 项目/比赛还有什么改进空间,如果继续做下去,你会怎么做?

以Kaggle比赛为例,改进空间有:

  • 尝试在领域特定语料,也就是问答数据集上进行进一步的pre-train
  • 尝试加权求和多层的CLS输出,权重自动学习,这是别的队伍参考ELMO的做法
  • 继续尝试半监督学习
  • 继续尝试多任务学习以及自定义Loss

⭐️ 项目有什么商用价值

⭐️ 项目或比赛难点在哪,遇到了什么困难,怎么解决的

问题解决方法
数据量少,可用于训练的数据一共6000多条,另外public测试集数据仅占总的测试数据的13%,因此很可能遇到shakeup很严重的情况。(1)使用数据增强,增大数据量的同时提高模型的鲁棒性;(2)使用交叉验证、Dropout、Ensemble等方法防止过拟合
个别标签列有严重的类别不平衡问题尝试了(1)使用class_weight自定义损失函数,但效果不好,主要是权重难确定(2)过采样,有的列有提高,有的列却下降,因为这相当于sample_weight,而每个sample有多个标签,该sample对有的标签来说是少类,对其他标签却是多类(3)后处理策略

⭐️ 介绍下在项目/比赛用到的评价指标

Kaggle比赛中用到的是spearman秩相关系数

在这里插入图片描述
⭐️ 为什么这个比赛需要用GroupKFold

https://blog.csdn.net/kancy110/article/details/74924589

GroupKFold的特点是同一组的样本不可能同时出现在同一折的测试集和训练集中。比赛的数据集中不同样本的标题可能是相同的,所以为了防止data leakage的问题,可以用标题作为分组依据,确保标题相同的样本不会同时在一个fold中的训练集和验证集中都出现

⭐️ 在项目/比赛中学到了什么

  • 多种预训练模型,如Bert、Roberta的使用
  • 分层学习率,SWA等训练策略
  • Github合作过程

⭐️ 画网络结构

Github Repo

⭐️ 选用的什么优化器

Adam

⭐️ 介绍一下SWA
在这里插入图片描述

⭐️ 模型融合使用了哪些模型

bert-wwm-uncased,bert-wwm-cased,bert-large-uncased,roberta-large,

⭐️ 用什么手段刷比赛的指标

Ensemble和后处理

⭐️ 对于比赛自己有什么反思,有什么不足的地方,和Top3的方案相比,主要差别在哪

  • 加入比赛的时间比较迟,有些想法来不及尝试;

  • 和Top3方案比,差别在没有用好半监督学习、进一步预训练、加权求和多层的CLS输出、Ensemble的模型多样性

编程

算法和数据结构

面试题——算法与数据结构

操作系统、计组、计网、数据库、数值计算

⭐️ 死锁如何产生,如何解决

⭐️ 线程和进程的原理和关系

⭐️ sql groupby的使用

给定一个表,列名如下,
user | video | time
查询每个用户第二个看得视频,请写出sql语句。

⭐️ 隔离级别

⭐️ 脏读幻读

⭐️ 代码求一个数的平方根(牛顿迭代或者二分)

⭐️ 数据库中的事务指的是什么

⭐️ 从搜谷歌到返回页面,发生了什么

python

⭐️ read readline readlines的区别

⭐️ *args **kwargs的含义与用法

⭐️ 多赋值

⭐️ 变量前面一个下划线、变量前面两个下划线、前面和后面各一个下划线(_var、__var、_var_)

⭐️ 数组,元组,集合,字典的不同作用

⭐️ 类里边的self的作用

⭐️ 遍历文件夹

⭐️ 生成器和迭代器的区别

⭐️ 什么是装饰器

⭐️ copy、deepcopy和赋值的区别

⭐️ python多线程的问题

⭐️ 垃圾回收机制

⭐️ 内存管理,内存池最大多少

⭐️ 可变不可变数据结构

⭐️ lambda与def 定义函数的区别

⭐️ 函数的参数传递

⭐️ yeild是什么,与return的区别

⭐️ python2和python3的map的差别

tensorflow、pytorch

⭐️ TF多卡训练,一个模型在一张卡上面放不下,怎么在多卡中运行(同理,pytorch如何实现多卡训练)

⭐️ TF中卷积是如何计算的(同理,可深究自己项目所使用的tf函数的实现)

⭐️ TF如何读取数据

⭐️ TF写一个全连接层

Linux

⭐️ linux找上一个使用命令

⭐️ vim定位到第一行

⭐️ awk

⭐️ nohup

数学

⭐️ 极大似然估计的原理,给定一个区间a到b的均匀分布,求极大似然估计

[1] 均匀分布参数的极大似然估计

这篇文章是求 [0,Θ]的极大似然估计,求[a,b]的极大似然估计过程与其类似。

⭐️ 全概率公式,贝叶斯公式

[1] 浅谈全概率公式和贝叶斯公式

[2] 条件概率、贝叶斯公式和全概率公式

⭐️ 最小二乘法推导

⭐️ 自助法采样:给定n个小球,有放回地采样n次。当n趋向于无穷的时候,某小球始终不被取到的概率是多少?

lim ⁡ n → ∞ ( 1 − 1 n ) n = e \lim_{n\rightarrow \infty} (1-\frac1n)^n=e nlim(1n1)n=e

这就是两个重要极限之一,也是 e e e 的定义之一

⭐️ 矩阵的秩是什么

⭐️ T分布知道吗

三大抽样分布:卡方分布,t分布和F分布的简单理解

⭐️ 极限知道吗

⭐️ 几种参数估计的联系与区别: MLE/MAP/贝叶斯

花书:P82/85/87 Chapter 5.5

⭐️ 圆上随机取三点,组成锐角三角形的概率

圆环上随机取3个点组成一个锐角三角形的概率

⭐️ 凸集的定义,凸函数定义

AI通用

⭐️ 过拟合的原因,解决办法,如何从模型结构上解决过拟合?

原因:数据太少或模型太复杂.

解决办法

  • 获取更多数据或进行数据增强

  • 给目标函数添加正则化项,如 L 1 L_1 L1 L 2 L_2 L2正则化

  • Early Stopping; 花书7.8节解释了Early Stopping为何具有正则化效果

  • Bagging等Ensemble方法

  • Dropout.

  • 参数共享等简化模型的方法

  • Batch Normalization

后3种(Dropout、参数共享、BN)可以看做是在模型结构上解决过拟合的办法.

⭐️ 正则项的原理、梯度公式、L1正则化和L2正则化的区别、应用场景

见:正则项的原理、梯度公式、L1正则化和L2正则化的区别、应用场景

⭐️ 权重衰减相当于哪个正则项

[1] 权重衰减和L2正则化是一个意思吗? - SleepyBag的回答 - 知乎

[2] L2正则=Weight Decay?并不是这样看完AdamW后回顾这篇文章

L2正则化是在目标函数中直接加上一个正则项,直接修改了我们的优化目标。

权值衰减是在训练的每一步结束的时候,对网络中的参数值直接裁剪一定的比例,优化目标的式子是不变的。

在使用标准的梯度下降法时二者是同一个东西,因为此时L2正则化的正则项对梯度的影响就是每次使得权值衰减一定的比例。

但是在使用一些其他优化方法的时候,就不一样了。比如说使用Adam方法时,每个参数的学习率会随着时间变化。这时如果使用L2正则化,正则项的效果也会随之变化;而如果使用权值衰减,那就与当前的学习率无关了,每次衰减的比例是固定的。

⭐️ 为什么只对权重做正则惩罚,而不对偏置做权重惩罚

花书7.1节:

在这里插入图片描述

⭐️ L1 loss和L2 loss的区别

[1] Differences between L1 and L2 as Loss Function and Regularization

[2] 参考资料1的翻译

[3] 讨论参考资料1所说的L2 loss更stable的帖子

  • 对于细微的数据误差,L2 Loss更加稳定,因为平方会使得小于1的误差更小

  • 但是L1 loss 对于数据中的异常点更加鲁棒. 如果数据集中存在异常点,其误差一般比正常点更大,假如误差大于1,这种差距就会被平方放大,因此模型会对异常点更加敏感,模型就需要调整以适应这些异常点,这将会牺牲很多正常的样本的预测精度。

  • L1范数的计算效率不如平方L2范数

⭐️ 方差-偏差分解

西瓜书 2.5节

⭐️ 数据不平衡的处理方法

[1] 如何处理数据中的「类别不平衡」

[2] 类别不平衡问题 —— 采样方法

[3] 如何处理不平衡数据集的分类任务

[4] 使用class weight和sample weight处理不平衡问题

[5] 5分钟理解Focal Loss与GHM——解决样本不平衡利器

从指标的角度

  • 使用F1值、AUC等作为指标

从数据的角度

  • 获得更多不平衡类的数据
  • 随机欠采样、随机过采样、SMOTE过采样.
方法优点缺点
随机欠采样数据集较大时减少训练时间和资源消耗可能会损失重要的信息
随机过采样没有信息损失其一般比随机欠采样效果好更容易过拟合
SMOTE过采样降低了过拟合的风险若插值得到的样本不处于类别的边界会无效或有害 [ 2 ] ^{[2]} [2]

从算法的角度

  • 使用现有的集成模型,例如随机森林、XGBoost
  • 调整分类阈值
  • 自定义损失函数:sample weight、class weight、focal loss [ 5 ] ^{[5]} [5]
  • 把识别小类样本的任务当做无监督的异常点检测任务
  • 使用Ensemble与欠采样结合,即EasyEnsemble [ 2 ] ^{[2]} [2]

⭐️ 输入数据归一化的作用

在这里插入图片描述

[1] Why do we have to normalize the input for an artificial neural network?

上图来自吴恩达的机器学习视频. 进行归一化可以使得所有特征的规模接近,让代价函数更加对称,加速训练过程并降低陷入局部最优解的风险 [ 1 ] ^{[1]} [1].

⭐️ 数据增强方法

[1] NLP数据增强方法总结及实现

NLP的数据增强方法:回译、同义词替换、随机插入、随机交换、随机删除

⭐️ Bad Case 分析

[1] Bad Case Analysis

统计机器学习

NLP岗的重点是(由强到弱):CRF、HMM、LR、SVM、朴素贝叶斯、Bagging、Boosting、XGBOOST、LGB、GBDT、k-means;如果只是深度学习岗,应该CRF和HMM没有那么重点考察.

LR & SVM

⭐️ LR推导,从logit定义推到损失函数,再到梯度

[1] 手推逻辑斯蒂回归——以向量形式

⭐️ 逻辑回归不能解决什么问题,其损失函数的实际意义?

什么鬼,不能解决的问题多了去了.

损失函数的实际意义是负对数似然 (Negative Log Likelihood)

⭐️ 为什么用 log ⁡ \log log 损失而不是均方误差损失 MSE?或:为什么使用最大似然估计而不用最小二乘法?

[1] 逻辑回归损失函数为什么使用最大似然估计而不用最小二乘法?
[2] 最小二乘、极大似然、梯度下降有何区别?

第一个问题:

  • 使用负对数似然的LR的目标函数是任意阶可导的凸函数,而使用均方误差得到的不是凸函数 [ 1 ] ^{[1]} [1]

第二个问题:

  • 使用最小二乘法前提假设是标签变量 y y y 服从高斯分布,分类问题的标签符合的是二项分布,显然不适合 [ 2 ] ^{[2]} [2]
  • 况且,使用最小二乘法,也就是损失函数使用均方误差,这不是凸函数 [ 1 ] ^{[1]} [1]

⭐️ 如何用LR解决非线性可分问题

[1] 逻辑斯蒂回归能否解决非线性分类问题?
[2] 机器学习之核函数逻辑回归(机器学习技法)

只用原始特征,LR无法解决不能非线性可分的问题,有两种方法可以让LR适用于非线性可分问题:

  1. 先把特征离散化,然后做组合特征,可以实现一定程度的非线性.
  2. 使用kernel trick. 对于使用了L2正则化的LR,目标函数为:

J ( θ ) = λ 2 ∥ w ∥ 2 2 − 1 m ∑ i = 1 m y i log ⁡ ( h ( x i ) ) + ( 1 − y i ) log ⁡ ( 1 − h ( x i ) ) = λ 2 w T w + 1 m ∑ i = 1 m y i log ⁡ ( 1 + exp ⁡ ( − w T x i ) ) + ( 1 − y i ) log ⁡ ( 1 + exp ⁡ ( w T x i ) ) \begin{aligned} J(\boldsymbol \theta) &=\frac\lambda2\Vert \boldsymbol w\Vert_2^2 -\frac1m\sum_{i=1}^m y_i\log(h(\boldsymbol x_i)) + (1-y_i)\log(1-h(\boldsymbol x_i)) \\ &=\frac\lambda2\boldsymbol w^T \boldsymbol w+\frac1m\sum_{i=1}^m y_i\log(1+\exp({-\boldsymbol w^T\boldsymbol x_i})) + (1-y_i)\log(1+\exp({\boldsymbol w^T\boldsymbol x_i})) \\ \end{aligned} J(θ)=2λw22m1i=1myilog(h(xi))+(1yi)log(1h(xi))=2λwTw+m1i=1myilog(1+exp(wTxi))+(1yi)log(1+exp(wTxi))

可以证明 w \boldsymbol w w的最优解可以表示为样本 x i \boldsymbol x_i xi的线性组合 [ 2 ] ^{[2]} [2] w ∗ = ∑ i = 1 m β i x i \boldsymbol w^*=\sum_{i=1}^m \beta_i \boldsymbol x_i w=i=1mβixi,其中 m m m为样本数量.

不失一般性,对 w \boldsymbol w w的求解可以转化为对 β \boldsymbol \beta β的求解:

C ( β ) = λ 2 ∑ i = 1 m ∑ j = 1 m β i β j x i T x j + 1 m ∑ i = 1 m y i log ⁡ ( 1 + exp ⁡ ( − ∑ j = 1 m x i T x j ) ) + ( 1 − y i ) log ⁡ ( 1 + exp ⁡ ( ∑ j = 1 m x i T x j ) ) = λ 2 ∑ i = 1 m ∑ j = 1 m β i β j κ ( x i , x j ) + 1 m ∑ i = 1 m y i log ⁡ ( 1 + exp ⁡ ( − ∑ j = 1 m β j κ ( x i , x j ) ) ) + ( 1 − y i ) log ⁡ ( 1 + exp ⁡ ( ∑ j = 1 m β j κ ( x i , x j ) ) ) \begin{aligned} C(\boldsymbol \beta)&=\frac\lambda2\sum_{i=1}^m\sum_{j=1}^m \beta_i \beta_j\boldsymbol x_i^T \boldsymbol x_j+\frac1m\sum_{i=1}^m y_i\log(1+\exp(-\sum_{j=1}^m\boldsymbol x_i^T \boldsymbol x_j)) + (1-y_i)\log(1+\exp(\sum_{j=1}^m\boldsymbol x_i^T \boldsymbol x_j)) \\ &=\frac\lambda2\sum_{i=1}^m\sum_{j=1}^m \beta_i \beta_j\kappa( \boldsymbol x_i, \boldsymbol x_j)+\frac1m\sum_{i=1}^m y_i\log(1+\exp(-\sum_{j=1}^m \beta_j\kappa( \boldsymbol x_i, \boldsymbol x_j))) + (1-y_i)\log(1+\exp(\sum_{j=1}^m \beta_j\kappa( \boldsymbol x_i, \boldsymbol x_j))) \\ \end{aligned} C(β)=2λi=1mj=1mβiβjxiTxj+m1i=1myilog(1+exp(j=1mxiTxj))+(1yi)log(1+exp(j=1mxiTxj))=2λi=1mj=1mβiβjκ(xi,xj)+m1i=1myilog(1+exp(j=1mβjκ(xi,xj)))+(1yi)log(1+exp(j=1mβjκ(xi,xj)))

其中 κ ( ⋅ , ⋅ ) \kappa(\cdot,\cdot) κ(,)为核函数.

但是注意,SVM转化为对偶问题后,求解过程只需要计算与少数几个支持向量的内积,这个在进行复杂核函数计算时优势很明显,能够大大简化计算量。而加入核函数的LR则需要两两计算核函数,计算量太过庞大

⭐️ LR是凸问题吗

逻辑斯蒂回归的目标函数是负对数似然函数,是凸函数,所以LR是凸问题.

⭐️ 讲一讲SVM (建模思想,函数间隔和几何间隔的几何含义,损失函数推导,对偶问题推导、核函数公式和作用,为什么转为对偶问题)

见:SVM笔记

⭐️ 拉格朗日乘子法能否求解非凸的目标函数问题

[1] 拉格朗日乘子法与KKT条件详解

对于等式约束的优化问题,可以应用拉格朗日乘子法去求取最优值;

如果含有不等式约束,可以应用KKT条件去求解。KKT条件是拉格朗日乘子法的推广。

当然,这两个方法求得的结果只是必要条件,只有当目标函数是凸函数的情况下,才能保证是充分必要条件。

⭐️ SVM时间复杂度

[1] 支持向量机(Support Vector Machine,SVM)算法复杂度详解

结论:对于线性SVM分类器,算法复杂度为 O ( n s d ) O(n_sd) O(nsd),就是支持向量的个数乘以输入向量的维度。

⭐️ svm模型C参数越大,代表模型的偏差大还是方差大?

[1] 机器学习 | 使用SVM进行乳腺癌检测

C是惩罚系数,当 C 越大的时候,分类器的准确率越高,即bias越小,但同时容错率会越低,泛化能力会变差,即方差更大.

⭐️ svm的核函数有哪些?如何选择核函数?

[1] SVM的核函数如何选取?

  • Linear核:主要用于线性可分的情形。参数少,速度快,对于一般数据,分类效果已经很理想了。
  • RBF核:主要用于线性不可分的情形。参数多,分类结果非常依赖于参数。有很多人是通过训练数据的交叉验证来寻找合适的参数,不过这个过程比较耗时。个人的体会是:使用libsvm,默认参数,RBF核比Linear核效果稍差。通过进行大量参数的尝试,一般能找到比linear核更好的效果。

至于到底该采用哪种核,要根据具体问题,有的数据是线性可分的,有的不可分,需要多尝试不同核不同参数如果特征的提取的好,包含的信息量足够大,很多问题都是线性可分的。当然,如果有足够的时间去寻找RBF核参数,应该能达到更好的效果。

⭐️ SVM高斯核调参

[1] 支持向量机高斯核调参小结

使用RBF核时,SVM有两个超参数,惩罚系数 C C C和RBF核的 γ \gamma γ,使用网格搜索结合Cross Validation的结果来选择这两个参数的组合,例如两个超参都在[0.01, 0.1, 1, 10]之间选取.

⭐️ LR和SVM的区别

[1] Linear SVM 和 LR 的联系和区别

[2] LR和SVM的联系区别

[3] LR与SVM的区别与联系

  • 损失函数不同. LR的损失函数形式上等价于交叉熵损失,相当于最小化KL散度,而SVM基于最大化几何间隔理论来得到目标函数,所以LR的解是受数据分布影响的,而SVM的解不受数据分布的影响;

  • SVM只需要考虑支持向量,而LR需要考虑所有的点,所以在SVM中,在支持向量之外添加减少任何点都对结果没有影响,而LR则是每一个点都会影响决策;

  • LR可以直接输出概率,但SVM的输出不具有概率意义;

  • 在非线性可分的情况下,SVM使用核函数解决,而LR虽然也可以使用核函数,但实际应用中很少用于非线性可分的情况,计算量过大是其中一个原因;

  • LR适合于大样本量的学习,SVM适合于小样本量的学习;

  • SVM基于几何间隔最大化理论,其优化目标相当于L2正则化项,因此是结构风险最小化算法,而LR默认情况下没有正则化项,属于经验风险最小化算法;

⭐️ SVM在什么应用场景比LR好

样本量小的情况

  • 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM(即近似线性可分的问题使用LR或线性核的SVM)

  • 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel(即非线性可分的问题且样本数量不大时使用高斯核的SVM)

  • 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

朴素贝叶斯

⭐️ 计算条件概率时,有可能出现极大似然函数为0的情况,如何解决?朴素贝叶斯如何进行平滑?

利用数据集计算类的先验概率 P ( c ) P(c) P(c) 和 特征的条件概率也就是似然 P ( x i ∣ c ) P(x_i|c) P(xic)的时候,我们会使用拉普拉斯修正来做平滑,也就是假设类别特征的先验分布都是均匀分布,估计类别的先验概率的时候,给分子加1,给分母加上类别的所有可能取值个数;在估计某个特征的条件概率(似然)的时候,给分子加1,给分母加上这个特征的所有可能取值个数

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

k-means

⭐️ k-means原理

[1] K-Means聚类算法(一):算法思路
[2] K-Means笔记(三)数学原理

⭐️ k-means代码实现(15~30min)

⭐️ k-means中的k值怎么来进行确定?

1、根据先验知识,例如结合具体的业务来分析合适的K值

2、手肘法,计算不同K值下的WSS(各个点到cluster中心的距离的平方的和),取“手肘”处即斜率发生变化最大的点。

在这里插入图片描述

树模型

⭐️ 讲一讲树模型(决策树,RF,GBDT,XGBOOST,LightGBM)

https://blog.csdn.net/qq_28031525/article/details/70207918

https://www.zybuluo.com/yxd/note/611571

⭐️ 除了树模型,Bagging能不能接其他的基模型

⭐️ xgboost和随机森林各自的特点,差别,分析他们的不同

⭐️ xgboost和lightgbm怎么并行化

⭐️ 提升树的原理,学习到的是什么

⭐️ 回归决策树的输出是什么

⭐️ 决策树和随机森林的区别,介绍一下随机森林(RF)

RF是一种Bagging集成,使用的基学习器是决策树。另外,在决策树训练的过程中引入了随机属性选择,传统决策树在选择划分属性时是在当前结点的属性集中选择一个最优属性,而RF先从该结点的属性集中随机选择一个子集,然后再从这个子集中选出最优属性用于划分。

⭐️ 决策树使用什么指标进行划分

ID3使用信息增益,C4.5使用信息增益率,CART使用基尼系数。

⭐️ 信息增益的定义是什么,公式是什么

在这里插入图片描述

⭐️ 熵的定义什么,公式是什么

⭐️ XGB残差怎么用一次和二次梯度求,分裂点怎么求,思想原理是什么

⭐️ XGB实际使用中重要的超参数

⭐️ 为什么lightgbm比XGB速度更快

⭐️ xgb如何处理类别特征

⭐️ XGBoost和随机森林的特征重要性是怎么计算的

⭐️ 树模型怎么剪枝?如何处理缺失值?

⭐️ lightgbm的直方图加速讲一下?具体是怎么来做的?

⭐️ lightgbm的叶子节点是怎么分裂的?

⭐️ GBDT和随机森林的树的深度哪一个比较深?为什么?

⭐️ scikit-learn中随机森林有哪些参数需要注意

Bagging & Boosting

⭐️ bagging和boosting的原理以及区别,谁是更关注方差 ,谁是更关注偏差

HMM & CRF

⭐️ 讲一讲条件随机场

[1] HMM与CRF笔记

⭐️ CRF的原理以及实现的一些细节

[1] HMM与CRF笔记

⭐️ HMM的训练方法

[1] HMM与CRF笔记

⭐️ 有向图模型和无向图模型分别作了哪些假设?HMM做了哪些独立性假设

HMM的假设:

  • 齐次马尔可夫性假设:隐藏的马尔可夫链在任意时刻的状态只依赖于其前一时刻的状态,与其他时刻的状态和观测无关.

  • 观测独立性假设:任意时刻的观测仅依赖于该时刻的马尔可夫链的状态,与其他状态以及观测无关.

CRF的假设:

  • 给定观测变量x的条件下,状态变量Y构成马尔可夫随机场. 在线性链CRF中,“给定x时,y满足马尔可夫性”可以表示为:
    P ( y i ∣ x , y 1 , . . . , y i − 1 , y i + 1 , . . . , y n ) = P ( y i ∣ x , y i − 1 , y i + 1 ) , i = 1 , 2 , ⋯   , n P(y_i | x, y_1, ..., y_{i-1},y_{i+1},...,y_n)=P(y_i | x, y_{i-1}, y_{i+1}),\quad i=1,2,\cdots,n P(yix,y1,...,yi1,yi+1,...,yn)=P(yix,yi1,yi+1),i=1,2,,n

⭐️ HMM和CRF的关系和区别

[1] 概率图模型体系:HMM、MEMM、CRF

[2] 条件随机场(CRF)和隐马尔科夫模型(HMM)最大区别在哪里

  • 两者都用了前后向算法和维特比算法.
  • HMM是生成式模型,对 P ( x , y ) P(x, y) P(x,y) 建模,CRF是判别式模型,对 P ( y ∣ x ) P(y|x) P(yx) 建模.
  • HMM是有向图模型,CRF是无向图模型.
  • HMM的独立性假设比较严格,导致其当前的标注结果只依赖于当前的单词,以及前一个标注结果。实际上序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。而CRF没有观测独立性假设,它的特征函数接受了整个观测序列,所以可以利用上句子中单词的长距离依赖的特性。
KNN

⭐️ KNN你了解过吗?给你一个场景:有10万个点,现在有一个用户点,怎么找离这个用户点最近的100个点。

⭐️ KNN里面,如果你要自定义metric(不用内置的欧氏距离,曼哈顿距离),而kd-tree只能用内置的metric,你怎么做?

⭐️ kd树的作用,kd树是怎么构建的?它的时间复杂度是多少?为什么kd树能够比较快的找到k近邻? 用在KNN的哪个步骤里?

PCA

⭐️ PCA原理和执行步骤

⭐️ 100万左右的高维数据,怎样处理才能更好的学习

PCA、随机采样、编码(encoder)

LDA

⭐️ 讲一讲LDA算法(线性判别分析)

EM

⭐️ EM算法推导

特征工程

⭐️ 特征工程有什么常用的方法

⭐️ 特征离散化

⭐️ 特征选择的方法

评价指标

⭐️ 评价指标

⭐️ F1值的计算公式

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值