自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

深入理解GBDT

GBDT 全称为 Gradient Boosting Decision Tree。顾名思义,它是一种基于决策树(decision tree)实现的分类回归算法。不难发现,GBDT 有两部分组成: gradient boosting, decision tree。Boosting 作为一种模型组合方式,与gradient descent 有很深的渊源,它们之间究竟有什么关系?同时 decision...

2016-05-10 16:20:03 586

原创 决策树的数学原理

说到决策树,大家肯定不陌生,由于其结构简单,学习成本低,且可解释性强,有着广泛的应用。因此各类书籍、技术博客都有介绍,且深入浅出、图文并茂、生动形象。 鉴于已经有很多带图的博客介绍决策树,这里就不上图了,主要以公式推导为主。  本文主要分三块内容来介绍决策树:首先会简单回顾下决策树的内容,由于这部分相对简单,大家了解的也多,因此会快速过一遍。随后本文会对决策树的数...

2016-04-11 11:37:11 566

时间序列分段算法 [Time series Breakout Detection]

在时间序列分析中,断点检测(breakout detection)是一个很基本的问题。通过捕捉时序数据中的断点(breakout),来发现时序数据所表示的系统在过去是否发生了某种事件(event),进而为系统诊断提供必要的数据支持。 为了实现对时序断点的检测,我们首先需要对时序的整体时序做拟合。这里我们通过一条直线来拟合一段时序,如果时序的趋势发生了变化,则用多条直线来拟合整条...

2015-12-15 20:01:43 6067 1

原创 会计记账小程序

许久不来,手都有些生疏了。写个小程序热热手先。 假设有一个数字,可以很大,理论上可以无限大。要如何转成其对应的汉子大写? 就是那种支票本上、汇款单上的那种大写金额。 例如:    数字:193817071803800182801088108   大写:壹佰玖拾叁亿捌仟壹佰柒拾万柒仟壹佰捌拾亿叁仟捌佰万壹仟捌佰贰拾捌亿零壹佰零捌万捌仟壹佰零捌 代码...

2015-12-10 10:38:01 563

大数据杂谈

谈到大数据,让我想起了一个段子,说人们谈大数据就像青少年谈性爱,每个人都谈的头头是道,但都不知道对方说的是什么玩意,同时还要装做自己都听懂了。 好在这些曾经的青少年,有的也已经过了成人礼,或多或少的有了一些经验,没有了当初的青涩和懵懂,也没有当初那么健谈。再说起大数据时,已经从最开始的狂热,逐步变得理性,或者有意地做理性的思考。这不光是大数据,几乎所有的概念、技术出来都会经历这...

2015-05-01 15:58:19 133

Viterbi 算法应用实现

算法简介:Viterbi 算法又叫维特比算法,其是HMM模型中在给出观测序列O,以及状态转移举证M 和 状态-观测矩阵Q之后,求解能够最佳解释序列O的状态序列S的一种动态规划算法。具体如下图所示:其中:   标记为O的 [0|1] 序列是观测序列,   标记为S的序列中横向的箭头即状态在根据转移矩阵M进行转移,  其中S序列与O序列之间向下的箭头表示根据状态生成...

2014-12-22 10:51:43 184

DTW算法时序应用与实现

关于dtw算法:dtw算法最初应用于语音识别中的孤音识别。即已知某个词的音频模板,给定一个新的音频序列之后,通过检测该词的音频模板与新音频序列之间的相似度,来判断该音频是否是该词。 问题在于,即使是同一个词,由于人的发音有语速、节奏、习惯的不同,其音频也不可能完全一致。 这种不一致,体现在序列长度、某个音节的音长等方面。 DTW(动态时间规整)算法应运而生:...

2014-10-31 19:41:05 1013

原创 关于连续值离散化[MODL]

将连续值离散化的问题,在数据挖掘和机器学习的任务中并不鲜见,当然离散化的方法也有很多。本文将要介绍的是一种基于数据标签(label)来对连续数据值做离散化分割的监督学习方法。 问题:考虑有如下数据:   1,0   2,0   3,0   4,0   5,0   6,1   7,1   8,1   9,1   10,1第一列是连续值数...

2014-10-18 22:30:01 1064

原创 谱聚类算法实现

谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法。将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。"带权无向图"这个词太学术了,我们换一种叫法,即:相似度矩阵。假设我们有一个相似度矩阵,矩阵中存的是所有对象的两两相似度。 那么这个矩阵应该有如下性质:矩阵为N * N,N为...

2014-09-16 18:25:49 1366

白话NMF(Non-negative Matrix Factorization)——Matlab 实现

NMF——非负矩阵分解。如果你事先了解PMF[概率矩阵分解]的话,那么其实只要在PMF的基础上多加上一点,就是NMF了。 方法一: 在PMF中使用SGD【随机梯度下降】进行优化时,使用如下的迭代公式:   其中P、Q分别代表原始矩阵R的两个维度的隐含矩阵,在推荐应用中,一般讲P看做用户矩阵、Q看做物品矩阵。 从公式中不难看出,无论P矩阵还是Q矩阵都会出现...

2014-07-22 21:21:45 1263

原创 BPR [Bayesian Personalized Ranking] 算法详解及应用实践

在推荐系统的实现中,几乎总会遇到从较多候选集中为用户选取特定的少数几个物品进行推荐,这本质上是一个Ranking问题。 在推荐场景中用户更缺乏耐性,对推荐结果的消费也十分有限。因此,排序的好坏直接决定了用户对一个准确率为90%的推荐候选集的满意度是否真的有90%。 这里我们为大家介绍一种“基于贝叶斯后验优化的个性化排序算法”:Bayesian Personalized Rank...

2014-06-04 19:10:44 1606

【0-1】矩阵分解

基于矩阵分解的推荐算法已经在工业界被广泛应用。这类算法希望用同一个空间的维度来描述推荐过程中两个实体(用户、物品)的隐语义的特征。 无论是基于数值的矩阵分解如PMF[SVD],还是基于概率的矩阵分解如PLSA、LDA,都是如此。只不过,用于PMF分解的评分矩阵中包含了用户对所访问物品的评分,而PLSA、LDA面对的数据则只能是用户有过某种访问行为的物品集合。 仅从信息量...

2014-05-19 17:35:43 430

原创 推荐算法之协同过滤实战

协同过滤(Collective Filtering)可以说是推荐系统的标配算法。在谈推荐必谈协同的今天,我们也来谈一谈基于KNN的协同过滤在实际的推荐应用中的一些心得体会。 我们首先从协同过滤的两个假设聊起。 两个假设:用户一般会喜欢与自己喜欢物品相似的物品用户一般会喜欢与自己相似的其他用户喜欢的物品上述假设分别对应了协同过滤的两种实现方式:基于物品相似(i...

2014-02-01 23:02:51 722

原创 使用 vimrc 配置

vi是linux及类unix环境下使用的最多的文本编辑器,而使用vi编写代码几乎是程序员在linux下做的最多的事情。 vim的原始环境只是一个黑黑的面板,一切的一切都需要我们手动敲入,包括用来进行代码对其的空格。 本文分享一个vim的配置文件,可以为coder初始化一个相对友好的vim开发环境。帮我们做一些简单的事情,比如代码对齐、tab键转空格、代码高亮、自动注释等,可...

2013-09-12 11:30:08 112

原创 关于数组指针和指针数组

在C/C++的编程中,对指针的使用和了解,再熟悉都不为过。C/C++毫无疑问的十分强大,但离开了指针和数组,它们就什么都干不了了,可见其重要。 使用数组和指针来描述数据,是C/C++编程中最常见的工作。本文通过一个描述二维数据的问题,来回顾下数组和指针的使用。 假设我们要表示的是一个5行3列的数据,则共有如下五种常用方式。每种方式各有优缺点以及适用场景。  ...

2013-07-30 21:01:54 139

原创 大数据碎碎念

现在一开电脑,尤其是一些IT性质的网站论坛,所谓大数据真是铺天盖地,很有气势。好像每个搞IT的同仁不说点关于大数据的东西,都不好意思跟人打招呼。 关于这种疯狂,我们已经看得够多了。什么SOA、Ajax、RIA、HTML5...... 当繁华过后,这写概念本身又能给我们留下点什么呢? 我们还不是得跟往常一样,像狗一样的写着下一秒就可能被否定的代码? 我不赞成炒...

2013-07-27 21:53:01 135

原创 基于堆 [Heap] 结构的 TopK 问题实现

在实际工作中我们经常会遇到将一个list中最大[最小]的前TopK个元素输出的问题。比如说在电商领域,求上个月卖的最好的前10个商品,或者是每个品类下卖的最好的前10个商品。 这类问题,很多数据库或数据仓库工具可以提供直接的实现,比如第一个问题在mysql中就直接order by + limit就好; 而第二个问题在Hive中也很简单, distribute + order by ...

2013-06-30 15:50:34 178

原创 C语言实现HashTable

C语言的少即是多: 从语言内容来讲,C绝对是足够精炼的,它提供且仅提供了我们工作所必须的编程元素。从可以实现的功能以及能为我们提供的代码管理和性能支持上来看,它也做的恰到好处。没有C++的繁琐、比脚本及所谓的OO语言更高效、当然也比汇编更容易理解。 不过对于用惯了Java的HashMap、LinkedHashMap,Python的Dict,以及PHP的Array 的同学...

2013-05-18 00:18:53 399

从车站卖报点看推荐与个性化推荐

  前两天团队讨论了什么是推荐、什么是个性化推荐。关于这,大家有的顾名思义、有的引经据典。当然都能够较好地解释上面这两个概念。这里,我则试图从现实现象中去理解什么是推荐、什么是个性化推荐。开始啰嗦了:这次请假去外地,在火车站的一个卖报点发现一个比较有趣的现象。这个摊位除了报纸,还有杂志、书籍等。此外,很多人在买报的时候都不只买一份,基本上是两份起。现象一:经过我长达一个小...

2012-09-18 19:19:43 91

数据挖掘中 决策树算法实现——Bash

 一、决策树简介: 关于决策树,几乎是数据挖掘分类算法中最先介绍到的。决策树,顾名思义就是用来做决定的树,一个分支就是一个决策过程。 每个决策过程中涉及一个数据的属性,而且只涉及一个。然后递归地,贪心地直到满足决策条件(即可以得到明确的决策结果)。 决策树的实现首先要有一些先验(已经知道结果的历史)数据做训练,通过分析训练数据得到每个属性对结果的影响的大小,这里我...

2012-07-20 13:00:41 145

原创 基于 FP-Tree 的关联规则挖掘——Bash实现

本文假设读者至少有对数据挖掘中的关联规则有基本了解,对Apriori算法的实现有一定了解。 在此基础上,我们讨论一种比Apriori更加高效的关联规则挖掘方法——基于FP-Tree的关联规则挖掘。 (一) 关于Apriori: Apriori是关联规则挖掘中最最最经典的算法,没有之一。同时,它也是向初学同学阐明关联规则精髓的最佳武器。 首先,我们简单回顾下Apri...

2012-06-18 15:30:51 327

原创 DJBX33A哈希函数实现——Bash

 DJBX33A 哈希函数又叫做time33 哈希函数,PHP、Perl、Apache中都是用该方法做为其哈希函数的实现。 本文就对该哈希函数做一简单的介绍,并用Bash对其进行实现。 该方法十分简单,将字符串中的每个字符的ascii码迭代*33加在一起即可。即hash(i)=hash(i-1)*33+ascii(i)。 假如字符串为:abc,则结果就是hashCod...

2012-06-13 21:48:22 191

字符串中单调递增连续子序列——Bash

该问题和求单调递增子序列有点像,但不一样。其主要区别就是在于连不连续,如果不要求连续(单调递增子序列)在实现时的算法是动态规划,比较复杂。本文描述的问题是子序列连续的问题,相比而言会简单很多,原理和求最大值是一样的。 具体描述为给定一个字符串,求一个子串,该子串满足:1. 连续2. 该子串递增3. 是最长的单调连续递增的子串 例如:zxuhababcba结...

2012-06-03 20:37:44 220

Java中的Arrays.sort 分析及其非递归实现——Bash

上篇文章我们讨论了快速排序算法,它与归并算法同属分治算法的一种。两者在实现上很相似,都使用了分治递归的策略来实现。 相信大家对快排和归并排序都不陌生,不过我们平常接触到的一般是这两种算法的递归实现方式。以Java为例,其Arrays类中的sort在排序Object的时候用的就是归并排序。不过其在实现上做了优化,在子问题足够小时(每个递归子序列长度不大于7)通过插入排序完成这...

2012-06-01 22:31:50 72

快速排序的非递归实现 --Bash

写blog的好处是,琢磨过的东西不用再琢磨第二次了。 快速排序算法的非递归实现: #!/bin/bashdeclare -a inputArray=(2 3 5 0 1 5 7 1 2 9 0);declare -a startStack;declare -a endStack;#init inputArray randomlyfor((i=0;i&l...

2012-05-26 14:05:12 132

原创 两种求集合所有子集的方法--Bash实现

假设我们有一个求集合的全部子集(包含集合自身)的需求,即有一个集合s,包含两个元素 <a,b>,则其全部的子集为<a,ab,b>.不难求得,子集个数sn与原集合元素个数n之间的关系为:sn=2^n-1。 本文分别讲述两种实现方法: 一:位图法:1)构造一个和集合一样大小的数组A,分别与集合中的某个元素对应,数组A中的元素只有两种状态:“1”和“0”...

2012-04-30 23:33:41 286

关于distinct 和group by的去重逻辑浅析

在数据库操作中,我们常常遇到需要将数据去重计数的工作。例如:表A,列colACABCDAB 结果就是一共出现4个不同的字母A、B、C、D即结果为4大体上我们可以选择count(distinct col)的方法和group+count的方法。分别为:select count(distinct col) from A;select co...

2012-03-22 00:32:14 2833

bash中将字符串split成数组的方法

相信编程时,字符串的处理是很频繁被处理的问题,其中大家肯定不陌生各种语言的string.split('sp')将字符串按照某个字符或子串切分成一个数组。同样,我们在用shell处理文本信息时也可以方便地实现该功能。这里主要使用了bash中关于字符串变量的处理和array初始化的能力。 如下: #!/bin/bashstr="hello,world,i,like,...

2012-03-21 23:55:03 3408

Shell下三种遍历文件的方法比较

昨天一个同事遇到一个需求:有一个日志文件A,当日志文件中的某行包含某个字符串BC时,将字符串EF变成EG,并输出到新文件。即:Input,A:asdfasdfasdfasdBCasdfEFasd output:asdfasdfasdfasdBCasdfEGasd 这个文件有500w+行。最开始用如下脚本解决: cat $1 | while re...

2012-03-15 20:06:28 504

原创 写在2012岁始

本来决定在iteye上不码情绪类的文字,但面对f*ck的2011却又不得不说点什么。 前年的今天,我很happy的在哈尔滨享受着冰城的风度。天气虽然寒冷,但心里很火热,对生活也充满了期待。而就是从哈尔滨归来开始,各种不顺、各种纠结、各种悲剧,生活一下子仿佛回到了本来的颜色。让我无奈到觉得生活本来就TM是让人无奈的。 生活就是一面镜子,站在前面,我们都无法回避丑陋的自己。 ...

2012-01-04 22:18:20 89

shell 中遍历文件的效果比较

假设我们有一个数据文件形如下:A,BA,CA,DB,EB,FD,AD,BE,G.... 需求是要将其转变为如下形式:A:B,C,DB:E,FD:A,BE,G......  需求很简单,循环遍历文件,然后trace第一列即可。在这里,我们讨论用Shell脚本如何实现这个简单的需求。  在shell中面对这样...

2011-12-09 10:30:07 169

一个Bash Shell 实现的局域网即时通信工具 ^_^

今天有点无聊,打通ssh的时候遇到了问题,搞了半天才搞定。在搞的过程中发现,在两台经过ssh打通的机器很容易将消息发送到彼此。进而想想,如果收到消息的机器能够即时将内容显示出来,那不就是一个山寨版的即时聊天工具嘛,哈哈。 于是我的恶搞开始了。。。 基本思路如下: 1. 最核心的其实就是使用ssh执行远程命令,将内容写到远程计算机的文件中。2. 消息接受机器监控...

2011-11-22 16:51:20 204

使用awk和grep进行数据抽样比较

在进行数据抽样时,我们关注所抽取的数据在整体数据中分布的均匀性。最简单的就是均匀抽取,即每隔几行选取一行。比如,数据文件较大时,每隔10行或者每隔100行进行抽取。 假如数据文件还是“msg”我们每隔10行取一行,有两种方法: 方法1:nl+grep nl msg | grep -P '1\t' > target_file 方法2:awk ...

2011-11-21 22:11:36 456

简单比较Linux命令中字符串查找的效率

有时候,我们要简单统计下一个文件中包含某个特殊字符串的行数。我第一个想到的是grep + wc,不知道你想到了什么,不过,我们确实有多种方法。 假如我们的文件叫msg,里面有23380092行数据。某些行是这样的receive: msg1我们的任务是找出这些行的数量。 1. grep方法grep ' msg1' msg | wc -l使用这种方法耗时: 1s...

2011-11-21 21:43:00 459

ssh 打通注意

在两台linux服务器之间(A,B)使用ssh打通的简单步骤为: A: cd cd .sshssh-keygen B: cd cd .sshssh-keygen    分别将两台机器生成的id_rsa.pub文件中的内容追加拷贝到 另一台 机器上的.ssh/authorized_keys文件内。 如果此时打通...

2011-11-07 17:12:35 93

ETL测试的自动化执行及回归

 本来早就打算要写一篇日志来讲讲ETL测试的自动化执行,以及ETL自动化测试框架实现的一些相关东东。前后托了近一个月,今天总算落实到键盘了。 不过由于部门组织结构调整,该ETL测试框架面临着刚出生就可能夭折的命运,现在写起来,似乎也夹杂一些悲壮。其实这个ETL自动化测试框架是我在09年面试阿里巴巴ETL测试职位的时候就在脑海中盘旋了。当时的面试官,也是自己后来的主管boss说我...

2011-09-26 21:17:55 897 1

两种检查数据重复性的方法

 我们在ETL测试过程中经常甚至是必须要检测某一批数据中的某些维度在表范围内是否重复。 本文就介绍两种检测数据重复的简单方法。 方法1:SQL法如果这些数据在数据库中,那完全简单而且OK。具体方法为: select (sum(c)-count(c)) uniqfrom ( select count(1) c from table_t...

2011-09-02 12:39:20 3676

用poi读取Excel文件的CellType

昨天做了一个将Excel中准备的数据转化成对应的SQL的功能。其实核心就是用poi库去读取Excel文件就好了。 由于Excel文件不同于纯文本的csv或其他文件,其本身的数据对象(即一个Cell)是有类型的。 不能将所有的数据都当做string来处理,在读取时首先要判断当前Cell的cellType。cellType共有集中类型:string、numeric、bool、da...

2011-08-24 10:41:03 882

一个千万级数据的统计方法尝试

现在,我们有一个文件,样子长成这个样子的:该数据共有两列数据,col1,col2.col1是字符串类型的,col2为数字类型。这样的数据一共有多少呢?一共有:25165824。 现在我们的目标是统计col1中每个值出现的次数,并把对应的col2的值加起来,并且得到平均值。这样是放在关系数据库里,用SQL的话,十分容易搞定,SQL如下:  select col1...

2011-08-21 22:31:10 1072

原创 ETL测试过程

前阵子在博客中总结了关于ETL测试的来龙去脉,简单粗浅地明确了ETL测试是做什么的,以及为什么需要ETL测试的问题。今天我们再来讲讲ETL测试怎么做,以及怎么做会比较好,效率高。 首先,谈到了测试,通俗讲无外乎就是通过设计一定的输入、经过被测对象的运算之后,对生成的输出数据的正确性进行校验。如果发现所有的测试输入,得到的测试输出,都和预期的一致,那么测试就是通过的。否则就是被测对象的逻辑...

2011-08-19 23:11:55 355

空空如也

空空如也

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

TA关注的人

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