自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ACdreamer

欢迎关注知乎:https://www.zhihu.com/people/acdreamers/activities

  • 博客(33)
  • 资源 (3)
  • 收藏
  • 关注

原创 协同过滤算法

今天要讲的主要内容是协同过滤,即Collaborative Filtering,简称CF。 Contents    1. 协同过滤的简介   2. 协同过滤的核心   3. 协同过滤的实现   4. 协同过滤的应用  1. 协同过滤的简介    关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那

2015-03-30 00:13:37 69702 16

原创 L-BFGS算法

前面的文章中,讲述过BFGS算法,它是用来求解最优化问题的,在这个算法中,相对于普通的牛顿迭代法有很大的改进。链接:http://blog.csdn.net/acdreamers/article/details/44664941。在BFGS算法中,仍然有缺陷,比如当优化问题规模很大时,矩阵的存储和计算将变得不可行。为了解决这个问题,就有了L-BFGS算法。  Contents

2015-03-29 18:12:23 27118 4

原创 FaceBook机器学习开源DL模块

据GIGAOM报道,近日,Facebook人工智能研究院(FAIR)开源了一系列软件库,以帮助开发者建立更大、更快的深度学习模型。开放的软件库在Facebook被称作模块。用它们替代机器学习领域常用的开发环境Torch中的默认模块,可以在更短的时间内训练更大规模的神经网络模型。 如果想了解更多的内容,可以参考下面的一些文章。 1. Facebook开源深度学习软件库,帮助开

2015-03-27 02:03:17 3618

原创 BFGS算法

今天,我来讲一种在机器学习中常用到的优化算法,叫做BFGS算法。BFGS算法被认为是数值效果最好的拟牛顿法,并且具有全局收敛性和超线性收敛速度。那么接下来将会详细讲解。 Contents    1. 什么是拟牛顿法   2. 拟牛顿法原理   3. DFP算法原理   4. BFGS算法原理   5. BFGS算法的实现  1. 什么是拟牛顿法

2015-03-27 01:55:41 65617 12

原创 K-D树

K-D树,即K-Dimensional Tree,是一种高维索引树型数据结构。常用于大规模高维数据空间的最邻近或者K邻近查找,例如图像检索中高维图像特征向量的K邻近匹配,对KNN算法的优化等。 Contents    1. K-D树的基本原理   2. K-D树的改进(BBF算法)   3. K-D树的C++实现   4. K-D树的开源框架介绍  1.

2015-03-27 01:49:11 17211 2

原创 随机森林

前面介绍过决策树的三种实现:ID3算法,C4.5算法和CART算法。虽然这些决策树有很多优良的性质,比如训练时间复杂度较低,模型容易展示等等,但是同时单决策树有一些不好的地方,比如容易over-fitting,虽然剪枝可以减少这种现象的发生,但是还是不够的。为了减少决策树的不足,近年来又提出了许多模型组和+决策树的算法,这些算法都是生成N棵决策树,虽然这N棵树都很简单,但是它们综合起来

2015-03-27 01:45:12 8425 1

原创 决策树之C4.5算法

C4.5算法是机器学习中的一个重要的决策树算法,它是对ID3算法的改进,相对于ID3算法主要有以下几个改进   (1)用信息增益率来选择属性  (2)在决策树的构造过程中对树进行剪枝  (3)对非离散数据也能处理  (4)能够对不完整数据进行处理 接下来分别详细讲述这几点的改进方案 (1)用信息增益率来选择属性     在ID3算法中,我们知道是用信息增

2015-03-27 01:43:29 7685

原创 决策树之CART算法

在之前介绍过决策树的ID3算法实现,今天主要来介绍决策树的另一种实现,即CART算法。 Contents    1. CART算法的认识   2. CART算法的原理   3. CART算法的实现  1. CART算法的认识    Classification And Regression Tree,即分类回归树算法,简称CART算法,它是决策树的一种实

2015-03-27 01:38:05 85083 21

原创 布雷格曼散度

今天来讲一个比较重要的概念,叫做Bregman Divergence,即布雷格曼散度,是一种类似距离度量的方式,用于衡量两者之间差异的大小。接下来会重点进行探讨 Contents    1. 布雷格曼散度的认识   2. 布雷格曼散度的性质   3. 布雷格曼散度与指数分布族  1. 布雷格曼散度的认识    Bregman散度是损失或者失真函数。考

2015-03-27 01:28:49 13982

原创 KNN算法

KNN算法是机器学习里面常用的一种分类算法,假设一个样本空间被分为几类,然后给定一个待分类所有的特征数据,通过计算距离该数据的最近的K个样本来判断这个数据属于哪一类。如果距离待分类属性最近的K个类大多数都属于某一个特定的类,那么这个待分类的数据也就属于这个类。 Contents    1. KNN算法介绍   2. KNN算法的C++实现  1. KNN算法

2015-03-27 01:26:15 4663 2

原创 数据归一化处理

在机器学习中领域中的数据分析之前,通常需要将数据标准化,利用标准化后得数据进行数据分析。不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。 Contents    1. 归一化的定义  

2015-03-27 01:22:46 53410 2

原创 交叉验证

今天来讲一种在机器学习中常用的精度测试方法,叫做交叉验证。它的目的是得到可靠稳定的模型,具体做法是拿出大部分数据进行建模,留小部分样本用刚刚建立的模型进行预测,并求出这小部分样本预测的误差,记录它们的平方和,这个过程一直进行,直到所有的样本都恰好被预测了一次,交叉验证在克服过拟合问题上非常有效。接下来介绍一些常用的交叉验证方法。  1. 10折交叉验证    10折

2015-03-27 01:12:57 13966 1

原创 非负矩阵分解(NMF)

通常的矩阵分解会把一个大的矩阵分解为多个小的矩阵,但是这些矩阵的元素有正有负。而在现实世界中,比如图像,文本等形成的矩阵中负数的存在是没有意义的,所以如果能把一个矩阵分解成全是非负元素是很有意义的。在NMF中要求原始的矩阵的所有元素的均是非负的,那么矩阵可以分解为两个更小的非负矩阵的乘积,这个矩阵有且仅有一个这样的分解,即满足存在性和唯一性。 Contents    1

2015-03-27 01:00:45 57983 11

原创 softmax回归

在上一篇文章中,讲述了广义线性模型。通过详细的讲解,针对某类指数分布族建立对应的广义线性模型。在本篇文章中,将继续来探讨广义线性模型的一个重要例子,它可以看成是Logistic回归的扩展,即softmax回归。 我们知道Logistic回归只能进行二分类,因为它的随机变量的取值只能是0或者1,那么如果我们面对多分类问题怎么办?比如要将一封新收到的邮件分为垃圾邮件,个人邮件,还是工作

2015-03-27 00:55:16 48431 17

原创 广义线性模型

今天我来介绍一种在机器学习中应用的比较多的模型,叫做广义线性模型(GLM)。这种模型是把自变量的线性预测函数当作因变量的估计值。在机器学习中,有很多模型都是基于广义线性模型的,比如传统的线性回归模型,最大熵模型,Logistic回归,softmax回归,等等。今天主要来学习如何来针对某类型的分布建立相应的广义线性模型。 Contents    1. 广义线性模型的认识

2015-03-27 00:49:27 46069 4

原创 最小二乘的概率解释

在线性回归中,我们以最小二乘来作为损失函数,然后使得这个损失函数的值最小。那么为什么会选择最小二乘而不是其它的指标呢? 今天就用概率方面的知识来解释。首先,设       其中是样本的误差纠正量。由于我们目的是训练出合适的参数,使得的绝对值尽量小,那么可以确定大部分的值集中在0附近,而少数值离0较远,很明显,这可以看成随机变量服从高斯分布。即       那

2015-03-27 00:48:01 4569 3

原创 局部加权回归

通常情况下的线性拟合不能很好地预测所有的值,因为它容易导致欠拟合(under fitting),比如数据集是一个钟形的曲线。而多项式拟合能拟合所有数据,但是在预测新样本的时候又会变得很糟糕,因为它导致数据的过拟合(overfitting),不符合数据真实的模型。 今天来讲一种非参数学习方法,叫做局部加权回归(LWR)。为什么局部加权回归叫做非参数学习方法呢? 首先参数学习方法是

2015-03-27 00:46:27 11436

原创 矩阵求导解最小二乘问题

关于最小二乘问题的求解,之前已有梯度下降法,还有比较快速的牛顿迭代。今天来介绍一种方法,是基于矩阵求导来计算的,它的计算方式更加简洁高效,不需要大量迭代,只需解一个正规方程组。 在开始之前,首先来认识一个概念和一些用到的定理。矩阵的迹定义如下 一个的矩阵的迹是指的主对角线上各元素的总和,记作。即

2015-03-27 00:44:12 29070 18

原创 朴素贝叶斯分类

今天,我学习了朴素贝叶斯分类,接下来,我会详细讲述它的原理以及在文本分类中的应用。 Contents   1. 分类问题的定义  2. 贝叶斯定理  3. 贝叶斯分类原理  4. 特征属性划分的条件概率及Laplace校准  5. 贝叶斯文本分类实例  1. 分类问题的定义    已知集合和集合,确定映射规则,使得任意,有且   仅有一个使得

2015-03-27 00:40:47 5350 1

原创 文本特征属性选择

今天,来学习文本的特征属性选择,在机器学习中,特征属性的选择通常关系到训练结果的可靠性,一个好的特征属性通常能起到满意的分类效果。凡是特征选择,总是在将特征的重要程度量化后再进行选择,而如何量化特征的重要性,就成了各种方法间最大的不同。接下来就介绍如何有效地进行文本的特征属性选择。 Contents    1. TF-IDF与特征属性选择   2. 信息增益与特征属性选

2015-03-27 00:36:52 7199

原创 决策树之ID3算法

今天,我来讲解的是决策树。对于决策树来说,主要有两种算法:ID3算法和C4.5算法。C4.5算法是对ID3算法的改进。今天主要先讲ID3算法,之后会讲C4.5算法和随机森林等。 Contents      1. 决策树的基本认识     2. ID3算法介绍     3. 信息熵与信息增益     4. ID3算法的C++实现  1. 决策树的基本认识

2015-03-27 00:32:39 86773 24

原创 梯度下降法终极版

在之前的文章中,我用梯度下降法实现了Logistic回归,当时用的是批量梯度下降法,现在就来进一步了解梯度下降法的原理以及在机器学习中的应用。 常见的梯度下降法主要有两种:(1)批量梯度下降法  (2)随机梯度下降法 现在假设样本的个数为,对单个样本来说,有一个维的向量,代表这个样本的个特征,还有一个值为预测值,要拟合的函数设为,那么误差准则函数为      

2015-03-26 23:03:53 8916 4

原创 Logistic回归与牛顿迭代法

在上一篇文章中,我讲述了Logistic回归的原理以及它的梯度上升法实现。现在来研究Logistic回归的另一种实现,即牛顿迭代法。 在上篇文章中,我们求出Logistic回归的似然函数的偏导数为                由于是一个多元函数,变元是,多元函数求极值问题以前已经讲过,参考如下文章 链接:http://blog.csdn.net/acdream

2015-03-26 22:56:21 16256 4

原创 Logistic回归与梯度下降法

Logistic回归为概率型非线性回归模型,是研究二分类观察结果与一些影响因素之间关系的一种多变量分析方法。通常的问题是,研究某些因素条件下某个结果是否发生,比如医学中根据病人的一些症状来判断它是否患有某种病。 在讲解Logistic回归理论之前,我们先从LR分类器说起。LR分类器,即Logistic Regression Classifier。在分类情形下,经过学习后的LR分

2015-03-26 22:46:49 16212 8

原创 相对熵(KL散度)

今天开始来讲相对熵,我们知道信息熵反应了一个系统的有序化程度,一个系统越是有序,那么它的信息熵就越低,反之就越高。下面是熵的定义 如果一个随机变量的可能取值为,对应的概率为,则随机变量的熵定义为              有了信息熵的定义,接下来开始学习相对熵。 Contents    1. 相对熵的认识   2. 相对熵的性质   3. 相

2015-03-26 22:35:30 82360 9

原创 BP神经网络

今天来讲BP神经网络,神经网络在机器学习中应用比较广泛,比如函数逼近,模式识别,分类,数据压缩,数据挖掘等领域。接下来介绍BP神经网络的原理及实现。 Contents   1. BP神经网络的认识  2. 隐含层的选取  3. 正向传递子过程  4. 反向传递子过程  5. BP神经网络的注意点  6. BP神经网络的C++实现  1. BP神经

2015-03-26 22:28:25 200139 52

原创 Go语言的分词器(sego)

今天,主要来介绍一个Go语言的中文分词器,即sego。本分词器是由陈辉写的,他的微博在这里,github详见此处。由于之前他在Google,所以对Go语言特别熟悉。sego的介绍如下    sego是Go语言的中文分词器,词典用前缀树实现, 分词器算法为基于词频的最短路径加动态规划。   支持普通和搜索引擎两种分词模式,支持用户词典、词性标注,可运行JSON RPC服务。

2015-03-26 22:15:49 9611

原创 SVD分解的并行实现

在之前的文章中,我对SVD进行了大致的了解,它在互联网高端领域中有广泛的应用,至于它的一些详细应用以后再进一步学习。现在主要的问题是如何有效地实现SVD分解,接下来我会先用两种方法来实现SVD分解,即基于双边Jacobi旋转的SVD和基于单边Jacobi旋转的SVD。 这两种方法重点参考中国知网上的一篇论文:《并行JACOBI方法求解矩阵奇异值的研究》 代码:#incl

2015-03-26 22:07:10 8649 10

原创 SVD原理及其应用导论

今天,来学习一种很重要的矩阵分解,叫做奇异值分解(Sigular Value Decomposition),简称SVD。 Contents     1. 认识SVD    2. SVD与广义逆矩阵    3. SVD与最小二乘法    4. SVD与数据压缩    5. SVD与潜在语义分析    6. SVD与低阶近似  1. 认识SVD

2015-03-26 22:03:22 14705 2

原创 Cholesky分解法

Cholesky分解法又叫平方根法,是求解对称正定线性方程组最常用的方法之一。对于一般矩阵,为了消除LU分解的局限性和误差的过分积累,采用了选主元的方法,但对于对称正定矩阵而言,选主元是不必要的。 定理:若对称正定,则存在一个对角元为正数的下三角矩阵,使得成立。 假设现在要求解线性方程组,其中为对称正定矩阵,那么可通过下面步骤求解 (1)求的Cholesky分解,得到

2015-03-26 21:58:27 65259 9

原创 线性反馈移位寄存器与梅森旋转算法

今天主要是来研究梅森旋转算法,它是用来产生伪随机数的,实际上产生伪随机数的方法有很多种,比如线性同余法,平方取中法等等。但是这些方法产生的随机数质量往往不是很高,而今天介绍的梅森旋转算法可以产生高质量的伪随机数,并且效率高效,弥补了传统伪随机数生成器的不足。梅森旋转算法的最长周期取自一个梅森素数,由此命名为梅森旋转算法。常见的两种为基于32位的MT19937-32和基于64位的MT19

2015-03-26 21:54:33 21732

原创 浅谈文本的相似度问题

今天要研究的问题是如何计算两个文本的相似度。正如上篇文章描述,计算文本的相似度在工程中有着重要的应用,比如文本去重,搜索引擎网页判重,论文的反抄袭,ACM竞赛中反作弊等等。 上篇文章介绍的SimHash算法是比较优秀的文档判重算法,它能处理海量文本的判重,Google搜索引擎也正是用这个算法来处理网页的重复问题。实际上,仅拿文本的相似度计算来说,有很多算法都能解决这个问题,并且都达

2015-03-26 21:48:11 5091

原创 C++虚函数

今天,我来讲一种在C++编程中实现多态的机制,叫做虚函数。对于多态来说,实际上就是用父类型的指针指向子类的实例,然后通过父类的指针调用子类的成员函数,这种技术使得父类型的指针有多种形态,这是一种常见的泛型技术,除虚函数外,还有模板技术,RTTI技术也属于泛型技术。 为了清楚地理解多态,先看下面这段代码。 #include using namespace std;class

2015-03-03 20:28:14 1917

Fibonacci数列与矩阵连乘

适合ACM-ICPC竞赛中关于Fibonacci数列和矩阵连乘的学习

2014-01-19

ACM数论概论好书

本书是对于ACM编程数论的好书,有很大帮助哦!

2013-05-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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