Shark源码分析(十二):线性SVM

Shark源码分析(十二):线性SVM关于svm算法,这个在我关于机器学习的博客中已经描述的比较详实了,这里就不再赘述。svm主要有三种类型,这里我所介绍的是线性svm算法的代码。相较于使用核函数的svm算法,代码的整体框架应该是一样的,只是在对偶问题的求解上所使用的方法可能是不一样的。Linea...

2017-01-26 11:55:08

阅读数 906

评论数 0

Shark源码分析(十一):随机森林算法

Shark源码分析(十一):随机森林算法关于这个算法的介绍,可以参看我之前关于集成算法的博客。因为Shark中关于决策树算法只实现了CART算法,所以随机森林算法中也只包含了CART算法。如果你已经看过了我之前写的关于CART算法源码分析的博客,看到后面就会发现它与随机森林算法的代码其实差不多。只...

2017-01-26 11:54:07

阅读数 1431

评论数 0

Shark源码分析(十):KNN算法

Shark源码分析(十):KNN算法关于这个算法,我之前已经有博客详细介绍过。虽然说这个算法看上去非常的简单,但是在搜索k个最近邻居数据点时,还是非常具有技巧性的。这里还是有必要再次强调一下。如果输入数据的维度不高,可以使用树形结构(kd树)来加快查找的速度。如果输入的维度较高,则利用树型结构的速...

2017-01-26 11:53:01

阅读数 736

评论数 0

Shark源码分析(九):朴素贝叶斯算法

Shark源码分析(九):朴素贝叶斯算法关于这个算法,我之前也有写过博客来介绍过。但是Shark在实现时,它只考虑到了输入为连续属性值的情况,而没有考虑到离散属性值的情况。至于连续属性值的情况该如何计算,可以参考下我的博客。AbstractDistribution类既然我们需要计算分布情况,那我们...

2017-01-26 11:52:19

阅读数 623

评论数 0

Shark源码分析(八):CART算法

Shark源码分析(八):CART算法决策树算法是机器学习中非常常用的一种算法。在我关于机器学习的博客中有对决策树算法进行详细的介绍。在Shark中,只实现了CART这一种类型的决策树,它可以用于分类任务或是回归任务中。在这里我们只对其中有关分类任务的部分代码进行分析。CARTClassifier...

2017-01-26 11:51:27

阅读数 624

评论数 0

Shark源码分析(七):神经网络

Shark源码分析(七):神经网络对于神经网络这里应该就不用叙述了吧,之后可能会写一些关于深度学习方面的博客。这里要介绍的神经网络,名字应该叫做前馈神经网络(Feed-Forward Networks)。至于这个神经网络为什么要叫前馈,是因为这个网络在拓扑结构上不含有反向边,也就是没有环。而不是指...

2017-01-26 11:50:05

阅读数 541

评论数 0

Shark源码分析(六):k-means算法

Shark源码分析(六):k-means算法k-means算法是原型聚类算法中一个非常典型的算法。关于聚类算法,我之后应该会在博客中进行详细说明。对于整个聚类算法来说,可以分为两类:硬聚类与软聚类。对于硬聚类,每一个数据点只能属于某一个簇。对于软聚类来说,则没有这一限制。首先还是来看一下整个聚类算...

2017-01-26 11:48:13

阅读数 714

评论数 0

Shark源码分析(五):线性回归算法与Lasso回归

Shark源码分析(五):线性回归算法与Lasso回归为什么上一篇还是三,这一篇就跳到五了呢?其实我们原来提到过:方法=模型+策略+算法方法 = 模型+策略+算法这里的模型与算法我们之前都已经提到过了,虽然只是介绍了一个基类,并没有涉及到其具体的实现。在这里我们就会揭开其真正面目了。『策略』我们还...

2017-01-26 11:41:27

阅读数 723

评论数 0

Shark源码分析(四):目标函数及其优化

Shark源码分析(四):目标函数及其优化我们之前反反复复地强调过,Shark的设计策略是:方法 = 模型 + 策略 + 算法。这里的策略指的就是目标函数。我们的目标是从假设空间中选取最优的模型,需要考虑的是按照什么样的准则学习或选择最优的模型。选择一个好的目标函数形式,也是算法最终取得好的效果的...

2017-01-26 11:40:14

阅读数 549

评论数 0

Shark源码分析(三):数据预处理之正则化

Shark源码分析(三):数据预处理之正则化在机器学习算法中,获取训练数据后首先要做的不是将输入投入训练方法中进行学习,而是应该对数据进行预处理。预处理过程输出数据的质量能够对之后算法的结果起着至关重要的作用。预处理过程含有非常多的操作,在我目前阅读代码的过程中只碰到了正则化这一过程。那我们就先来...

2017-01-26 11:37:47

阅读数 574

评论数 0

Shark源码分析(一):数据的存储(2)

Shark源码分析(一):数据的存储(2)上一篇博客中说到了实际存储数据的SharedContainer类,但是联系到实际中输入的数据可能会有不同的形式,比如说无标签数据和有标签数据,无法都使用SharedContainer类来存储,否则就无法方便地获取数据对应的标签。所以Shark将Shared...

2017-01-26 11:36:57

阅读数 498

评论数 0

Shark源码分析(二):模型与训练方法

Shark源码分析(二):模型与训练方法之前两篇博客都说的是整个架构底层的东西,如何来存放输入的数据,以便于在计算时进行加速。而这一篇呢,会向上走一点,来看一看如何将模型进行抽象。在『统计机器学习』中有提到这样一句话,『统计学习方法是由模型、策略和算法构成的』。Shark正是按照这种划分来构建整个...

2017-01-26 11:33:08

阅读数 621

评论数 0

Shark源码分析(一):数据的存储(1)

Shark源码分析(一):数据的存储(1)Shark是一个使用C++开发的机器学习库,里面还有一些深度学习的算法例如:自编码器、限制玻尔兹曼机、循环神经网络等。对于熟悉机器学习、深度学习算法的流程还是很有帮助的,同时能够增强你对于C++的理解能力,特别是对于模板的应用能力。源码的可读性我觉得也比较...

2017-01-26 11:32:17

阅读数 968

评论数 0

隐式语义分析

隐式语意分析隐式语义分析(Latent Semantic Analysis,LSA),也被称为隐式语义索引(Latent Semantic Indexing,LSI),是一种不同于关键词检索的搜索引擎解决方案,其检索结果的实际效果更接近于人的自然语言,在一定程度上能够提高搜索结果的相关性。原始方法...

2017-01-26 10:45:54

阅读数 2284

评论数 0

非负矩阵分解

非负矩阵分解(Non-Negative Matrix Factorization)这个问题是我在进行文本的主题提取时遇到的。处理的矩阵是文本数据的tf-idf矩阵。如果你使用的词向量,也可以是词向量经过组合之后得到的矩阵。我们的目标是要对这个矩阵进行因式分解,即找到两个更小的矩阵,使得二者相乘以得...

2017-01-26 10:44:22

阅读数 709

评论数 0

关键词抽取与自动文摘

关键词抽取与自动文摘在自然语言处理中对于关键词抽取与自动文摘这两个主题,有着多种多样的方式去解决它们,这里将介绍一种叫做TextRank的方法,就可以解决这两个问题。我将结合具体的代码,试图将算法解释地更加清楚些。论文『TextRank: Bringing Order into Texts』中首次...

2017-01-26 10:42:59

阅读数 3528

评论数 0

jieba中的分词方法

jieba中的分词方法最近刚好在看一些自然语言处理方面的东西,写的一些代码中也用到了jieba这个库,感觉从效果上来说还是可以的。就顺便把分词这一块的代码也给看了(关键词抽取部分的代码已经在之前的博客中提过了),接下来跟大家分享下其中的一些方法。首先是入口函数:re_han_default = r...

2017-01-26 10:39:10

阅读数 1043

评论数 0

机器学习算法(五):支持向量机(SVM)

支持向量机(Support Vector Machine,SVM)支持向量机是一种二分类模型。它的学习策略是间隔最大化,可以形式化为一个求解凸二次规划的问题,支持向量机的学习算法是求解凸二次规划的最优化问题。支持向量机的模型包括三种类型:线性可分支持向量机、线性支持向量机、非线性支持向量机。当训练...

2017-01-26 10:35:02

阅读数 896

评论数 0

机器学习算法(九):Apriori算法

机器学习算法(九):Apriori算法Apriori算法是一种关联分析方法,用于发现隐藏在大型数据集中有意义的联系。所发现的联系可以使用关联规则和频繁项集来表示。一些基本概念项集令I={i1,i2,…,id}I = \{i_1, i_2, \dots , i_d\}是购物篮数据所有项的集合,而T=...

2017-01-25 17:21:09

阅读数 1635

评论数 0

评估方法、性能度量和比较检验

机器学习中模型的评估方法、性能度量和结果的检验方法在对算法进行训练时,我们必须要有相应的数据。我们并不能在所有数据上进行训练,否则就没有数据来对算法的性能进行验证了。这就涉及到训练集与测试集划分的问题,即评估方法。算法在训练好了之后,需要将其在数据集上进行测试,如何来衡量测试的结果,这就是性能的度...

2017-01-25 17:18:19

阅读数 7356

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭