自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

曾经沧海难为水

除却巫山不是云

  • 博客(45)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 随机排列数组

随机排列数组  很多随机算法通过对给定的输入变换排列以使输入随机化。   (a)      第一种做法给每个元素随机赋值给一个优先级。    伪代码:    N= Arr.length    新建数组P[N]    For i=1 to N:               P[i]=random(1,N^3)///使得每个值尽可能唯一。    Sort Arr 用P的

2017-03-15 21:16:54 678

原创 最大子数组

最大连续子数组  问题描述:一个整数数组,数组中有正数也有负数,一个或连续的多个整数组成一个子数组,求所有子数组的和的最大值。  求解方法;暴力求解法、动态规划法、分治法(递归)  (a)     暴力求解法就是找出所有的子数组,复杂度为O(N^2)。一般不采用。  (b)      分治法。时间复杂度为O(nlogn)。其基本思想就是将问题分解成子问题,然后递归求解子问题,直到解

2017-03-15 16:59:40 695

原创 选择排序算法

选择排序算法  直接从待排序数组里选择一个最小(或最大)的数字,每次都拿一个最小数字出来,顺序放入新数组,直到全部拿完。再简单点,对着一群数组说,你们谁最小出列,站到最左边。再继续刚才的操作,一直到最后一个,继续站到左边边,现在数组有序了,从小到大。  package sort;import java.util.Arrays;public class SelectSort { p

2017-03-15 11:45:00 600

原创 冒泡排序算法

冒泡排序算法         冒泡排序是一种流形但是低效的排序算法,原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。这个算法比较简单。主要涉及两层循环,外循环表示循环迭代的次数,每次找出一个最大值或者最小值,最后一个元素不用进行排序,所以外层循环迭代次数为n-1。至于

2017-03-15 09:20:55 856

原创 归并排序算法

归并排序  分治思想:一个算法一次或者多次的递归调用其自身以解决紧密相关的若干子问题,这些算法典型的遵循分治法的基本思想。  分治思想主要有三个步骤:   (1)       分解,分解成若干子问题。   (2)       解决,递归的求解各个问题。   (3)       合并,合并这些子问题的解或者原问题的解。  归并排序完全符合这个分治模式:   (1)

2017-03-14 18:06:00 619

原创 插入排序

(1)    插入排序  INSERTION-SORT  如果输入数组中仅有常数个元素需要在排序过程中存储在数组之外,则称排序算法是原址的。  插入排序基本思路:该排序算法属于原址排序,在排序过程,只是开辟常数个新的内存空间,即只有常数个元素在排序过程中在数组之外。  算法伪代码:    算法复杂度:时间复杂度为O(N^2) 空间复杂度为O(1)    * 算法伪代码:

2017-03-14 15:46:30 402

原创 推荐系统概述

推荐系统概述  个性化推荐系统需要依赖用户的行为数据,通过分析大量用户行为日志,个不同用户提供不同的个性化推荐。(1)基于邻域的方法:   基于用户的协同过滤算法:这种算法给用户推荐和他兴趣相似而其他用户喜欢的物品。   基于物品的协同过滤算法。这种算法给用户推荐和他之前喜欢的物品相似的物品。  评测指标:召回率,覆盖率,新颖度等   新颖度:用推荐列表中物品的平均

2017-03-13 23:27:11 641

原创 数据倾斜处理方法

数据倾斜处理方法   对于不平衡数据的分类,为了解决上述准确率失真的问题,我们要换用 F 值取代准确率作为评价指标。用不平衡数据训练,召回率很低导致 F 值也很低。这时候有两种不同的方法。第一种方法是修改训练算法,使之能够适应不平衡数据。著名的代价敏感学习就是这种方法。另一种方法是操作数据,人为改变正负样本的比率。本文主要介绍数据操作方法。   1. 欠抽样方法  欠抽样方法是针对

2017-03-13 23:15:15 2491

原创 特征选择与降维总结

特征选择  特征选择是一个很重要的数据预处理过程,在现实的机器学习任务中,获得数据之后通常进行特征选择。  进行特征选择的原因:  (1)    维数灾难问题  (2)    去除不相关特征,往往会降低学习任务的难度。   如果没有任何领域知识作为先验假设,那就只好遍历所有可能的子集,然而在计算上是不可行的,或遭遇组合爆炸。常用的方法是:产生候选子集,评价之,基于评价结果,

2017-03-13 23:11:23 4641

原创 集成学习(二)

GBDT学习算法  GBDT是一个应用很广泛的算法,可以用来做分类、回归。在很多的数据上都有不错的效果。GBDT是由多棵回归树组成的。  原始的Boost算法是在算法开始的时候,为每一个样本赋上一个权重值,初始的时候,大家都是一样重要的。在每一步训练中得到的模型,会使得数据点的估计有对有错,我们就在每一步结束后,增加分错的点的权重,减少分对的点的权重,这样使得某些点如果老是被分错,那么就会

2017-03-13 23:03:55 632

原创 集成学习(一)

集成学习通过构建并结合多个学习器来完成学习任务。集成学习通过将多个学习器进行结合,常获得比单一学习器显著优越的泛化性能。  根据个体学习器的生成形式,目前的集成学习方法大致分成两类:个体学习器之间存在强依赖关系,必须串行生成的序列化方法。个体之间不存在强依赖关系,可以同时生成的并行化方法。前者的代表是Boosting,后者的代表是bagging和随机森林。  Boosting:  (1

2017-03-13 22:54:34 2295

原创 支持向量机算法

支持向量机  支持向量机是一种二类分类模型。其基本模型为定义在特征空间上的间隔最大的线性分类器,间隔最大是它有别有感知机。支持向量机还包括核技巧,使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,形式的化为求解凸二次规划问题,也等价于正则化的和业务损失函数的最小化问题。  支持向量机学习算法模型分类:  (1)线性可分支持向量机。当训练集线性可分的时候,通过硬间

2017-03-13 22:25:02 15390

原创 朴素贝叶斯算法

朴素贝叶斯分类算法一  算法基本内容  朴素贝叶斯算法是基于贝叶斯定理与特征条件独立假设的分类算法。对于给定的数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布。然后基于此模型,对给定的输入,利用贝叶斯定理求出后验概率最大。  朴素贝叶斯分类属于生成模型,生成模型由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y/X)作为预测的模型,即生成模型:    P(Y

2017-03-12 21:05:01 3035

原创 KNN算法

KNN算法一 三大要素 KNN算法三大要素:K值的选择,距离向量,以及分类规则。  KNN属于懒惰学习算法,不需要训练过程。既可以分类,也可以进行回归分析。  (1)K值的选择会对算法的结果产生重大影响。K值较小意味着只有与输入实例较近的训练实例才会对预测结果起作用,但容易发生过拟合;如果 K 值较大,优点是可以减少学习的估计误差,但缺点是学习的近似误差增大,这时与输入实例较远

2017-03-12 16:36:02 2291

原创 决策树算法

决策树算法  决策树是一种基本的分类与回归算法,其实就是if-then的集合。  主要包括三个部分:  (1)    特征选择  (2)    决策树的生成  (3)    决策树的剪枝   决策树由结点和有向边组成。结点有两种类型:内部结点和叶子结点。内部结点表示一个特征或者属性。叶子结点表示一个类。决策树学习的损失函数通常是正则化的极大似然函数。  常用的算法有

2017-03-12 14:48:14 1019

转载 机器学习中的范数规则化之(一)L0、L1与L2范数

机器学习中的范数规则化之(一)L0、L1与L2范数[email protected]://blog.csdn.net/zouxy09        今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化。我们先简单的来理解下常用的L0、L1、L2和核范数规则化。最后聊下规则化项参数的选择问题。这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文。知识有限,以下都是我一些浅显的看法

2017-03-06 15:40:58 650

原创 逻辑斯蒂回归

(1)线性回归于逻辑斯蒂回归联系与区别   线性回归:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数)来得到预测值的Y,然后最小化所有的样本预测值Y与真实值y‘的误差来求得模型参数。我们看到这里的模型的值Y是样本X各个维度的Xi的线性叠加,是线性的。  然后再来看看我们这里的logistic回归模型,模型公式是:,这里假设W>0,Y与X各维度叠加和(

2017-03-06 14:48:26 859

原创 线性回归

在给定由d个属性描述的示例x=(x[1]; x[2];…x[d]),其中xi为样本x在第i个属性上的取值,线性模型试图学得一个属性的线性组合来进行预测的函数,即       f(x) =w1 x[1]+w2 x[2]+w3 x[3]+…+wd x[d]+b;  一般写成f(x)=w.x+b  线性建模形式简单、易于建模,但是却蕴含着机器学习中一些重要的基本思想,许多功能强大的非线性

2017-03-05 19:02:40 2584

原创 正则化与交叉验证

上一篇博文学习了一下模型的的学习策略,实际上就是目标函数、评价函数。有两种准则:经验风险最小化,结构风险最小化。两者的区别就是结构风险最小化是在经验风险最小化的基础上加了一个正则化项。首先就了解一下正则化项。(1)正则化模型选择的典型方法是正则化。正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或者罚项,                       正则化项符合奥

2017-03-05 15:09:55 2013 3

原创 统计学习三要素之策略

李航老师在《统计学习方法》中讲过:统计学习方法都是由模型、策略和算法构成的。在这篇博文中,学习一下策略。  策略就是在有了模型的假设空间之后,考虑按照什么样的准则学习或者选择最优的模型,统计学习的目标就在于从假设空间中选取最优模型。策略其实可以认为是根据模型导出来的目标函数、评价函数。(1)损失函数:(a)0-1损失函数。   0-1损失函数就是预测值与真实标签相同

2017-03-05 11:43:12 699

原创 感知机算法(二)---代码实现

废话不多说了,这篇博文就是代码。(1) 感知机学习算法的原式形式package perceptron;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;public class Perceptron { public stat

2017-03-04 10:55:01 932

原创 感知机算法(一)---原理

感知机算法是错误驱动的在线学习算法。首先初始化一个权重W0、截距b,然后每次分错样本时,就用这个样本改变权重以及截距b。其实就是构造了一个分类超平面。(1)感知机算法的学习策略是极小化误分类点到超平面的距离。  具体推导过程如下所示,其实不用看下面,很简单,就是求出误分类点到分类超平面之间的距离总和。即学习的损失函数就是误分点到超平面距离。(2)接下来,

2017-03-04 09:11:10 10345 2

原创 判断一个无序数列是否是等差数列

这个题目是腾讯电话面试的考题之一:给定一个数组,不适用任何排序方法,快排什么的,判断出一个数列是否是等差数列,并且要求算法复杂度不得超过快排。我的想法是只是判断一个数组是否为等差数列,相对来说容易好多。思路如下:  (1)对数组进行第一次遍历,找出数组中的min.max  (2)如果是等差数列,那么公差必然是(max-min)/(n-1)   n为元素个数  (3)有了公差,有了首

2017-03-03 10:55:59 6528 1

原创 梯度下降法

在学习随机梯度下降法时,首先再了解一下几个简单的知识点。(1)    知识点1:可导,可微,连续对于多元函数,如果每个偏导都存在且连续(单单存在偏导数是不够的一定也要连续)那么就可以得到该函数可微,可微就可以推出该函数连续。而连续不可以反推。在一元函数中,可导和可微是等价的。可导必连续,连续不一定可导。(2)    知识点2:方向导数与梯度偏导数反映的是函数沿坐标轴

2017-03-01 16:02:26 2093 2

原创 聚类算法之总结

前面的博文已经大致将基本的聚类算法学习了一遍,聚类算法学习这个专题基本就告一段落了,其实好多东西还是没有涉及:  (1)高维数据聚类:子空间聚类、维规约聚类(PCA)  (2)图聚类  (3)并行聚类算法   。。。。。。  这些高级聚类分析,以后会再做专题进行学习。现在做一个简单的总结。如果有什么不对的地方,欢迎大家批评指正。

2017-02-28 19:55:41 1122

原创 基于概率模型的聚类

基于概率模型的聚类我们之所以在数据集上进行聚类分析,是因为我们假定数据集中的对象属于不同的固有类别。即聚类分析的目的就是发现隐藏的类别。从统计学上讲,我们可以假定隐藏的类别是数据空间的一个分布,可以使用不同的概率密度函数(或者分布函数)进行精确的表示。我们称这种隐藏的类别为概率簇。对于一个概率簇C,它的密度函数f和数据空间的点o, f(o)是C的一个实例在o上出现的相对似然。假设我们想

2017-02-28 17:21:34 7824

原创 模糊聚类分析之基础

本篇博文主要讲解一下模糊聚类的相关内容。在讲解模糊聚类之前,先把模糊数学中几个我们主要用到的公式讲一下。(1)模糊矩阵的交,并,余,转置操作(2)模糊矩阵的乘法。  对于模糊矩阵的乘法,可能有点不明白。看下图就差不多明白了。第一行X第一列:0.7X0.9最大,取较小的0.7第一行X第二列:0.3X0.9最大,取较小的0.3

2017-02-28 14:42:15 10533 1

原创 网格聚类算法(三)

CLIQUE:一种类似于Apriori的子空间聚类算法 CLIQUE算法是基于网格的空间聚类算法,但它同时也非常好的结合了基于密度的聚类算法,因此既能够发现任意形状的簇,又可以像基于网格的算法一样处理较大的多维数据。CLIQUE算法把每个维划分成不重叠的社区,从而把数据对象的整个嵌入空间划分成单元,它使用一个密度阈值来识别稠密单位,一个单元是稠密的,如果映射到它的对象超过密度阈值。

2017-02-27 20:53:18 11887 1

原创 网格聚类算法(二)

在本篇博文中,主要学习一下STING聚类算法。      (1) STING:统计信息网格STING是一种基于网格的多分辨率的聚类技术,它将输入对象的空间区域划分成矩形单元,空间可以用分层和递归方法进行划分。这种多层矩形单元对应不同的分辨率,并且形成了一个层次结构:每个高层单元被划分成低一层的单元。关于每个网格单元的属性的统计信息(如均值,最大值和最小值)被作为统计参数预先计算

2017-02-27 17:35:43 15580

原创 网格聚类算法(一)

基于网格的聚类算法前面的博文已经将划分、层次、密度的聚类算法讲了一下,接下来就是网格的方法。聚类算法很多,其中一大类传统的聚类算法是基于距离的,这种基于距离的聚类算法只能发现球状簇、处理大数据集以及高维数据集时,不够有效。另一方面发现的聚类个数往往依赖于用户参数的指定。这对用户来说是非常困难的。基于网格的聚类算法将空间量化为有限数目的单元,形成一个网格结构,所有聚类都在网格

2017-02-27 17:15:46 20340

原创 密度聚类算法(五)总结

前面的四篇博文已经大致的将密度聚类以及密度聚类常用的算法DBSCAN,OPTICS,DENCLUE介绍了一下,按照惯例要改将这一部分串一下了。(1)DBSCAN算法全局参数,导致聚类质量不是很好.(2)OPTICS针对全局参数做了改进,输出簇排序。(3)但是DBSCAN与OPTICS依旧是对邻域半径r比较敏感,引入了DENCLUE算法。总结如下图所示,具体细节可以翻阅前面的几篇博文

2017-02-27 17:09:21 1777 1

原创 密度聚类算法(四)

DENCLUE:基于密度分布函数的聚类DENCLUE是一种基于一组密度分布函数的聚类算法。首先说一下密度估计的概念:密度估计就是根据一系列观测数据集来估计不可观测的概率密度函数。在基于密度聚类的背景下,不可观测的概率密度函数是待分析的所有可能的对象的总体的真实分布。观测数据集被看做取自该总体的几个随机样本。不好理解?好,那就通俗的说一下:比如说要找一个女朋友,你不了解她,但是可以先

2017-02-27 11:05:17 5194

原创 密度聚类算法(三)

OPTICS算法尽管DBSCAN算法能够给定的输入参数r(邻域的最大半径)和MinPts(核心对象的最小数量)聚类对象,但是参数任务留给了用户。参数的设置通常依靠经验,难以确定。大多数算法对参数的设置都比较敏感,设置的不同可能导致很大差别的聚类效果。         基于密度的簇关于邻域阈值是单调的。即在DBSCAN中,对于固定的MinPts值和两个邻域r1         上面这一段

2017-02-26 16:09:31 1954

原创 密度聚类算法(二)

DBSCAN是一种著名的密度聚类算法,基于一组邻域参数(r,MinPts)来刻画样本的紧密程度。说的通俗点就是以某个样本点为中心,以r为半径进行画圆,在圆内的范围都是邻域范围。         基本概念:         (1)r-邻域。对任意Xi属于数据集D,其r邻域包含样本集D中与Xi的距离不大于r的样本,即N(Xi)={Xj属于D,dist(Xi,Xj)其实就是画了个圈子)

2017-02-26 16:06:00 2205 1

原创 密度聚类算法(一)

之前的两个小专题已经把划分方法聚类/层次方法聚类过了一遍,接下来就是我个人非常喜欢的一类聚类算法——密度聚类算法。通过之前的博文,我们发现划分方法聚类算法与层次聚类算法把距离(欧氏距离,闵可夫斯基距离,曼哈顿距离等)作为两个样本或者两个簇之间相似度的评价指标,因此导致了划分方法聚类算法和层次聚类算法都旨在发现球状簇,对任意形状的聚类簇比较吃力。如下图所示,左边的聚类簇,很明显是球状簇,那么

2017-02-26 10:41:11 5351

原创 层次聚类算法总结

上述的几篇博文已经大致将基本的层次聚类算法讲了一下,现在做个简单总结,将这几个算法串联起来。AGNES和DIANA这两个层次聚类算法尽管比较简单,但是存在缺点,因此需要改进,针对不同的缺点,引入了不同的算法。(1)可伸缩性差(2)在凝聚或者分裂的聚类过程中,之前的操作不能撤销。(3)只能发现球状簇。主要针对这三个缺点,下面对应的算法做了改进。通过这一个流程图,可以轻松的将层次聚

2017-02-25 22:59:54 1977

原创 层次算法聚类(四)

Chameleon聚类算法:使用动态建模的多阶段层次聚类Chamelon算法是一种层次聚类算法,它采用动态建模来确定一对簇之间的相似度。在Chamelon算法中簇的相似度依据有如下两点评估:(1)簇中对象的连接情况。(2)簇的邻近性。即如果两个簇的互联性很高并且他们之间又靠的很近,那么就将其合并。 (1)  Chamelon算法采用K-最近邻图的方法来构建稀疏图,,图的每一个顶点代表一

2017-02-25 22:46:48 1438

原创 层次聚类算法(三)

上边博文学习了一下AGNES算法与DIANA算法,针对伸缩性差一级不能撤销先前步骤所做的工作,学习一下BIRCH聚类算法。BIRCH算法:Balanced Iterative Reducing and Clustering using Hierarchies.利用层次结构的平衡迭代规约和聚类。名字真的长的不行了。该算法是为大量数值数据聚类设计的,它将层次聚类(在初始微聚类阶段)与诸如迭

2017-02-25 18:48:27 3032

原创 层次聚类算法(二)

上篇博文简单的讲述了层次聚类的基本概念,接下来就是具体的讲述凝聚的聚类算法AGNES算法与分裂的聚类算法DIANA聚类算法。AGNES算法:算法描述:             输入:包含n个对象的数据库,终止条件簇的数目k             输出:k个簇(1)       将每个对象当成一个初始簇(2)       Repeat(3)

2017-02-25 17:55:27 1011

原创 层次聚类算法(一)

层次聚类(hierarchical clustering)试图在不同层次上对数据集进行划分,从而形成树形的聚类结构,数据集的划分可采用“自底向上”的聚合策略,也可以采用“自顶向下”的分拆策略。即层次聚类可以是凝聚的也可以是分裂的。         凝聚的层次聚类方法使用自底向上的策略。即刚开始每个点都认为是一个簇,然后在迭代过程中,不断的合并直到满足某种条件。在合并步骤中,它找出最相近的簇(“

2017-02-25 17:35:41 4888

智能交通灯控制

智能交通灯控制系统,基于protues的单片机仿真,功能强大

2015-05-15

MFC入门教程

MFC入门教程,适用于学习界面创作,深入浅出,值得拥有

2015-05-05

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

TA关注的人

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