HMM VS CRF

一、区别

  1. HMM是生成模型(由数据学习联合概率分布P(X,Y), 然后由P(Y|X)=P(X,Y)/P(X)求出概率分布P(Y|X)作为预测的模型),CRF是判别模型(由数据直接学习决策函数Y=f(X)或条件概率分布P(Y|X)作为预测模型)
  2. HMM是概率有向图CRF是概率无向图
  3. HMM求解过程可能是局部最优CRF可以全局最优
  4. CRF打破了HMM的两种假设:
    • 齐次马尔科夫链假设。即任意时刻的隐藏状态只依赖于它前一个隐藏状态;
    • 观测独立性假设。即任意时刻的观察状态只仅仅依赖于当前时刻的隐藏状态3
  5. 任意的HMM都可以由CRF表达出来

二、HMM

隐马尔可夫模型 HMM

三、CRF

CRF条件随机场(部分)

四、Refs

生成模型和判别模型

zhihu

生成模型和判别模型

一、判别方法

1.定义

由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括逻辑回归K近邻感知机决策树支持向量机最大熵模型提升方法。

  • 决策函数Y=f(X):你输入一个X,它就输出一个Y,这个Y与一个阈值比较,根据比较结果判定X属于哪个类别。例如两类(w1和w2)分类问题,如果Y大于阈值,X就属于类w1,如果小于阈值就属于类w2。这样就得到了该X对应的类别了。
  • 条件概率分布P(Y|X):你输入一个X,它通过比较它属于所有类的概率,然后输出概率最大的那个作为该X对应的类别。例如:如果P(w1|X)大于P(w2|X),那么我们就认为X是属于w1类的。
2.优缺点
优点
  • 直接面对预测,往往学习的准确率更高
  • 由于直接学习 P(Y|X) 或 f(X),可以对数据进行各种程度的抽象,定义特征并使用特征,以简化学习过程
缺点
  • 不能反映训练数据本身的特性。

二、生成模型

1.定义

由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。典型的生成模型包括朴素贝叶斯隐马尔可夫模型混合高斯模型贝叶斯网络马尔可夫随机场。

2.优缺点
优点
  • 可以还原出联合概率分布 P(X,Y),判别方法不能
  • 学习收敛速度更快——即当样本容量增加时,学到的模型可以更快地收敛到真实模型
  • 当存在“隐变量”时,只能使用生成模型
缺点
  • 学习和计算过程比较复杂

三、联系

  • 由生成模型可以得到判别模型,但由判别模型得不到生成模型。
  • 当存在“隐变量”时,只能使用生成模型

四、Refs

机器学习与深度学习里生成模型和判别模型的理解

生成模型与判别模型

GridSearchCV 与 RandomizedSearchCV 调参

一、RandomizedSearchCV(常用

每个参数设置都是从可能的参数值的分布中进行取样,优势是:

  • 可以选择独立于参数个数和可能值的预算
  • 添加不影响性能的参数不会降低效率

二、GridSearchCV

遍历多种参数组合,通过交叉验证确定最佳效果参数(平均精度)

*、自定义评价函数

*、参考

GridSearchCV 与 RandomizedSearchCV 调参

python机器学习库sklearn——参数优化

RandomizedSearchCV APIGridSearchCV API

Comparing randomized search and grid search for hyperparameter estimation

f1_score/precision_score/recall_score中micro和macro的区别

一.概念

  1. ‘micro’:通过先计算总体的TP,FN和FP的数量,再计算F1,Precision(tp / (tp + fp)) = Recall(tp / (tp + fn)) = F1_score(2 * (precision * recall) / (precision + recall)) = Accuracy(T / (T + F)计算micro时,四者相等(如果没有出现预测错误的情况,如下面的例子预测为0,否则tp=T,fp=fn=F)
  2. ‘macro’:分布计算每个类别的F1,然后做平均(各类别F1的权重相同)
  • 真正例(True Positive,TP):真实类别为正例,预测类别为正例。
  • 假正例(False Positive,FP):真实类别为负例,预测类别为正例。
  • 假负例(False Negative,FN):真实类别为正例,预测类别为负例。
  • 真负例(True Negative,TN):真实类别为负例,预测类别为负例。

二.例子

y_true = [1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4]
y_pred = [1, 1, 1, 0, 0, 2, 2, 3, 3, 3, 4, 3, 4, 3](0为出现的错误)

1类 2类 3类 4类 总数
TP 3 2 2 1 8
FP 0 0 3 1 4
FN 2 2 1 1 6
  • micro的精确度 P 为 TP/(TP+FP)=8/(8+4)=0.666,召回率 R 为 TP/(TP+FN)=8/(8+6)=0.571 ,所以F1-micro的值为:0.6153
  • macro先要计算每一个类的F1,有了上面那个表,计算各个类的F1就很容易了,比如1类,它的精确率P=3/(3+0)=1  召回率R=3/(3+2)=0.6  F1=2*(1*0.5)/1.5=0.75

三.Refs

sklearn.metrics

sklearn中 F1-micro 与 F1-macro区别和计算原理

Bagging和Boosting的区别:

1)样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。