- 博客(146)
- 资源 (10)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 置信度传播算法(Belief Propagation)
置信度传播算法利用结点与结点之间相互传递信息而更新当前整个MRF的标记状态,是基于MRF的一种近似计算。该算法是一种迭代的方法,可以解决概率图模型概率推断问题,而且所有信息的传播可以并行实现。经过多次迭代后,所有结点的信度不再发生变化,就称此时每一个结点的标记即为最优标记,MRF也达到了收敛状态。对于无环环路的MRF,BP算法可以收敛到其最优解。
2014-11-06 16:11:30
54356
39
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 支持向量机SVM学习笔记
SVM 核心思想1. Define an optimal hyperplane: maximize margin2. Extend the above definition for non-linearly separable problems: have a penalty term for misclassifications.3. Map data to h
2014-10-20 14:00:26
3836
4
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 浅谈PCA算法
PCA(Principal Component Analysis)是一种数据分析方法,它通过线性变换将原始数据变换为一组各维度线性无关的表示,用于提取数据的主要特征分量,常用于高维数据的降维。降低数据的维度是非常有用的,如我们看到数据的分布仅限于2维或者3维,低维数据可以在数值算法中明显减少运行时间,而且许多统计模型存在协变量的高度相关,PCA就可以产生不相关协变量的线性组合。PCA的思想是将
2014-10-02 18:40:03
13067
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 操作系统内存管理
1. 内存管理方法 内存管理主要包括内存分配和回收、内存扩充、内存共享和保护、内存的扩充、地址变换(静态地址重定位和动态地址重定位)等功能。静态地址重定位:在虚拟空间程序执行之前由装配程序完成地址映射。动态地址重定位:在程序运行过程中要访问数据时再进行地址变换(即在逐条指令执行时完成地址映射)。2. 连续分配存储管理方式连续分配是指为一个用户程序分配连续的内存空间
2014-06-14 09:54:46
1655
2
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 MapReduce组件功能分析
JobClient 每一个job 都会在客户端通过 JobClient类将应用程序以及作业的配置参数打包成jar文件存储在HDFS,并把作业提交给 JobTracker。JobClient.runJob()创建一个新的 JobClient实例
2014-03-03 15:50:37
2742
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 BlocksMap源码分析
BlocksMap,主要功能是保存block和其元数据的映射,block的元数据为它所在的INode和存储该block的DataNode。Block对象记录了blockid、block大小以及时间戳信息。block->DataNode的信息没有持久化存储,而是NameNode通过DataNode的blockReport获取该block所在的DataNode List。block的元数据对应的类为B
2013-06-08 16:10:27
2430
1
原创 常用命令汇总
该博文为我之前文章重新设置文章格式,改为markdown格式,更加美观。中文乱码 编辑 `/etc/sysconfig/i18n,LANG=”zh_CN.UTF-8”查看环境变量 env查看当前用户的计划任务 crontab -l 查看挂接的分区状态 mount | column -t 查看所有分区
2017-03-24 16:18:20
973
原创 Spark MLlib矩阵分解源码分析
基础知识特征值分解如果一个向量 vv 是方阵 AA 的特征向量,可以表示成下面的形式: Av=λvAv = \lambda v 其中, λ\lambda 为特征向量 vv 对应的特征值,矩阵 AA 的特征向量是相互正交的。 特征值分解是将矩阵 AA 分解为如下形式: A=Q∑Q−1A=Q\sum Q^{-1} 其中,矩阵 QQ 是 AA 的特征向量组成的矩阵,∑\sum 是对角矩阵。奇异值
2017-03-01 16:07:51
3020
原创 2016的诗和远方
当生活被眼前的苟且蒙住了双眼,其实你所希冀的远方,就在那噼啪敲击的键盘里、渗入脑海实现想法的一行行代码中~眼看一年就要结束了,坐在公司的办公区里,窗外霓虹灯五光十色,办公楼鳞次栉比,恍惚想起了这一年充满波折又熠熠生辉的日子,却又是欲买桂花同载酒,终不似,少年游。耳机响着Karen的一生所爱,不由地想起了《大话西游》里面的一句台词:“你看那个人,好奇怪哦,好像一条狗。”,活生生地映射了眼前的苟且,道
2016-12-31 17:31:49
1663
2
原创 Spark执行原理概述
Spark优点速度快 基于内存的计算比MapReduce快100倍以上;简单易用 支持多种语言API,快速构建不同应用;通用 提供统一的解决方案:SQL、Streaming、MLib、GraphX;可融合 资源管理和调度:YARN、Mesos; 数据存储:HDFS、HBase;整体架构 整体上架构有三部分组成Master、Work和Client,它们之间通过akka通信
2016-11-12 20:32:11
1210
原创 词的分布表示
词的表示One-hot Representation(独热表示) “苹果”表示为 [0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 …] 优点:简介,缺点:词之间是孤立的,维数灾难。Distributional Representation(分布式表示) 词向量或者词嵌入(word embedding)是用一个向量来表示一个词,一定程度上可以用来刻画词之间的语义距离。 给
2016-10-29 18:00:41
13626
3
原创 Spark MLlib之分类模型源码分析
逻辑回归回顾Logistic regression是机器学习常用的分类模型,用于将不同样本分开。本文的重点不在Logistic regression的细节,关于Logistic regression的具体原理和公式推导请参考zuoxy09的博文—— 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)。 接下来给出Logistic regression的cost
2016-07-23 21:52:39
2037
原创 scala中val function
示例val add1 = (i: Int) => i + 1 // implicit return type (IRT)val add1: Int => Int = (i) => i + 1 // explicit return type (ERT)方法体加入括号val add1 = (i: Int) => { i + 1 }val add1: Int => Int =
2016-05-22 14:31:42
1076
原创 git常用命令
git命令拉取项目git clone git@XXXX向仓库中添加新文件working directory to staging area: git status; git add READMEor git add .staging area to git repository: git status; git commit -m "init repo"历史提交commit日志: 查看
2016-05-09 23:53:38
1165
原创 Spark RDD
数据抽象RDD定义:RDD是只读的、分区记录集合。 特点:支持工作集、自动容错、位置感知、可伸缩; 5个属性: 1. 一组分片(Partition):每个分片逻辑上被映射成Block,会被一个计算任务处理。RDD默认分片个数为程序分配到的CPU核数; 2. 一个分片计算函数:每个RDD都会实现compute函数; 3. 依赖关系:RDD之间转换形成前后依赖关系,当部分分区数据丢失时,
2016-04-24 13:30:41
1053
原创 Spark Shuffle机制
无论是MapReduce还是Spark,Shuffle无疑是性能调优的重点。Spark的Shuffle和MapReduce的Shuffle思想相同,在实现细节和优化方式上不同。本文重点介绍Spark的Shuffle机制。Shuffle Overview为什么要Shuffle数据分布在不同的存储结点和计算单元上,为了将某种共同特征的数据聚集在一个结点上计算,这个过程就涉及到数据的shuffle。Shu
2016-04-20 08:53:09
1147
原创 分布式的消息系统Kafka
What is Kafka?Kafka是一个分布式的发布-订阅(publish-subscribe)消息系统,提供了分区的和可复制的提交日志服务,用于处理实时的活动流数据,如日志和指标集合。Kafka的基本概念Topics: Kafka处理的消息流(feeds of messages)的不同分类;Partition:topic物理上的分组,一个topic可以分为多个partition,每个par
2016-02-11 22:10:10
1316
原创 Mesos:数据中心细粒度的资源共享平台
背景Hadoop集群只能运行一种单一的MapReduce应用程序,这使得它很难运行不符合map-reduce模型的应用程序。如果要想在Hadoop集群上安装Spark应用程序,那么必须为Spark安装一套全新的worker和master。从利用率的角度来看这种方式非常不理想,因为他们通常是静态分区的。因而数据中心需要单个集群上运行多个框架,保证资源的最大利用和框架之间的数据共享。Mesos是一个通用
2016-02-11 16:01:05
2059
原创 EM算法学习笔记
EM is typically used to compute maximum likelihood estimates given incomplete
2016-01-11 08:59:57
1611
原创 致敬:伤情迷茫的2015
前言今天是我的生日,25岁已经过去了,再过两天2015这一年也过去了,你还未留意走过时路边的景色时,已到终点。25岁意味这什么?很多人说25岁是一道坎,25岁,说大不大,我才刚刚工作,人生只开了个头,说小不小了,Facebook开始为Zuckerberg赚钱了,Mayer加入了Google,而我加入了国内的某电商公司,开始了996的模式,苦逼地挣扎着。不过,我也是幸福的,至少有一份能够维持比较好的生
2015-12-29 00:17:16
1580
3
翻译 Top 50 Java 线程并发的面试问题
问题1 什么是executor框架Executor and ExecutorService用于以下场景: - 创建线程 - 启动线程 - 管理整个线程的生命周期 Executor创建线程池并管理线程池中线程的生命周期,在executor框架中,Executor接口和ExecutorService接口被频繁使用。Executor接口定义了execute()方法用于执行命令。Exec
2015-11-15 14:11:53
1136
原创 中断Java线程
中断一个线程意味着还未完成它的任务之前结束该线程,有效地终止当前的操作。该线程是否死亡、或等待新的任务,或执行下一步依赖于当前应用。 首先,不要使用Thread.stop()方法。它确实能终止一个运行的线程,但是这个方法是不安全的并且是过期的(deprecated),意味着在未来的java版本中不可用。 另一个方法令人困惑的方法Thread.interrupt(),但是该方法不能终止一个运行的线
2015-11-14 16:26:42
909
翻译 Apache Commons IO 示例
Apache Commons IO是由Apache Foundation维护的java库,它提供了多种类库使开发者能够很容易地完成一些常见的任务,简化那些被反复的样板化的代码。这个类库的重要性是巨大的,因为它非常成熟,并且由有经验的开发者维护,他们会考虑到各种情形,和修复他们遇到的不同种类的bug。下面会展示org.apache.commons.io包的几个不同功能,下面的代码会分成以下几类,每一类
2015-11-14 10:59:44
1085
翻译 像原生C/C++,序列化Java对象
你曾经希望能够将Java对象object快速地转化为字节流,就像原生语言Java?如果你使用标准的Java Serialization,你会对它的性能感到非常失望。Java Serialization针对不同的使用目的,而不仅仅是快速紧凑地序列化对象。那为什么需要快速紧凑的序列化?我们遇到的大多数系统时分布式的,我们需要在处理任务之间有效地通过传递状态(state)进行交流,这个状态在我们的对象中。
2015-11-01 17:45:47
1469
原创 ThreadPoolExecutor运行原理
线程池用来管理工作线程,它包含一个队列用来存放等待执行的任务。java的java.util.concurrent.Executors提供了实现java.util.concurrent.Executor这个接口的方法,用来创建线程池。下面从一个简单的例子解释它的运行机制。 创建Runnable类public class WorkerThread implements Runnable { p
2015-10-17 21:02:40
2394
原创 awk tricks
删除每行起始的空白 awk '{ sub(/^[ \t]+/, ""); print }'删除每行结尾的空白 awk '{ sub(/[ \t]+$/, ""); print }'删除每行收尾的空白 awk '{ gsub(/^[ \t]+|[ \t]+$/, ""); print }'删除空白行 awk 'NF' awk 'NF > 0' awk '!/^$/' awk '/.
2015-10-17 17:49:55
923
原创 Java正则表达式之反向引用(Backreferences)
反向引用(Backreferences)是Java正则表达式的重要特性。为了理解反向引用,我们先对解释Java正则表达式里面的组。组在正则表达式中意味着将多个字符作为一个单独的单元,通过将字符放在()中,每个()代表一个组。每一组都有一个行号,从1开始。Matcher类的groupCount方法返回模式(pattern)关联Matcher实例组的个数。第0组指向整个表达式。例子
2015-10-07 15:02:10
6002
原创 数据降维
译文七大数据降维算法原文7 Machine Learning techniques for Dimensionality Reduction
2015-09-23 20:34:09
1211
原创 GBDT(Gradient Boost Decision Tree)
GBDT,叫法比较多,如Treelink、 GBRT(Gradient Boost Regression Tree)、Tree Net、MART(Multiple Additive Regression Tree)等。GBDT是决策树中的回归树,决策树分为回归树和分类树。GBDT可以用来做分类、回归。GBDT由多棵决策树构成,通常都是上百棵树,而且每棵树规模都较小(即树的深度会比较浅)。模型预测的
2015-09-13 15:00:46
9015
1
原创 dplyr学习笔记
什么是dplyr?dplyr是一个非常强大的转换概括行列表格的R包。主要功能:select():选择符合条件的列;filter():过滤行;arrange():对行进行重排序;mutate():创建新的列;summarise():概括表的信息,如最值,均值等;group_by():分组函数,采用“split-apply-combine”的概念。安装dpl
2015-08-27 20:51:48
2708
原创 ARIMA模型
时间序列分析分为两大类:频域分析和时域分析。频域分析也称为谱分析,是一种非常有用的纵向数据分析方法。时域分析主要关心从序列值之间的相关关系对时间序列发展规律。在时域分析里,生成时间序列数据的随机过程按照统计规律的特征是否随着时间变化而变化分为两类,如果随机过程的特征随着时间变化,如GDP的时间序列一般随着时间稳定增长,则此过程是非平稳的;相反,如果随机过程的特征不随时间而变化,如每年相同季
2015-06-02 09:09:27
43927
原创 社区发现算法(四)
标签传播算法基本思想是通过标记节点的标签信息预测未标记节点的标签情况。节点之间的标签传播主要依照标签相似度进行,在传播过程中,未标记的节点根据邻接点的标签情况来迭代更新自身的标签信息,如果其邻接点与其相似度越相近,则表示对其所标注的影响权值就越大,邻接点的标签就更容易进行传播。基于标签传播的非重叠社区发现算法LPALPA主要思想是起初每个节点拥有独立的标签,那么网络中有n不同标
2015-05-28 20:04:31
12012
原创 社区发现算法(三)
派系过滤CPM方法(clique percolation method)用于发现重叠社区,派系(clique)是任意两点都相连的顶点的集合,即完全子图。在社区内部节点之间连接密切,边密度高,容易形成派系(clique)。因此,社区内部的边有较大可能形成大的完全子图,而社区之间的边却几乎不可能形成较大的完全子图,从而可以通过找出网络中的派系来发现社区。k-派系表示网络中含有k个节
2015-05-18 15:58:33
21876
7
原创 社区发现算法(二)
GN算法本算法的具体内容请参考Finding and evaluating community structure in networks(Newman and Girvan)。重要概念边介数(betweenness):网络中任意两个节点通过此边的最短路径的数目。GN算法的思想:在一个网络之中,通过社区内部的边的最短路径相对较少,而通过社区之间的边的最短路径的数
2015-05-09 10:17:00
35362
3
原创 社区发现算法(一)
图分割方法大多是基于迭代二分法的,基本思想是将图分割成两个子图,然后迭代,最后得出要求的子图数。经典的算法有Kernighan-Lin算法和谱二分算法。
2015-05-08 20:24:42
11985
1
原创 社区划分的标准--模块度
在社区发现算法中,几乎不可能先确定社区的数目,于是,必须有一种度量的方法,可以在计算的过程中衡量每一个结果是不是相对最佳的结果。
2015-05-08 11:17:32
49806
2
原创 图解Java NIO Buffer
Buffer四个基本属性1、capacity:能够容纳的最大元素数目,创建时设定并不能更改2、limit: buffer中有效位置数目3、position: 下一个读或者写的位置4、mark: 用于记忆的标志位,配合reset()使用,初始值未设定,调用mark后将当前position设为值标记、位置、限制和容量值有以下关系: 0 <= 标记 <= 位置 <= 限制 <= 容量
2015-05-01 17:05:54
1223
原创 SVM中的Kernel技术
对于SVM的基础知识,可以参考这篇博客《支持向量机SVM学习笔记》,本片博客主要讨论SVM中kernel的使用。SVM中原始问题和对偶问题的定义其中N为训练样本点的个数,d为特征向量x的维度。对于原始问题需要学习d个参数,对于对偶问题需要学习N个参数。如果N i,其中大多数αi为0,那些非零的αi定义了支持向量xi。对于线性不可分的样本点,将其映射到
2015-04-27 10:58:25
7954
原创 非负矩阵分解NMF
非负矩阵分解(NMF):给定非负矩阵V(n * m)及正整数k 由于矩阵W和H的非负限制,NMF 可以看成是非负数据的线性相叠加。W的每一列可以看成是基向量,则原始矩阵V 为向量W的线性叠加,而矩阵 H 为叠加的稀疏矩阵。 非负矩阵分解算法的损失函数交替最小二乘(ALS)分解矩阵的大致步骤如下:(1)用一个非负矩阵初始化矩阵H(2)重复下
2015-04-21 16:36:36
4949
原创 线性判别分析LDA
PCA的降维过程中,非线性结构特征不能被有效的提取。所以,选择主成分的时候不但要保证样本中信息不丢失,还要考虑主成分的描述判别效果;此外,PCA并没有利用样本点之间的类别信息,故不能使其分类达到最优化。线性判别分析(Linear Discriminant Analysis,LDA),也称为Fisher线性判别,是模式识别的经典算法。它最早由Fisher提出,基本思想是寻
2015-04-17 21:28:33
1810
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人