机器学习之经典算法(十一) 条件随机场
一、条件随机场(CRF)简介:
条件随机域(场)(conditionalrandom fields,简称 CRF,或CRFs),是一种判别式概率模型,是随机场的一种。条件随机场(CRF)由Lafferty等人于2001年提出,结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型,近年来在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果。常用于标注或分析序列资料,如自然语言文字或是生物序列。如同马尔可夫随机场,条件随机场为具有无向的图模型,无向图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场中,随机变量 Y 的分布为条件机率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链结式的架构,链结式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在效率较高的算法可供演算。
CRF被用于中文分词和词性标注等词法分析工作,一般序列分类模型常常采用隐马尔可夫模型(HMM),像基于类的中文分词。但隐马尔可夫模型中存在两个假设:输出独立性假设和马尔可夫性假设。其中,输出独立性假设要求序列数据严格相互独立才能保证推导的正确性,而事实上大多数序列数据不能被表示成一系列独立事件。而条件随机场则使用一种概率图模型,具有表达长距离依赖性和交叠性特征的能力,能够较好地解决标注(分类)偏置等问题的优点,而且所有特征可以进行全局归一化,能够求得全局的最优解。
缺点:
模型复杂,算法时间长。
二、条件随机场的应用举例:
(1)定义一个参数解析器,并将C值作为输入参数。 C是一个超参数,该参数控制你想要的模
型的具体程度,而不会失去一般化的能力:
def build_arg_parser():
parser =argparse.ArgumentParser(description='Trains the CRF classifier')
parser.add_argument("--c-value", dest="c_value",required=False, type=float,
default=1.0,help="The C value that will be used for training")
return parser
args = build_arg_parser().parse_args()
c_value = args.c_value
(2)加载字母数据集。这个数据集包括分割的字母以及和其相关的特征向量。因为已经有了
特征向量,所以不需要分析图像。每个单词的首字母都已被去掉,所以剩下的字母都是小写字母。
加载数据和标签到其相应的变量:
letters = load_letters()
X, y, folds = letters['data'], letters['labels'], letters['folds']
X, y = np.array(X), np.array(y)
(3)将数据分割为训练集和测试集:
X_train, X_test = X[folds == 1], X[folds != 1]
y_train, y_test = y[folds == 1], y[folds != 1]
(4)构建模型:
clf=FrankWolfeSSVM(model=ChainCRF(), C=c_value, max_iter=50)
(5)模型器拟合数据, 评价CRF模型的性能:
print("\nTraining the CRF model...")
clf.train(X_train, y_train)
score = clf.evaluate(X_test, y_test)
print("\nAccuracy score =", str(round(score*100, 2)) + '%')
(6)这些字母在编号的数组中被索引。
alphabets = 'abcdefghijklmnopqrstuvwxyz'
output = ''
for i in y_test[0]:
output += alphabets[i]
print("\nTrue label =", output)
(7)预测数据, 输入一个随机测试向量,并用这个模型预测输出:
predicted_output = clf.predict([X_test[0]])[0]
print("Predicted output =", decoder(predicted_output))
机器学习之经典算法(十一) 条件随机场相关推荐
- 【机器学习】机器学习的经典算法
[机器学习]机器学习的经典算法 https://www.cnblogs.com/DicksonJYL/p/9517025.html 本文为整篇文章第二部分,整篇文章主要目录如下: 1:一个故事说明什么 ...
- 机器学习基础-经典算法总结
机器学习基础-经典算法 逻辑回归 逻辑回归的原理,问题的假设 为什么逻辑回归也可称为对数几率回归 推导逻辑回归损失函数 逻辑回归损失函数求导 逻辑回归为什么使用交叉熵作为损失函数 LR是不是凸优化问题 ...
- python3入门经典100例-Python3入门机器学习_经典算法与应用-慕课网实战
建议慕课网可以出一套完整的关于学完之后可以胜任人工智能这份工作的课程,达到就业的目的和转型 亲,您好~目前我们在筹划更多的人工智能的相关课程!后期会逐步的跟大家见面!不过本门课程就是您迈入机器学习领域 ...
- 百面机器学习 #3 经典算法:01-3 核函数支撑向量机SVM
文章目录 1.3 非线性SVM与核技巧 1.3.1 核函数 1.3.2 核技巧在支持向量机中的应用 1.3.3 常用核函数 1.4 其他问题 1.4.1 是否存在一组参数使SVM训练误差为0:是 1. ...
- 百面机器学习之经典算法
1.逻辑回归相比于线性回归,有何异同? 首先,逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是两者的最本质的区别.逻辑回归中,因变量取值是一个二元分布,模型学习得出的是 ,即给 ...
- 百面机器学习 #3 经典算法:02 逻辑回归
参考: 百面机器学习 西瓜书 02 逻辑回归Logistic Regression(对数几率回归) 2.1 逻辑回归和线性回归 二者都使用极大似然法来对训练样本进行建模. 在求解超参数的过程中,都可以 ...
- 百面机器学习 #3 经典算法:01-2 不完全线性可分(软间隔)支撑向量机SVM
文章目录 ①从原问题到对偶问题 ②对偶问题的解的形式化简 ③从对偶问题的解到原问题的解 ④从原问题的解到分离超平面.决策函数.支撑向量 假设训练数据集不是线性可分的.通常情况是,训练数据中有一些特异点 ...
- 百面机器学习 #3 经典算法:01-1 线性可分(硬间隔)支撑向量机SVM
文章目录 ①从原始问题到对偶问题 ②对偶问题的解的形式化简 ③从对偶问题的解到原问题的解 ④从原问题的解到分离超平面和决策函数.支撑向量 参考李航统计学习方法第7章. 支持向量机学习的基本想法是求解能 ...
- 机器学习之经典算法(十六) Birch算法
(一) Birch算法简介: BIRCH(Balanced Iterative Reducing and Clustering Using Hierarchies)全称是:利用层次方法的平衡迭代规约 ...
最新文章
- 华为手机升级回退_华为鸿蒙OS 2.0手机开发者Beta版支持Mate 30/P40系列OTA升级
- pandas使用groupby函数计算dataframe数据中每个分组的N个数值的指数权重移动(滚动)平均、例如,计算某公司的多个店铺每N天(5天)的滚动销售额指数权重移动(滚动)平均
- 69张图看懂Elon Musk的脑机接口芯片项目
- Android7.1去掉USB权限弹窗
- 《Agile Impressions》作者问答录
- 更深入地了解Java 8 Date and Time API
- 林海峰老师python课件密码
- beautifulsoup解析动态页面div未展开_实战|Python轻松实现动态网页爬虫(附详细源码)...
- python装饰器详解-Python装饰器基础详解
- 【技术维新 践行精彩】浅谈未来网站的构建
- 计算机视觉论文-2021-11-03
- (已拿offer)腾讯实习生笔试到面试总结(附带华为阿里面试经历)
- redhat linux 下小企鹅输入法fcitx的安装
- 毕业设计-电子商务网站(二)
- 队列详解及java实现
- Nightcafe Creator:AI绘画艺术图片生成器
- Excel怎样操作给单元格添加下拉选项?分享经验!如何给Excel单元格加入下拉列表?
- 火车头采集器向dedecms发布文章,使阅读权限为待审核稿件
- GO 基于gorilla websocket实现点餐系统(一阶)
- 微信小程序api登录接口wx.login(OBJECT)