自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 提升树,bagging与随机森林

提升树是一种以分类树或者回归树为基本分类器的提升方法。对于分类树只需将adaboost算法中的基函数设置为二分类二叉树即可。而回归树则是根据残差来训练下一个分类器的回归二叉树。下面主要介绍一下回归提升树的算法。回归提升树回忆一下,回归树就是将输入空间分割成MMM个不相关的区域R1,...,RMR1,...,RMR_1,...,R_M,即回归树为f(x)=∑Mm=1cmI(x∈R...

2018-07-30 23:18:40 1524

原创 adaboost提升算法

引言俗话说得好,三个臭皮匠赛过诸葛亮。更主要的是三个臭皮匠好找,一个诸葛亮太难找了。在机器学习里面也是一样的。我们可以设计出各种分类器,然而分类器的效果确实不一而同的,相对而言,效果较差的分类器比效果很好的分类器更好设计,后者很多时候可遇而不可求。那么是否有什么方法能够将一系列的弱分类器组合,使其能够提示分类效果呢?这就是机器学习里面的提升学习。而且后来Schapire证明强可学习与弱可学习是...

2018-07-30 23:17:45 372

原创 多维缩放算法(MDS)

算法思想MDS算法思想很简单,一句话就是保持样本在原空间和低维空间的距离不变。因为距离是样本之间一个很好的分离属性,对于大多数聚类算法来说,距离是将样本分类的重要属性,因此当我们降维后,保持距离不变,那么就相当于保持了样本的相对空间关系不变。MDS算法假设mmm个样本在原始空间中的距离矩阵为D∈Rm∗mD∈Rm∗mD \in R^{m*m},distijdistijdist_{...

2018-07-30 23:16:31 1771

原创 LDA线性判别分析

算法思想LDA是经典的有监督的降维方法。而我们的降维方法,一般都是将样本数据进行投射。LDA的思想就是将样本投射到一条直线上,使同类的样本点尽可能的接近,而异类的样本点尽可能的远离。如下图所示:算法推导假设我们的样本数据是D={(x1,y1),...,(xm,ym)}D={(x1,y1),...,(xm,ym)}D = \left \{ (x_1,y_1), ..., (x_m,y...

2018-07-30 23:15:50 241

原创 典型相关分析(CCA)

CCA是数据挖掘中重要的算法,可以挖掘出数据间的关联关系的算法。基础知识如何衡量两个变量之间的相关性呢?我们有相关系数,如下所示:ρ(X,Y)=cov(X,Y)DX√DY√ρ(X,Y)=cov(X,Y)DXDY \rho(X, Y) = \frac{cov(X,Y)}{\sqrt{DX}\sqrt{DY}}值ρ(X,Y)ρ(X,Y) \rho(X, Y)的绝对值越接近1,说明X...

2018-07-30 23:14:03 19719 2

原创 决策树

引言决策树是一种树模型,本质上讲就是利用特征对空间进行划分的一种方法。在计算机的数据结构里面我们有二叉树等等模型,在思想上,决策树与他们是一样的。决策树是一种最简单的机器学习算法,甚至某种程度上把它当做机器学习算法有点别扭。对于决策树算法来说,主要包括两点:以什么样的规则选择根节点剪枝防止过拟合常见的决策树算法有ID3,C4.5,CART等算法,我们下面来一一介绍决策树模...

2018-06-28 23:06:09 163

原创 极大似然估计与贝叶斯估计

引言在机器学习任务中,最最经常遇到的一个问题就是给定一组训练样本,学习到生成这组样本的模型的参数,这也是统计学习的根本任务。我们知道统计学上分频率学派和贝叶斯学派,那么自然的,对这个问题的解决就有两种模型,一种是频率学派推崇的极大似然估计,一种是贝叶斯学派主张的贝叶斯估计,下面我们就来介绍下这两种估计极大似然估计频率学派认为给定一个模型,她的参数是一个固定值,因此可以直接根据训练数...

2018-06-28 23:03:32 870 2

原创 密度聚类

引言其实对于所有的聚类问题,都有一个核心点,那就是以什么样的规则来划分两个点是不是同一类。密度聚类,本质上就是基于一种密度的概念来进行聚类。而密度的定义本质上也是来自于两点的距离,所以其实对于聚类的算法来看,大家本质上都差不多,谁也别笑话谁。下面我们来总结介绍一种叫做DBSCAN的密度算法。DBSCANDBSCAN 的全称是 Density-Based Spatial Cluste...

2018-06-28 23:02:17 2904

原创 层次聚类

引言前面,我们介绍了一些聚类的方法,像k-means啊,密度聚类,LVQ啊,不管怎么样,都要首先随机指定k个中心点,然后用这些中心点逐步迭代找到最终的中心点。这就有问题了,如果随机选取的点不好,不具有代表性,那么就会很糟糕,轻则只是聚类慢,重则会导致聚类效果比较差。本节我们引入层次聚类,它不需要提前指定随机的中心点,能够有效的对初始样本进行聚类。层次聚类本质上讲,层次聚类是自底向上...

2018-06-28 22:58:46 1919

原创 LVQ聚类算法

LVQ算法LVQ是learning vector quantization的简称,是一种被称之为学习向量量化的算法。其算法思想是通过找到一组原型向量来代表聚类的中心。而与其他的聚类算法不同,LVQ假设每个样本是有标签的,LVQ通过这些假设的标签来辅助聚类。LVQ算法实现给定样本集{(x1),(x2),...,(xN)}{(x1),(x2),...,(xN)} \left \{ ...

2018-05-23 23:08:28 4573

原创 朴素贝叶斯算法

引言bayes在统计学上是一个非常重要的概念,直接导致了一个流派的诞生,本章我们首先回顾一下bayes公式,以及其在统计学上的一些概念,然后将其引入到机器学习中,引出朴素贝叶斯算法。朴素贝叶斯算法在垃圾邮件过滤等问题上应用广泛,是一个很简单且很实用的算法。Bayes定理在数学上,我们用贝叶斯定理表示随机事件的条件概率,即P(A|B)P(A|B) P(A|B) 表示事件B发生的情况...

2018-05-23 23:07:34 324

原创 模糊聚类

引言前面我们讲了k-means, k-means属于一种硬聚类的方法,也就是说一个样本属于哪个类了后,他就是哪个类别的了,非此即彼,来不得半点马虎。但是现实生活中,哪有这么多的确定的事啊,身不由己经常发生,因此引入了模糊聚类,英文名Fuzzy c-means clustering, 模糊聚类意味着样本不再是刚性的属于某一类别了,而是给出其属于各个类别的概率。因此称之为模糊聚类。模糊聚类...

2018-05-23 23:05:59 4611 1

原创 k-means算法

引言通常来说,机器学习根据训练数据是否有标签可以分为两类,一类是监督学习,也就是训练数据有标签,即给定输入,我们知道他属于哪一类,另外一种就是无监督学习,我们不知道他的标签是什么,对于数据应该怎么分类也所知不多。对于监督学习,有很多算法,包括神经网络啊,支持向量机啊等等。对于无监督学习,目前的手段并不多,主要是聚类,通过数据内部结构,将数据自动聚成几个类别,k-means就是聚类的代表算法之一...

2018-05-23 23:04:12 178

原创 KNN算法

K近邻算法K近邻算法全名为k-nearest neighbor,简称KNN,是一种思想非常简单的监督学习方法。 其核心思想就是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。也就是说给定有label的训练样本,新的待分类样本需要计算与所有训练样本的距离,然后排序选择最近的K个样本,这K个样本属于哪个类别的多,那么此待分...

2018-05-17 23:48:00 165

原创 遗传算法与进化算法

引言1858年7月1日C.R.达尔文与A.R.华莱士在伦敦林奈学会上宣读了进化论的论文,至此进化理论深入人心,为广大吃瓜群众开辟了一个思想的新的天地。而我们的机器学习大师们向来喜欢从生物学家那里找灵感,神经网络的灵感据说来自于人体的神经元,而根据进化论的思想,我们的大师们提出了遗传算法和进化算法。(其实我觉得我们的大师们只是给自己发明的东西找个勉强站得住脚的理由吧,哈哈。)遗传算法...

2018-05-15 23:56:38 17554 3

原创 机器学习之过拟合

引言什么是过拟合呢?所谓的过拟合实际上就是分类器或者函数过度的拟合了训练数据,在训练数据上表现良好,但是在其他的数据上泛化能力非常差。如下图所示:(plus:其实从这张图中也可以得出一个不严谨的结论,函数越简单,其拟合能力可能越好。这里面其实也蕴含了一些哲学道理与生活哲理,极简生活哲学,扯远了。。。。)我们试图学习分开红点和蓝点的一个分类器(本质上就是学习一个函数),可以看到绿色的...

2018-05-15 23:54:08 412

原创 神经网络之softmax神经元

引言在之前的内容里,我们采用的是sigmoid函数作为输出层神经元。这里我们介绍一种softmax函数作为新的输出层。softmax函数softmax本质上是一种归一化的过程,假设神经元的带权输入为: zLj=∑kwLjkaL−1k+bLjzjL=∑kwjkLakL−1+bjL z_j^L= \sum_k w_{jk}^La^{L-1}_k + b_j^L 定义输出神经元的激...

2018-05-15 23:52:17 800

原创 神经网络之代价函数的选择

引言上一章节,我们介绍了神经网络,同时在后面的扩展遗留了几个问题。其中一个问题就是代价函数的选择。常规的机器学习算法中,我们都是选取的二次函数作为代价函数,这个没有什么大的问题,但是本章我们分析一下二次代价函数,看下二次代价的性质,同时看下是否有其他更好的代价函数可供我们选择。二次代价函数上一章节的神经网络中,我们选择了二次代价函数与sigmoid激活函数作为例子,引出介绍了神经网...

2018-05-15 23:51:21 2291

原创 早期深度神经网络的问题

引言在神经网络最开始被提出来的时候,人们设计的网络大多是这个样子的一个输入层,一个输出层,一个隐藏层,用这样的网络能够解决很多实际的问题。但是一层隐藏层的网络能够学习到的东西毕竟是有限的,自然而然的人们就想到将网络进行扩展,给神经网络多增加隐藏层,那么神经网络就应该能够学习到更加复杂的模型,就如下所示:人们发现对于很多问题,增加了一层隐藏层,效果有提升哎,那就就自然而然的继续增...

2018-05-15 23:48:34 628

原创 机器学习之神经网络

引言在机器学习领域,主要存在着两大流派,一派是统计学习方法,一派就是神经网络。统计学习方法大多具有严谨的数学推理,模型都有很完备的数学解释,像是SVM,就是通过核把非线性问题映射到高维空间变为线性问题。而神经网络则不然,一直没有找到合理的数学解释,迄今为止都属于实验推动,虽然说是思想来源于人类的神经元的模拟,但是没有数学解释垫背,终究没有那么大的底气。神经网络在1943年就已经被提出了,然...

2018-05-15 23:27:19 349

原创 深度优先和广度优先的Python实现

#coding=utf-8 class Gragh(): def __init__(self,nodes,sides): ''' nodes 表示点 sides 表示边 ''' # self.sequense是字典,key是点,value是与key相连接的点 self.sequense =

2018-01-09 05:09:40 15107 9

原创 python学习之地址簿程序

A Byte of Python地址簿程序

2017-10-31 05:02:41 958

原创 SQLite的Python编程

python sqlite3

2017-06-07 00:20:49 824

原创 SQLite常见的SQL命令

sqlite常用的sql命令

2017-06-04 22:39:23 1393

原创 SQLite笔记之基础命令

SQLite常用的命令

2017-06-04 15:33:02 756

原创 SQLite系列笔记之环境搭建

SQLite简介与环境搭建

2017-05-31 22:38:20 1606

原创 五大常用算法总结

引言据说有人归纳了计算机的五大常用算法,它们是贪婪算法,动态规划算法,分治算法,回溯算法以及分支限界算法。虽然不知道为何要将这五个算法归为最常用的算法,但是毫无疑问,这五个算法是有很多应用场景的,最优化问题大多可以利用这些算法解决。算法的本质就是解决问题。当数据量比较小时,其实根本就不需要什么算法,写一些for循环完全就可以很快速的搞定了,但是当数据量比较大,场景比较复杂的时候,编写for循环

2016-06-10 23:26:41 44924 5

原创 分治算法

分治算法的名字是divide-and-conquer, 从名字上看一目了然,就是先把一个问题divide成为几个子问题,然后分别解决各个子问题。兵法有云:分而治之,各个击破。英文释义divide the problem instance, solve subproblems recursively, combine the results, and thereby conquer the probl

2016-05-21 00:15:05 3275 1

原创 动态规划解决0/1背包问题

之前总结了利用穷举法,贪婪法解决0/1背包的方法,同时也通过Fibnacci介绍了动态规划,那么该如何来利用动态规划来解决0/1背包问题呢?首先动态规划有两个条件; 如果可以把局部子问题的解结合起来得到全局最优解,那这个问题就具备最优子结构 如果计算最优解时需要处理很多相同的问题,那么这个问题就具备重复子问题从这两点看,0/1背包问题跟动态规划没有半毛钱的关系啊。那这两者又是怎么联系起

2016-05-18 20:12:51 12728 11

原创 动态规划

动态规划是20世纪50年代由Richard Bellman发明的。不像贪婪算法,回溯算法等,单从名字上根本理解不了这是什么鬼。Bellman自己也说了,这个名字完全是为了申请经费搞出来的(囧),所以说这个名字坑了一代又一代的人啊。言归正传,我们来了解下动态规划,dynamic Programming,是一种高效解决问题的方法,使用与具有重复子问题和最优子结构的问题。(又是两个搞不懂的名词啊)。不过没

2016-05-15 23:35:14 9375 1

原创 0/1背包问题之穷举解法

穷举法 0/1背包

2016-05-15 16:58:03 7208 7

原创 贪婪算法

贪婪算法 0/1背包

2016-05-15 16:53:58 19742 4

原创 Python之八皇后问题

八皇后的问题解析请见:点击打开链接这里给出Python的解法,相对于C语言,Python比较简单,代码量较小,但是效率也只能呵呵了,貌似很难两全啊。首先定义冲突函数:def conflict(state,nextX): nextY = len(state) for i in range(nextY): if abs(state[i] - ne

2014-11-23 16:39:19 1597

转载 C语言字节对齐

转载zi  一、概念       对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。     二、为什么要字节对齐      需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000

2014-05-04 20:54:46 634

原创 Python学习之函数

0) 引论函数是实现代码复用的主要途径之一,而且函数的使用也可以使得程序更加容易理解,更加规范化。程序很多时候并不是给计算机的,而是给人看的。这里总结一下Python中的函数的应用1) 函数首先Python中的函数的格式是怎样的。def 函数名(形参): 函数体下面是一个计算fibonacci数列的函数的定义:def fibs(num): result=[0

2014-01-17 21:09:49 803

原创 Python学习之控制流部分

0) 引论前面介绍了基础数据部分,本节将总结一下Python的控制流。有了基础数据以及控制流,则就可以写出一些初步的程序。可以说语言通用的部分就是基础数据和控制流,这两部分构成了一门语言最最基本的部分。控制流主要有顺序结构,if结构,循环结构。下面一一介绍。1)赋值语句>>> x=1>>> x1除了最基本的赋值语句形式:x=1; Python还支持链式赋值,如下面所示:

2014-01-15 14:17:07 620

原创 Python学习之基础数据部分

0)引论Python是一门面向对象的编程语言,语法简洁清晰,容易上手,而且应用相当广泛,尤其在科学计算领域与网络领域。python与matlab很相似,都是解释型的语言,能够通过解释器实时得到每一步的结果。相对比于matlab,python是免费的,这才是其最大优势,而且python有很强大的库(当然这个比matlab差点,毕竟商业软件有很强大的资金支持),但是在很多方面也是够用的了,而且py

2014-01-13 18:06:28 983

原创 那些年我所犯过的错误

0) 引论程序放下了很久,近来因各种原因需要拾起来,要靠编程混口饭吃,所以在做一些编程学习以及练习,下面记录一些编程过程中遇到的错误,以警戒自己。以后碰到问题会时常更新这一篇。1)宏定义这个问题发生在编写回溯算法的八皇后问题上,当时对绝对值求取的定义出现了失误,导致了严重的Bug。当时错误的定义为:#define abs(x) (x)>=0?(x):-(x)正确的定

2013-12-18 20:35:35 1048

原创 回溯算法(BackTracking)--八皇后问题

0) 回溯算法:回溯算法也算是遍历算法的一种,回溯算法是对Brute-Force算法的一种改进算法,一个典型的应用是走迷宫问题,当我们走一个迷宫时,如果无路可走了,那么我们就可以退一步,再在其他的路上尝试一步,如果还是无路可走,那么就再退一步,尝试新的路,直到走到终点或者退回到原点。1) 皇后问题:N皇后问题是指在N*N的棋盘上放置N个皇后,使这N个皇后无法吃掉对方(也就是说两

2013-12-16 22:17:40 18328 1

原创 随机化算法

0) 引论随机是很有用的一个东西,先不去管什么随机化算法,至少随机数是个很好的东西,就像掷骰子,总可以帮组我们决定一些犹豫不决的并且无关紧要的事。在机器学习中,一般我们都是要在整个数据集中随机抽取一定的数据做训练,另外一些做测试,这样结果才能有说服力,这里也将用到了随机数。因此下面我们首先来讲解一下伪随机数发生器。1) 伪随机数发生器真正意义上的随机数是很难产生的,大多数的随机

2013-12-14 21:21:00 11255

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