常见算法面试之样本不均衡的解决办法交叉熵以及HMMMEMMvsCRF刘二逗呀

很明显可以看出,第一种和第二种方法都会明显的改变数据分布,我们的训练数据不再是真实数据的无偏表述。第一种方法中,我们浪费了很多数据,第二种方法中无中生有或者重复使用了数据,会导致过拟合的发生。

因此欠采样的逻辑中往往会结合集成学习来有效地使用数据,假设正例数据n,而反例数据m个。我们可以通过欠采样,随机无重复的生成(k=n/m)个反例子集,并将每个子集都与相同正例数据合并生成k个新的训练样本。我们在k个训练样本上分别训练一个分类器,最终将k个分类器的结果结合起来,比如求平均值。这就是EasyEnsemble。

提出这样建议的原因有很多。首先,简单的阈值调整从经验上来看往往比过采样和欠采样有效。其次,如果对统计学知识掌握有限,而且编程能力一般,在集成过程中容易出错,不如使用现有的集成学习并调整分类阈值。

1.2、一个简单但有效的方案

这种难度很低,也规避了不少容易出错的地方。我们使用集成学习降低过拟合风险,使用阈值调整规避和采样问题,同时选择合适的评估手段以防止偏见。而且这些都是现成的模型,5-10行的Python就可以实现。

二、交叉熵函数系列问题?与最大似然函数的关系和区别?

交叉熵用来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不确定性所需要付出的努力的大小。

交叉熵越低,表示非真实分布越接近真实分布,因此,交叉熵越低越好。

如何去衡量不同策略之间的差异呢?这就需要用到相对熵(KL散度,物理意义就是用来度量两个函数的相似度或者相近程度),用来衡量两个取值为正的函数或概率分布之间的差异,即:

现在假设我们想知道某个策略和最优策略之间的差异,我们就可以用相对熵来衡量这两者之间的差异。即,相对熵=某个策略的交叉熵-信息熵(根据系统真实分布计算而得的信息熵,为最优策略),公式如下:

KL(p||q)=H(p,q)-H(p)=

1)交叉熵损失函数的物理意义:用于描述模型预测值与真实值的差距大小

2)最小化交叉熵的本质就是对数似然函数的最大化

3)对数似然函数的本质就是衡量在某个参数下,整体的估计和真实情况一样的概率,越大代表越相近;而损失函数的本质就是衡量预测值和真实值之间的差距,越大代表越不相近。

三、HMM、MEMMvsCRF对比

1、马尔科夫假设

马尔科夫过程:每个状态的转移只依赖于前n个状态,并且只是个n阶的模型。最简单的马尔科夫过程是一阶的,即只依赖于前一个状态。

2、马尔科夫性

马尔科夫性是保证或者判断概率图是否为概率无向图的条件

2.1、判别式模型

判别模型是直接对P(Y|X)进行建模,就是说,直接根据X特性来对Y建模训练。具体的,我的训练过程是确定构件P(Y|X)模型里面“复杂映射关系”中的参数,完了再去inference一批新的sample。

判别式模型的特征总结如下:

1)对P(Y|X)建模

2)对所有的样本只构建一个模型,确认总体判别边界

3)观测到输入什么特征,就预测最可能的label

4)判别式的优点:对数据量要求没生成式的严格,速度也会快,小数据量下准确率也会好些。

2.2、生成式模型

在训练模型中,学习到的是X与Y的联合模型P(X,Y),需要确定维护这个联合概率分布的所有的信息参数。完了之后在inference再对新的sample计算P(Y|X),导出Y。

生成式总结有如下特点:

1.对P(X,Y)建模

3.中间生成联合分布,并可生成采样数据。

2.3序列建模

广义下的序列有这些特点:

对不同的序列有不同的问题需求,常见的序列建模方法总结如下:

1.拟合,预测未来节点(或走势分析):

a.常规序列建模方法:AR、MA、ARMA、ARIMA

b.回归拟合

c.NeuralNetworks

2.判断不同序列类别,及分类问题:HMM、CRF、GeneralClassifier(MLmodels、NNmodels)

3.不同时序对应的状态的分析,及序列标注问题:HMM、CRF、RecurrentNNs

3.HMM

3.1理解HMM

HMM属于典型的生成式模型。对照2.1的讲解,应该是要从训练数据中学到数据的各种分布,那么有哪些分布呢以及是什么呢?直接正面回答的话,正事HMM的5要素,其中有3个就是整个数据的不同角度的概率分布:

N,隐藏状态N={q1,...,qN},隐藏节点不能随意取,只能限定取包含在隐藏状态集中的符号。

所以图看起来是这样的:

下面来点高层次的理解:

3.2模型运行过程

模型的运行过程(工作流程)对应了HMM的3个问题。

3.2.1学习训练过程

对照2.1的讲解,HMM学习训练的过程,就是找出数据的分布情况,也就是模型参数的确定。

1.极大似然估计

一般做NLP的序列标注等任务,在训练阶段肯定有隐状态序列的。

2.Baum-Welch(前向后向)

3.2.2序列标注(解码)过程

学习完了HMM的分布参数,也就确定了一个HMM模型。需要注意的是,这个HMM是对我这一批全部的数据进行训练所得到的参数。序列标注问题也就是“预测过程”,通常称为解码过程。对应了序列建模问题3.对于序列标注问题,我们只需要学习出一个HMM模型即可,后面所有的新的sample都用这个HMM去apply。

在直白点就是,现在要在给定的观测序列下找出一条隐状态序列,条件是这个隐状态序列的概率是最大的那个。

具体地,都是用Viterbi算法解码,是用DP思想减少重复的计算。viterbi算法其实就是多步骤每步多选择模型的最优选择问题,其在每一步的所有选择都保存了前序所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价的情况下前继步骤的选择。依次计算完所有步骤后,通过回溯的方法找到最优选择路径。

回溯方法的基本思想就是按照输入数组的顺序,每一层递归处理一个元素,当处理最后一层的时候,也就是把数组中的所有元素都处理完的时候,把当前结果加入到最后的返回结果中。值得注意的是,每次在递归到下一层之前,我们加入了某个要处理的元素X,在下一层递归返回之后,我们要还会加入新的元素Y。那么在这一层递归中就相当于处理了不止一个新的元素。

Viterbi计算有向无环图的一条最大路径,应该还好理解,如图:

关键是注意,每次工作热点区只涉及到t与t-1,这对应了DP的无后效性的条件。

3.2.3序列概率过程

实际上,序列概率过程对应了序列建模问题2,即序列分类。

在3.2.2第一句话有说,在序列标注问题中,用一批完整的数据训练出了一支HMM模型即可。但,在序列分类问题中就不是训练一个HMM模型了。应该这么做(结合语音分类识别的例子):

目标:识别声音是A发出的还是B发出的。

HMM建模过程:

1.训练:将所有A说的语音数据作为dataset_A,将所有B说的语音数据作为dataset_B(当然,先要分别对dataset_A、dataset_B做预处理encode为元数据节点,形成sequences),然后分别用dataset_A、dataset_B去训练出HMM_A/HMM_B

后面两个算法采用了DP思想,减少计算量,每一直接引用前一个时刻的计算结果以避免重复计算,跟Viterbi一样的技巧。

4、MEMM

MEMM,即最大熵马尔科夫模型,属于判别式模型。

4.1理解MEMM

MEMM正因为是判别模型,所以上来就直接为了确定边界而去建模,比如说序列求概率(分类)问题,直接考虑找出函数分类边界。

比如可以这么定义特征函数:

所以总体上,MEMM的建模公式这样:

MEMM需要注意两点:

2.需要注意,之所以图的箭头这么画,是由MEMM的公式决定的,而公式是由creator定义出来的。

走一遍完整的流程:

step2.在给定的数据上,训练数据,确定参数,即确定了MEMM模型

step3.用确定的模型做序列标注问题或者序列求概率问题

4.2模型运行过程

MEMM模型的工作流程也包括了学习训练问题、序列标注问题、序列求概率问题。

4.2.1学习训练过程

一套MEMM由一套参数唯一确定,同样地,我需要通过训练数据学习这些参数。MEMM模型很自然需要学习里面的特征权重λ。

不过跟HMM不同的是,因为HMM是生成式模型,参数即为各种概率分布元参数,数据量足够可以用最大似然估计。而判别式模型是用函数直接判断,学习边界,MEMM即通过特征函数来界定。但同样,MEMM也有极大似然估计法、梯度下降、牛顿迭代法、拟牛顿下降、BFGS、L-BFGS等等。

4.2.2序列标注过程

只是现在的图中的每个隐状态节点的概率求法有一些差异而已,正确将每个节点的概率表示清楚,路径求解过程还是一样,采用viterbi算法。

4.2.3序列求概率过程

跟HMM举的例子不一样,也是分别去为每一批数据训练构建特定的MEMM,然后根据序列在每个MEMM模型的不同得分概率,选择最高分数的模型为wanted类别。

4.3标注偏置

1.现象

由于局部归一化问题,MEMM倾向于选择拥有更少转移的状态。

用viterbi算法解码MEMM,状态1倾向于转换到状态2,同时状态2qingxi倾向于保留在状态2.解码过程细节(需要会viterbi算法这个前提):

5、CRF

5.1理解CRF

不过一般说CRF为序列建模,就专指CRF线性链:

在2.1.2中有提到过,概率无向图的联合概率分布可以在因子分解下表示为:

所以CRF的建模公式如下:

CRF的重点概念:判别式模型、特征函数

1.特征函数

对于CRF,可以为他定义两款特征函数:转移特征&状态特征。建模总公式展开:

其中:

一般情况下,不把两种特征区分开,而是合在一起:

满足特征条件就取值为1,否则没贡献

再进一步理解的话,需要把特征函数部分拿出来:

CRF完美的满足这个形式,所以又可以归入到log-linearmodels之中。

5.2模型运行过程

5.2.1学习训练过程

一套CRF由一套参数λ唯一确定(先定义好各种特征函数)。

同样,CRF用极大似然估计方法、梯度下降、牛顿迭代、拟牛顿迭代、IIS、BFGS、L-BFGS等等。能用在log-linearmodels上的求参方法都可以用过来

5.2.2序列标注过程

只是现在的图中每个隐状态节点的概率求法有一些差异而已,正确将每个节点的概率表示清楚,路径求解过程还是一样,用viterbi算法

5.2.3序列求概率过程

跟HMM举的例子一样,也是分别为每一批数据训练构建特定的CRF,然后根据序列在每个MEMM模型的不同得分概率,选择最高分数的模型为wanted类别。只是貌似很少看到拿CRF或者MEMM来做分类的,直接用网络模型.......

5.3CRF++分析

1.定义模板

在CRF++下,应该是先定义特征模板,然后用模板自动批量产生大量的特征函数。每一条模板将在每一个token处生产若干个特征函数。

CRF++的模板(template)有U系列(unigram)、B系列(bigram),不过U模板都可以完成2-gram的作用。

2.产生特征函数

3.求参

对上述的各个特征以及初始权重进行迭代参数学习。

6.总结:HMMvs.MEMMvs.CRF

首先,CRF,HMM,MEMM都常用来做序列标注的建模,像分词、词性标注、以及命名实体标注

隐马模型一个最大的缺点就是由于其输出独立性假设,导致其不能考虑上下文的特征,限制了特征的选择,最大熵隐马模型则解决了隐马的问题,可以任意选择特征,但由于其在每一节都要进行归一化,所以只能找到局部最优值,同时也带来了标记偏置问题,即凡是训练语料中未出现的情况全都忽略掉。条件随机场很好的解决了这一问题,他并不在每一个节点进行归一化,而是所有特征进行归一化,因此可以求得全局的最优值。

THE END
1.11.3神经网络模型预测:方法与实践图11.11展示了等价于线性回归,包含四个预测变量的神经网络。这些预测变量对应的系数称为“权重”。响应变量由输入项的线性组合得到。在神经网络框架中,通过使用“学习算法”最小化诸如 MSE 等“损失函数”从而确定权重大小。在这个简单的案例中,我们可以使用线性回归,这是一种更有效的训练模型的方法。https://otexts.com/fppcn/nnetar.html
2.数模干货一篇文章搞定常用预测类数学模型线性回归模型假设预测变量与响应变量之间存在线性关系,通过对现有数据进行拟合,得到预测变量的回归系数,并使用这些系数来预测帆船的上市价格。 机器学习预测 机器学习用于从数据中学习模式和规律,并利用这些知识进行预测。通过训练算法,模型自身调节参数或由使用者进行https://mp.weixin.qq.com/s?__biz=MjM5ODc2Mzk2MA==&mid=2451888956&idx=1&sn=e34fb43776b24ae4b8eb817f7f485574&chksm=b07ad546cc7cd6820802b7e97ceffb6a9f98ae2f8fd5eb4eeadf64334a2fba254940147c4ce8&scene=27
3.人工智能常用的趋势预测算法PK虽然由于数据量的原因以及模型调参上还没有达到最佳的训练结果,但是模型对于趋势预测的有效性已经初步展现。之后,还会对趋势预测算法作进一步的探索和更深层次的研究,相信趋势预测算法在智能运维领域的应用也会更加广泛和可靠。 转载地址:https://https://zhuanlan.zhihu.com/p/143800320
4.4大类11种常见的时间序列预测方法总结和代码示例向量差分指数平滑法是过去观测值的加权平均值,随着观测值变老,权重呈指数会衰减。换句话说,观察时间越近相关权重就越高。它可以快速生成可靠的预测,并且适用于广泛的时间序列。 简单指数平滑:此方法适用于预测没有明确趋势或季节性模式的单变量时间序列数据。简单指数平滑法将下一个时间步建模为先前时间步的观测值的指数加权https://www.163.com/dy/article/H14JVMA00531D9VR.html
5.罗戈网常用的需求预测算法有哪些?常用的需求预测算法有哪些? 定量分析之时间序列典型算法简介 移动平均法 字面意思了,比如计算5月的预测,可以使用2,3,4三个月的实际值取平均值计算5月的预测值,具体使用几个月的移动平均可以具体产品具体确定了;这种算法适合需求没有明显的季节性波动的产品,可以用这个方法过滤掉随机需求波动;这里假设了所有观测值http://adm3.logclub.com/articleInfo/NTYzMTU=
6.数据挖掘中预测算法有哪些帆软数字化转型知识库数据挖掘中预测算法有哪些 在数据挖掘中,常用的预测算法包括线性回归、逻辑回归、决策树、随机森林、支持向量机(SVM)、K近邻算法(KNN)、神经网络、时间序列分析等。其中,线性回归是一种基础且广泛应用的预测算法,通过拟合一条最佳直线来最小化预测值与实际值之间的差异。线性回归的优势在于其计算复杂度低,解释性强,https://www.fanruan.com/blog/article/571900/
7.java使用时序数据预测算法有哪些时序预测的典型算法java使用时序数据预测算法有哪些 时序预测的典型算法 概述: 类似于DeepAR,MQR C NN也是一种可以对批量时间序列统一建模和预测的算法,采用的也是seq2seq模型框架,即encoder-decoder结构。MQR C NN代表MQRNN和MQCNN两个算法,两个算法唯一的不同就是encode部分,MQRNN的encode部分用的是RNN,而MQCNN用的是CNN,更确切https://blog.51cto.com/u_12218/8924556
8.负荷预测的常用算法有哪些?负荷预测的常用算法有哪些? 正确答案:负荷预测算法目前使用的有线性外推法、线性回归法、时间序列法、卡尔曼滤波法、人工神经网络法、灰色系统法和专家系统方法。各种算法均有一定的适用场合,实际中可采取实验比较,选择简单有效的算法。 点击查看答案 你可能感兴趣的试题 单项选择题以下不属于勤工助学的是( ) A、http://www.ppkao.com/wangke/daan/343c339c768049feb08fc2f7892bdea6
9.股票行情分析软件是什么?股票走势预测算法是什么?股票当个股的基本面表现非常好时,股价通常会上涨。当然,这是常态。特殊情况下,还有在高位时,庄家通常也会借助利好消息出货,那样股价就会下跌。当时,其主要原因还是大资金的外流,从而导致股价的下跌。 以上就是关于股票行情分析软件是什么以及股票走势预测算法有哪些的相关信息,希望能够对您有所帮助。https://www.ppdai.com/gl/gupiao/article_446_1.html
10.关于预测的两类核心算法解决函数逼近问题有两类最有效和获得广泛使用的算法:惩罚线性回归和集成方法。本文将介绍这些算法,概述它们的特性,回顾算法性能对比研究的结果,以证明这些算法始终如一的高性能。 1.1 为什么这两类算法如此有用 有几个因素造就了惩罚线性回归和集成方法成为有用的算法集。简单地说,面对实践中遇到的绝大多数预测分析(函https://labs.epubit.com/articleDetails?id=NC7E3EF935950000112A61360D5EE18B5
11.RM圆桌005抢人头要靠自瞄8. 请问自瞄过程中,怎样对目标进行预测,运用到什么策略或算法? 答:2018年的比赛中并没有在预测上做太大的功夫,不过可以尝试一下卡尔曼预测。 9. 请问华工现在采用的是什么视觉方案呢? 答:参考上面回答的一般思路。 10. 视觉算法设计到大量像素运算,为了保证实时性同时不牺牲性能,都有哪些优化方案? https://www.robomaster.com/zh-CN/resource/pages/activities/1009
12.数据挖掘中哪些算法常用于建模和预测?在数据挖掘领域,有许多算法被广泛用于建模和预测。这些算法可以帮助我们从大量的数据中发现模式、关联和趋势,为未来的预测和决策提供依据。下面是一些常用于建模和预测的数据挖掘算法。决策树:决策树是一种常见的分类和回归算法。它通过构建一个树状模型来 https://www.cda.cn/view/204570.html
13.预测方法有哪些预测方法有哪些 预测方法有多种,以下列举几种常见的预测方法: 1.统计方法:通过对历史数据的统计分析和模型建立,来预测未来的趋势或结果。例如,时间序列分析、回归分析等。 2.机器学习方法:利用机器学习算法,通过对大量数据的学习和处理,来预测未来的事件。例如,决策树、随机森林、神经网络等。 3.模拟方法:通过建立https://wenku.baidu.com/view/46e95366bbf67c1cfad6195f312b3169a451eac0.html
14.十大经典预测算法理想股票技术论坛探讨股票领域中最具影响力的十大经典预测算法,帮助投资者了解如何利用数据科学模型预测市场走势,提高投资决策的准确性和效率。 ,理想股票技术论坛https://www.55188.com/tag-7329966.html
15.BAT机器学习面试1000题系列(二)用随机森林等算法预测填充 111.随机森林如何处理缺失值。 方法一(na.roughfix)简单粗暴,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。 方法二(rfImpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity https://www.jianshu.com/p/4a7f7127eef1
16.预测分析方法有哪些?预测分析方法有哪些? 预测分析是一种利用历史数据、统计算法和机器学习技术来预测未来事件的可能结果的方法。预测分析方法可以分为以下几类: 回归分析 回归分析是一种统计方法,用于研究因变量(目标变量)与一个或多个自变量(特征变量)之间的关系。常见的回归分析方法包括线性回归、多元线性回归、逻辑回归、岭回归和LASSOhttps://cloud.tencent.com/developer/techpedia/1550/10434
17.基于聚类和XGboost算法的心脏病预测的三种模型在准确率上确实基本比初始模型要高, 在召回率上L模型和H模型表现的较为优秀. 而F1值也都差别不大. 因为都是使用的同一算法, 所以运行时间上不会有太大的差别. 综合三个数据集所训练的模型数据, 普遍优于初始数据集的模型, 并且有所提升1%~2%. 尤其表现在中等指标的数据集训练模型, 其预测效果是https://c-s-a.org.cn/html/2019/1/6729.html
18.常见的预测算法预测算法有哪些本文介绍了几种常见的机器学习算法,包括线性回归用于连续值预测,逻辑回归处理二元分类,决策树和随机森林解决分类与回归问题,支持向量机用于分类与回归,K近邻是基于邻居的分类方法,神经网络模拟人脑进行预测,贝叶斯分类利用贝叶斯定理进行文本分类,主成分分析用于降维,以及集成学习提升预测准确性。 https://blog.csdn.net/qq_16032927/article/details/129421447
19.神经网络算法RNN实现时间序列预测python这篇文章主要为大家介绍了神经网络算法RNN实现时间序列预测示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪 + 目录 时间序列预测 时间序列是按照时间顺序排列的数据集合,在很多应用中都非常常见。时间序列分析是对这些数据进行分析和预测的过程。时间序列预测是该分析的一个重要组成部分https://www.jb51.net/article/282249.htm
20.新闻浏览要高度重视评价预测算法模型的研究和软件工具的研发应用,要加大全国培训推广力度,提高快速、动态、智能评价能力;四要建实调度指挥系统,按照统筹部署、分工协作、有序推进的新一轮找矿突破部署原则,建立全国找矿突破工作调度指挥平台,提供满足找矿行动规划部署、工作跟踪、信息共享、业务协同的“一站式”工作平台;五要https://www.qhsddj.cn/viewarticle?articleId=3024236
21.一种改进的缺失数据协同过滤推荐算法AETXUE G R等人提出了一种同时基于内容和建模的协同过滤框架,通过平滑算法,预测用户 产品(项目)矩阵中的缺失数据[4]。MA H等人提出综合考虑用户信息和产品(项目)信息来预测缺失数据的方法[5],对协同过滤算法进行了改进。这些方法可以取得比传统协同过滤算法更好的结果,但基于概率或聚类的平滑算法没有区分同一组内用户http://www.chinaaet.com/article/3000052764
22.TCCT通讯Newsletter2017No.01显式模型预测控制的可达分区点定位算法 系统科学与数学, 2016 Vol. 36 (10): 1585-1596 Abstract | PDF 郭宇骞 离散重置系统的前向完备性和稳定性 系统科学与数学, 2016 Vol. 36 (10): 1597-1609 Abstract | PDF 王拥兵 加权有限自动机及其商变换半群 系统科学与数学, 2016 Vol. 36 (10): 1610-161https://tcct.amss.ac.cn/newsletter/2017/201701/journal.html
23.基于5G和人工智能的产品质量实时检测和优化2) 质量预测的智能化 目前,人工智能算法在质量预测模型中的研究成果主要有两个方面:一方面是以产品错误报告为基础,以失效时间作为人工智能网络输入的质量预测模型;另一方面是以质量度量参数作为人工智能网络输入的质量预测模型。 失效时间是指产品从加工完成时至在正常使用状况下失去使用价值时的时间段,是衡量产品质量的http://www.aii-alliance.org/resource/c333/n1807.html