
数据结构与算法
文章平均质量分 66
mishidemudong
菜鸟上路,一颗红心,两手准备。
展开
-
通俗易懂理解——条件随机场CRF
https://mp.weixin.qq.com/s?__biz=MzIyNzE5NjExMA==&mid=2651342812&idx=1&sn=2f74c852200d6868f68a2f05ba561ac8&chksm=f3980a7dc4ef836b764c7ad2bab7c92e696074af43efa2a6be03d686fcec0a4a91a05a116b38&scene=178&cur_album_id=1381650339941761024转载 2021-01-29 15:55:59 · 2195 阅读 · 0 评论 -
线性链条件随机场-tutorial(一)
1. 导读这是一篇面向有一定机器学习基础读者的教程,文中不会涉及太多概率图模型的内容。该教程主要介绍了条件随机场(Conditional random fields)的定义。首先让我们从一张流传甚广的模型关系图开始,如下图中所示,隐马尔可夫模型与线性链条件随机场是一对 “生成-判别对”(generative-discriminative pair)。可以理解为它们是一对近亲,模型非常相似。但究竟是哪里相似,图中的“条件化”(conditional)又是何意?本篇教程将会为你解答。这篇教.转载 2021-01-27 14:21:57 · 1105 阅读 · 1 评论 -
LayoutLM——文本与布局的预训练用于文档图像理解
摘要: 预训练技术近年来在多种NPL任务中取得了广泛的成功。尽管广泛的NPL应用的预训练模型,其大多聚焦于文本级别的操作,而忽略了布局与风格信息,这对文档图像的理解至关重要。该篇论文提出了LayoutLM来联合建模扫描文档图像的文本与布局信息关系,这将有益于真实世界中大量的图像理解任务,如文档图像的信息提取。此外,可以利用图像特征合并文字的视觉信息到LayoutLM中。这是第一次在单独的文档级预训练结构将文字与布局联合学习。其在一些下游任务中达到了新的高水平结果,包括表格理解,收据理解,文档图像分类。代码与转载 2020-08-25 16:03:39 · 8378 阅读 · 0 评论 -
####haohaohao####微软发布通用文档理解预训练模型LayoutLM
编者按:近年大热的机器人流程自动化(Robotic Process Automation, RPA)利用 AI 技术将人们从繁杂的电子文档处理任务中解放出来,其中最关键就是自动文档分析与识别技术。面对大量无标注电子文档,现有的大规模预训练语言模型能够在预训练阶段有效捕捉文本中蕴含的语义信息,但忽视了文档中的视觉结构信息。微软亚洲研究院近日发布了结合文档结构信息和视觉信息的通用文档预训练模型 LayoutLM,在表单理解、票据理解、文档图像分类等任务的测试中均取得了目前的最佳成绩,模型、代码和论文都已开放下载转载 2020-08-25 15:40:17 · 513 阅读 · 0 评论 -
###haohaohao######主动学习用于标注优化迭代
我们使用一些传统的监督学习方法做分类的时候,往往是训练样本规模越大,分类的效果就越好。但是在现实生活的很多场景中,标记样本的获取是比较困难的,这需要领域内的专家来进行人工标注,所花费的时间成本和经济成本都是很大的。而且,如果训练样本的规模过于庞大,训练的时间花费也会比较多。那么有没有办法,能够使用较少的训练样本来获得性能较好的分类器呢?主动学习(Active Learning)为我们提供了这种可能。主动学习通过一定的算法查询最有用的未标记样本,并交由专家进行标记,然后用查询到的样本训练分类模型来提高模型的精转载 2020-07-07 11:11:05 · 620 阅读 · 0 评论 -
详解编辑距离(Edit Distance)及其代码实现
概述编辑距离(Minimum Edit Distance,MED),由俄罗斯科学家 Vladimir Levenshtein 在1965年提出,也因此而得名 Levenshtein Distance。在信息论、语言学和计算机科学领域,Levenshtein Distance 是用来度量两个序列相似程度的指标。通俗地来讲,编辑距离指的是在两个单词之间,由其中一个单词转换为另一个单词所需要的最少单字符编辑操作次数。在这里定义的单字符编辑操作有且仅有三种:插入(Insertion) 删除(Del转载 2020-06-04 11:34:58 · 1638 阅读 · 0 评论 -
树(Tree)——(五)搜索二叉树的节点删除和销毁
目录节点删除的三种情况:第一种情况:第二种情况:第三种情况代码实现:main函数节点删除的三种情况:节点删除总共分成三种情况:第一种情况:若为叶子节点则直接删除,如左图节点1,3 ,8或者右图的1,4,8。(若为单独一个根叶子要单独处理)若为单独一个根叶子第二种情况:若该节点,有一个节点,左或是右。因为只有一个节点,直接令祖父节点指向孙子节点,孙子节点的左右需要分开判断。如图中节点2(若该节点为根要单独处理)若该节点为根第三种...转载 2020-06-01 09:35:44 · 542 阅读 · 0 评论 -
tensorflow2.0的一些高级函数用法
最近在学习tensorflow2.0的时候看到一些特别好用的高级函数,这里来记录一下它们的用法1.tf.gather()tf.gather(params,indices,validate_indices=None,name=None,axis=0)简单的理解一下,首先传入一个需要处理的张量,然后传入对他的选择操作,也就是一个索引张量。下面举个例子:考虑班级成绩册的例子,共有 4 个班...转载 2019-11-19 11:29:43 · 651 阅读 · 0 评论 -
Aho-Corasick 多模式匹配算法、AC自动机详解
Aho-Corasick算法是多模式匹配中的经典算法,目前在实际应用中较多。Aho-Corasick算法对应的数据结构是Aho-Corasick自动机,简称AC自动机。搞编程的一般都应该知道自动机FA吧,具体细分为:确定性有限状态自动机(DFA)和非确定性有限状态自动机NFA。普通的自动机不能进行多模式匹配,AC自动机增加了失败转移,转移到已经输入成功的文本的后缀,来实现。1.多模式匹...转载 2019-02-21 20:45:58 · 768 阅读 · 0 评论 -
##############缺失值填充的几种方法
常见的缺失值填充方法有填充默认值、均值、众数、KNN填充、以及把缺失值作为新的label通过模型来预测等方式,为了介绍这几种填充方法的使用以及填充效果,本文将在真实数据集上进行简单比较。1. 数据集介绍数据集来源于 天池精准医疗大赛——人工智能辅助糖尿病遗传风险预测。该数据集共有1000条数据,特征共83维,加上id和label共85列,每维特征缺失数量范围为0~911。为了简单比较各种填...转载 2018-10-23 17:12:14 · 4750 阅读 · 0 评论 -
###好好好#####使用GraphFrames进行飞一般的图计算
GraphFrame是将Spark中的Graph算法统一到DataFrame接口的Graph操作接口。支持多种语言,可以通过Python使用。本博客包括 On-Time Flight Performance with GraphFrames notebook 的完整内容,其中包括一些扩展功能,您可以通过 Databricks Community Edition免费试用(加入 beta wait...转载 2018-09-06 10:50:13 · 3061 阅读 · 0 评论 -
#####@@@#好好好好#####最全知识图谱介绍:关键技术、开放数据集、应用案例汇总
1 知识图谱构建技术本节首先给出知识图谱的技术地图,然后介绍知识图谱构建的关键技术,包括关系抽取技术、知识融合技术、实体链接技术和知识推理技术。1.1 知识图谱技术地图构建知识图谱的主要目的是获取大量的、让计算机可读的知识。在互联网飞速发展的今天,知识大量存在于非结构化的文本数据、大量半结构化的表格和网页以及生产系统的结构化数据中。为了阐述如何构建知识图谱,本文给出了构建知识图谱的技术地图,该技术...转载 2018-06-06 01:38:01 · 2455 阅读 · 0 评论 -
MCMC(Markov Chain Monte Carlo) and Gibbs Sampling
1. 随机模拟随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis, 在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机转载 2018-01-03 11:42:37 · 664 阅读 · 0 评论 -
蒙特卡洛采样之拒绝采样(Reject Sampling)
引子蒙特卡洛(Monte Carlo)方法是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为基础的数值计算方法。它的核心思想就是使用随机数(或更常见的伪随机数)来解决一些复杂的计算问题。当所求解问题可以转化为某种随机分布的特征数(比如随机事件出现的概率,或者随机变量的期望值等)时,往往就可以考虑使用蒙特卡洛方法。通过随机抽样的方法,以随机事件转载 2018-01-03 11:38:58 · 7350 阅读 · 0 评论 -
####好好好########随机采样和随机模拟
http://blog.youkuaiyun.com/pipisorry/article/details/50615652随机采样方法模拟方法:是一种基于“随机数”的计算方法,基于数值采样的近似推断方法,也被称为蒙特卡罗( MonteCarlo )方法、随机模拟方法。通常均匀分布Uniform(0,1) 的样本,即我们熟悉的类rand()函数,可以由线性同余发生器生成转载 2018-01-03 11:13:36 · 663 阅读 · 0 评论 -
####好#几种更牛的采样方法###随机模拟的基本思想和常用采样方法(sampling)
通常,我们会遇到很多问题无法用分析的方法来求得精确解,例如由于式子特别,真的解不出来;一般遇到这种情况,人们经常会采用一些方法去得到近似解(越逼近精确解越好,当然如果一个近似算法与精确解的接近程度能够通过一个式子来衡量或者有上下界,那么这种近似算法比较好,因为人们可以知道接近程度,换个说法,一般一个近似算法被提出后,人们通常都会去考察或寻求刻划近似程度的式子)。本文要谈的随机模拟就转载 2018-01-03 11:01:17 · 533 阅读 · 0 评论 -
####好好好#######FM实现(tensorflow版)
今天在看了一下FM算法,就试着用tensorflow实现了一下,数据集用的是sklearn中的iris,我将target=2的删除掉了,保留了target=0 or 1的做一个二分类的测试.首先来扯一下FM算法的思路,我感觉FM和MF是完全相反的思路,MF矩阵分解的大体思路是直接用两个矩阵相乘去拟合一个用户-商品的矩阵,然后将这两个矩阵作为用户和商品的特征矩阵,想要预测用户是否喜欢某个商品转载 2017-12-13 10:56:06 · 6520 阅读 · 9 评论 -
scipy.spatial 距离计算模块
在scipy.spatial中最重要的模块应该就是距离计算模块distance了。from scipy import spatial距离计算矩阵距离计算函数矩阵参数每行代表一个观测值,计算结果就是每行之间的metric距离。Distance matrix computation from a collection of raw observation vecto转载 2017-12-11 15:19:06 · 7121 阅读 · 0 评论 -
第十一讲.异常检测
本栏目(Machine learning)包括单参数的线性回归、多参数的线性回归、Octave Tutorial、Logistic Regression、Regularization、神经网络、机器学习系统设计、SVM(Support Vector Machines 支持向量机)、聚类、降维、异常检测、大规模机器学习等章节。内容大多来自Standford公开课machine learning中转载 2017-08-29 14:44:11 · 6695 阅读 · 0 评论 -
异常检测算法--Isolation Forest
南大周志华老师在2010年提出一个异常检测算法Isolation Forest,在工业界很实用,算法效果好,时间效率高,能有效处理高维数据和海量数据,这里对这个算法进行简要总结。iTree 提到森林,自然少不了树,毕竟森林都是由树构成的,看Isolation Forest(简称iForest)前,我们先来看看Isolation Tree(简称iTree)是怎么构成的,iTree是转载 2017-08-29 14:38:13 · 1491 阅读 · 0 评论 -
20万、50万、100万的算法工程师,到底有什么区别?
公元七世纪,在车迟国国家气象局组织的一次求雨活动中,虎力、鹿力、羊力三位大仙成功地祈下甘霖,于水火中救了黎民。老国王虽然不明就里,却从此尊他们为国师,奉道教为圭臬。本世纪,算法工程师们的境遇也差不多:早些年,信奉糙快猛主义的大佬们觉得他们饱食终日、无所用心,没工作只好在学校混博士,靠数据上的障眼法装神弄鬼。可是,随着去年AlphaGo大破李世石,大佬们在心底喊出“我操”的同时,慌不择路地把转载 2017-08-29 11:17:06 · 519 阅读 · 0 评论 -
#######基于sklearn 的one hot encoding原理######
1.one hot编码的由来在实际的应用场景中,有非常多的特征不是连续的数值变量,而是某一些离散的类别。比如在广告系统中,用户的性别,用户的地址,用户的兴趣爱好等等一系列特征,都是一些分类值。这些特征一般都无法直接应用在需要进行数值型计算的算法里,比如CTR预估中最常用的LR。那针对这种情况最简单的处理方式是将不同的类别映射为一个整数,比如男性是0号特征,女性为1号特征。这种方式最大的优点转载 2017-08-25 10:12:58 · 634 阅读 · 0 评论 -
RF GBDT XGBOOST的区别与联系
Gradient boosting(GB) 机器学习中的学习算法的目标是为了优化或者说最小化loss Function, Gradient boosting的思想是迭代生多个(M个)弱的模型,然后将每个弱模型的预测结果相加,后面的模型Fm+1(x)基于前面学习模型的Fm(x)的效果生成的。Gradient boosting Decision Tree(GBDT) GB算法中最典转载 2017-08-23 15:40:48 · 3415 阅读 · 0 评论 -
xgboost 实战以及源代码分析
1.序 距离上一次编辑将近10个月,幸得爱可可老师(微博)推荐,访问量陡增。最近毕业论文与xgboost相关,于是重新写一下这篇文章。 关于xgboost的原理网络上的资源很少,大多数还停留在应用层面,本文通过学习陈天奇博士的PPT、论文、一些网络资源,希望对xgboost原理进行深入理解。(笔者在最后的参考文献中会给出地址)2.xgboost vs gbdt转载 2017-08-23 11:30:09 · 17083 阅读 · 1 评论 -
决策树学习笔记整理
本文目的最近一段时间在Coursera上学习Data Analysis,里面有个assignment涉及到了决策树,所以参考了一些决策树方面的资料,现在将学习过程的笔记整理记录于此,作为备忘。 算法原理决策树(Decision Tree)是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。决策数有两大优点:1)决策树模型可以读性好转载 2017-08-22 17:30:05 · 424 阅读 · 0 评论 -
fast-DTW算法 python实现
之前已经介绍过了DTW算法,现在根据文章 toward accurate dynamic time warping in linear time and space,以及别人实现的fastdtw代码分析fast-DTW算法。参考博客:http://www.cnblogs.com/kemaswill/archive/2013/04/18/3029078.html 简单讲讲fast-DTW,该转载 2017-08-21 11:50:48 · 11961 阅读 · 4 评论 -
fast-DTW算法
之前已经介绍过了DTW算法,现在根据文章 toward accurate dynamic time warping in linear time and space,以及别人实现的fastdtw代码分析fast-DTW算法。参考博客:http://www.cnblogs.com/kemaswill/archive/2013/04/18/3029078.html 简单讲讲fast-DTW,该转载 2017-08-21 10:48:19 · 2432 阅读 · 0 评论 -
逻辑回归LR的特征为什么要先离散化
在工业界,很少直接将连续值作为特征喂给逻辑回归模型,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:1. 稀疏向量内积乘法运算速度快,计算结果方便存储,容易scalable(扩展)。2. 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰。3.转载 2017-08-17 11:36:06 · 792 阅读 · 0 评论 -
启发式算法(Heuristic Algorithm)
启发式算法(Heuristic Algorithm)有不同的定义:一种定义为,一个基于直观或经验的构造的算法,对优化问题的实例能给出可接受的计算成本(计算时间、占用空间等)内,给出一个近似最优解,该近似解于真实最优解的偏离程度不一定可以事先预计;另一种是,启发式算法是一种技术,这种技术使得在可接受的计算成本内去搜寻最好的解,但不一定能保证所得的可行解和最优解,甚至在多数情况下,无法阐述所得解同最优转载 2017-07-20 15:33:01 · 23005 阅读 · 0 评论 -
one hot 编码及数据归一化
机器学习 数据预处理之独热编码(One-Hot Encoding)问题由来在很多机器学习任务中,特征并不总是连续值,而有可能是分类值。例如,考虑一下的三个特征:["male", "female"]["from Europe", "from US", "from Asia"]["uses Firefox", "uses Chrome", "us转载 2017-07-13 16:27:00 · 810 阅读 · 0 评论 -
ARIMA模型
ARIMA模型自回归移动平均模型(Autoregressive Integrated Moving Average Model,简记ARIMA)目录[隐藏]1 什么是ARIMA模型?2 ARIMA模型的基本思想3 ARIMA模型预测的基本程序4 相关链接4.1 各国的box-jenkins模型名称5 ARlMA模型案例分析5.转载 2017-07-08 13:29:36 · 5168 阅读 · 0 评论 -
DTW动态规划调整
DTW是一种衡量两个时间序列之间的相似度的方法,主要应用在语音识别领域来识别两段语音是否表示同一个单词。1 DTW方法原理在时间序列中,需要比较相似性的两段时间序列的长度可能并不相等,在语音识别领域表现为不同人的语速不同。而且同一个单词内的不同音素的发音速度也不同,比如有的人会把‘A’这个音拖得很长,或者把‘i’发的很短。另外,不同时间序列可能仅仅存在时间轴上的位移,亦即在还原转载 2017-07-04 17:47:35 · 2287 阅读 · 0 评论 -
白话压缩感知(含Matlab代码)
压缩感知介绍压缩感知(Compressive Sensing,CS),有时也叫成Compressive Sampling。相对于传统的奈奎斯特采样定理——要求采样频率必须是信号最高频率的两倍或两倍以上(这就要求信号是带限信号,通常在采样前使用低通滤波器使信号带限),压缩感知则利用数据的冗余特性,只采集少量的样本还原原始数据。这所谓的冗余特性,借助MLSS2014马毅老师的课件上的例转载 2016-11-03 15:08:49 · 2136 阅读 · 0 评论 -
如何在python下安装xgboost
目前做二分类预测xgboost是效果最好的分类器,在kaggle等数据挖掘竞赛上的表现从未令人失望过。喜欢R的朋友可以直接在CRAN上下载xgboost包(install.pakages(‘xgboost’))。而Python用户都深受安装新包的痛楚,由于xgboost作者删除了github上的windows目录,导致无法安装最新xgboost版本。今天我就教大家如何在python下安装较早版但也转载 2016-10-24 17:14:36 · 1773 阅读 · 0 评论 -
Matlab中double,im2double,mat2gray函数使用方法介绍
图像类和类型间的转换im2uint8 将输入中所有小于0的设置为0,而将输入中所有大于1的设置为255 其他的所有乘以255im2uint16 将输入中所有小于0的设置为0,而将输入中所有大于1的设置为65535mat2gray 把一个double类的任意数组转换成值范围在[0,1]的归一化double类数组im2double 将输入转换为double类.若输入是uint8转载 2016-09-13 10:17:59 · 26405 阅读 · 2 评论 -
用STL 中的vector创建二维数组
用 STL vector 来创建二维数组以前我要建立一个二维数组,总是使用 int N=5, M=6; vector > Matrix(N); for(int i =0; i Matrix[i].resize(M); } 上面多写了三行,就是为了指定 Matrix 的烈数。 今天才发现,可以用更简单的方法完成上面的工作 下面的一行就可以代原创 2016-05-05 18:14:11 · 6996 阅读 · 0 评论 -
求二叉树的宽度(结点的最大距离)
如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义“距离”为两个节点之间边的个数。 写一个程序求一颗二叉树中相距最远的两个节点之间的距离。如图3-11所示,粗箭头的边表示最长距离: 分析与解法我们先画几个不同形状的二叉树,(如图3-12所示),看看能否得到一些启示。从例子中可以看出,相距最远的两个节点,一定是两个转载 2015-09-16 23:04:00 · 1071 阅读 · 0 评论 -
调整数组元素的顺序使得奇数在前偶数在后并且各自有序
唯一要注意的地方是STL中 sort函数的用法,以及边界问题,注意!!class Solution3 {public: bool fun(int &a) { if (a & 0x1 == 1) return true; else return false; } void reOrderArray(vector &array) { int start = 0;原创 2015-09-14 23:38:43 · 1057 阅读 · 0 评论 -
青蛙跳台阶
题目:一只青蛙一次可以跳1级台阶,也可以跳2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 1、递归求解:青蛙每跳一次前,有这样三种情况:(1)只剩1级或0级台阶了,只能跳一步或者无法再跳了,那么这条路也走到了终点,走法的种类数可以加1;(2)可以走2级台阶;(3)可以走1级台阶。于是递归方法求解:Java代码原创 2015-09-14 22:49:09 · 586 阅读 · 0 评论 -
面试金典之(一)找出和为SUM的递增数组array中的两个数使之乘积最小
class Solution {public: vector FindNumbersWithSum(vector array, int sum) { vectorres; int temp = 0; int i = 0, j = array.size() - 1; while (i < j&&temp!=sum) { temp = array[i] + array原创 2015-09-09 16:25:28 · 691 阅读 · 0 评论