上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要: 数值计算方法的“稳定性”是指在计算过程中舍入误差是可以控制的。 对于有些矩阵,矩阵中某个元素的一个很小的变动,会引起最后计算结果误差很大,这种矩阵称为“病态矩阵”。有些时候不正确的计算方法也会使一个正常的矩阵在运算中表现出病态。对于高斯消去法来说,如果主元(即对角线上的元素)上的元素很小,在计算时就 阅读全文
posted @ 2012-12-05 15:05 张朝阳 阅读(24390) 评论(0) 推荐(1) 编辑
摘要: 或者翻译成维度的咒语,这个咒语出现在很多方面:sampling采样如果数据是低维的,所需的采样点相对就比较少;如果数据是高维的,所需的采样点就会指数级增加,而实现中面对高维问题时往往无法获得如此多的样本点(即使获得了也无法处理这么庞大数据量),样本少不具有代表性自然不能获得正确的结果。combina... 阅读全文
posted @ 2012-12-04 15:58 张朝阳 阅读(7908) 评论(0) 推荐(1) 编辑
摘要: 转载:http://blog.sina.com.cn/s/blog_4fcdb9280100l46v.htmlmy: lexically scoped variablelocal:Dynamically scoped variable内部->外部:(1)my和local都只在一个block里有效,出去就失效;(2)但是local的变量可以继续在这个block中调用的子程序中存在;(3)如果有与外界同名的变量,两者在block退出后都不影响外界同名变量;外部->内部:(1)外部设置my、local、缺省均队内有效,但是同名变量外部my,在block内部local是不允许的。因为二者在 阅读全文
posted @ 2012-11-13 09:15 张朝阳 阅读(1176) 评论(0) 推荐(0) 编辑
摘要: 两个很大的整数--超过了INT_MAX,它们怎么做加法呢?把它们当作字符串,逐位进行相加喽。#include<stdio.h>#include<string.h>#include<stdlib.h>char* add(const char *arr,const char *brr){ int lena=strlen(arr); int lenb=strlen(brr); int maxlen=(lena<lenb)?lenb:lena; char* sum=(char*)malloc(maxlen+2); memset(sum,'0', 阅读全文
posted @ 2012-10-17 10:10 张朝阳 阅读(5395) 评论(2) 推荐(1) 编辑
摘要: __stdcall和__cdecl是两种函数名字修饰。(注意是连续的两个下划线)Windows上windows上不管是C还是C++,默认使用的都是__stdcall方式。不论__stdcall还是__cdecl函数参数都是从可向左入栈的,并且由调用者完成入栈操作。对于__stdcall方式被调用者自身在函数返回前清空堆栈;而__cdecl则由调用者维护内存堆栈,所以调用者函数生成的汇编代码比前一种方式长。由__cdecl约定的函数只能被C/C++调用。Windows上使用dumpbin工具查看函数名字修饰。C语言__stdcall方式:_FuncName@sizeofParameters例如: 阅读全文
posted @ 2012-10-15 22:31 张朝阳 阅读(13142) 评论(1) 推荐(1) 编辑
摘要: 先上一段代码:#include<iostream>using namespace std;class Base{public: int a;protected: int b;private: int c;};struct Derived:public Base{};int main(){ Derived inst; cout<<sizeof(Base)<<endl; cout<<sizeof(Derived)<<endl; cout<<sizeof(inst)<<endl; cout<<inst.a 阅读全文
posted @ 2012-10-15 14:57 张朝阳 阅读(3308) 评论(0) 推荐(1) 编辑
摘要: 栈是从高地址向低地址方向增涨,堆的方向相反。在一次函数调用中,栈中将被依次压入:参数,返回地址,EBP。如果函数有局部变量,接下来,就在栈中开辟相应的空间以构造变量。在C语言程序中,参数的压栈顺序是反向的。比如func(a,b,c)。在参数入栈的时候,是:先压c,再压b,最后a。在取参数的时候,由于栈的先入后 出,先取栈顶的a,再取b,最后取c。C语言是不作栈溢出检查,如下代码可以正常编译运行。#include<stdio.h>main(){ char buf[2]; printf("enter a string shorter than 2.\n"); sca 阅读全文
posted @ 2012-10-07 15:14 张朝阳 阅读(11577) 评论(2) 推荐(3) 编辑
摘要: 字节序小端字节序(Little Edian)指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处。比如整形1在内存中的存放情况是:而换成大端字节序(Big Edian)则是:基于Intel X86的体系结构的PC机是小端字节序,我们可以写一个程序来验证。#include<stdio.h>main(){ int num=1; int c=num>>24; printf("%d\n",c); c=num & 0xff; printf("%d\n",c);}输出0和1。我们知道union中只存储一个成员变量,union的 阅读全文
posted @ 2012-10-07 11:32 张朝阳 阅读(2189) 评论(0) 推荐(0) 编辑
摘要: 在没有#pragma pack宏的情况下,结构体中的变量存储遵循以下对齐原则:原则一:第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从其自身大小的整数倍开始。原则二:结构体的总大小,也就是sizeof的结果,必须是其内部最大数据成员的整数倍,不足的要补齐。原则三:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大数据成员大小的整数倍地址开始存储。上面提到的“数据成员”均指基本数据类型。#include<stdio.h>struct A{ char c; int i; short s; };struct B{ int i; char c; shor 阅读全文
posted @ 2012-10-07 11:02 张朝阳 阅读(2167) 评论(0) 推荐(0) 编辑
摘要: Catalan Number满足下列递推公式:N个元素元素进栈,多少种出栈方式考虑A、B、C、D依次进栈,那么所有的出栈顺序是下列4种情况的并集:1)A第一个出栈。肯定是A进栈后马上出栈,剩下B、C、D的出栈顺序有h(3)种。h(0)*h(3)。2)A第二个出栈。在A之前出栈的肯定是B,B的出栈顺序有h(1)种,剩下C、D的出栈顺序有h(2)种。h(1)*h(2)。3)A第三个出栈。在A之前出栈的肯定是B、C,B、C的出栈顺序有h(2)种,剩下D的出栈顺序有h(1)种。h(2)*h(1)。4)A第四个出栈。在A之前出栈的肯定是B、C、D,B、C、D的出栈顺序有h(3)种。h(3)*h(0)。h 阅读全文
posted @ 2012-10-06 21:08 张朝阳 阅读(1548) 评论(0) 推荐(1) 编辑
摘要: 分类回归树(CART,Classification And Regression Tree)也属于一种决策树,上回文我们介绍了基于ID3算法的决策树。作为上篇,这里只介绍CART是怎样用于分类的。 分类回归树是一棵二叉树,且每个非叶子节点都有两个孩子,所以对于第一棵子树其叶子节点数比非叶子节点数多1 阅读全文
posted @ 2012-10-01 21:41 张朝阳 阅读(52227) 评论(13) 推荐(4) 编辑
摘要: 关于I/O利用,不同的平台上都有相应的策略,比如select、poll、epoll、kqueue、devpoll、evport、win32。为libevent提供一组库函数,屏蔽了平台的差异性,底层还是调用的epoll、kqueue、devpoll等函数。libevent会使用优化的策略来选择使用哪个后端方法,以达到效率最高。创建event_basestruct event_base *event_base_new(void);event_base中存放你是监听是否就绪的event。在子进程中event_base要重新初始化:int event_reinit(struct event_base 阅读全文
posted @ 2012-09-14 16:41 张朝阳 阅读(5486) 评论(0) 推荐(0) 编辑
摘要: epoll首先看个结构体typedef union epoll_data{ void *ptr; int fd; uint32_t u32; uint64_t u64; } epoll_data_t; struct epoll_event { uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ }struct epoll_event的成员events是个bit set,有几种类型:EPOLLIN:关联的文件是用来读的EPOLLOUT:关联的... 阅读全文
posted @ 2012-09-12 20:30 张朝阳 阅读(2471) 评论(0) 推荐(1) 编辑
摘要: 网页噪声去除可以看作是一个分类问题:把一个网页片断分为”有用信息“和”噪声“。在有大量训练样本的情况下可以使用SVM进行分类。一种直接的想法把HTML转换成DOM树,对每个节点计算链接文字比率,如果高于一定的阈值,就认为它不是正文,而是页眉、页脚、广告等其他信息。元素节点与风格节点图1.两个网页的DOM结构图2.合并之后的网站风格树在网站风格树(Site Style Tree,SST)中定义两类节点:风格节点和元素节点。风格节点由2部分组成(ES,n)ES是风格节点中所包含的元素节点的序列。图2中虚线框里的都是风格节点。n代表拥有该风格的网页数量。对于风格节点TABLE-IMG-TABLE其n 阅读全文
posted @ 2012-09-10 21:21 张朝阳 阅读(1235) 评论(0) 推荐(0) 编辑
摘要: 回溯算法的求解过程实质上是一个先序遍历一棵"状态树"的过程,只是这棵树不是遍历前预先建立的,而是隐含在遍历过程中。幂集即求一个集合的所有子集。比如对于集合A={1,2,3},则A的幂集为p(A)={{1,2,3},{1,2},{1,3},{1},{2,3},{2},{3},Φ}求幂集P(A)的元素的过程可看成是依次对集合A中元素进行“取”或“舍”的过程,并且可以用一棵状态树来表示。求幂集元素的过程即为先序遍历这棵状态树的过程。每个节点都是一个一维数组。这个问题中不存在剪枝,所有状态都是合法的。#include<vector>#include<iostrea 阅读全文
posted @ 2012-09-08 20:08 张朝阳 阅读(2489) 评论(0) 推荐(0) 编辑
摘要: 分(divide):递归解决较小的问题治(conquer):从子问题的解构建原问题的解一般认为正文中至少含有两个递归调用才叫分治,只包含一个递归的不叫分治。一般认为子问题是不相交的。方程的解为:整数相乘求两个N位数X和Y的乘积,手算需要进行次乘法,即把两个个位数相乘看作基本操作的话,算法复杂度为。X=12345678,Y=87654321,求XY。XL=1234,XR=5678,YL=8765,YR=4321。X=XL104+XR,Y=YL104+YR所以:需要进行4次4位数的乘法,乘以108只是一些补0操作,再加上几次加法构成了。由(1)式得,此时算法没有得到改进。注意到,所以在计算出后,只 阅读全文
posted @ 2012-09-07 19:12 张朝阳 阅读(1519) 评论(2) 推荐(0) 编辑
摘要: 对于内置变量的自动初始化代码1 1 #include<stdio.h> 2 #define CONST 100 3 int *p1; 4 int a[2]; 5 int b; 6 static int c; 7 main() 8 { 9 int d;10 static int e;11 int f[2];12 int *p2;13 printf("CONST=%d\n",CONST);14 printf("a[0]=%d\n",a[0]);15 //printf("*p1=%d\n",*p1);16 printf(&quo 阅读全文
posted @ 2012-09-05 17:24 张朝阳 阅读(2566) 评论(0) 推荐(1) 编辑
摘要: 可变长度的整型定义:最高位表示是否还有字节要读取,低七位就是就是具体的有效位,添加到结果数据中。比如00000001 最高位表示0,那么说明这个数就是一个字节表示,有效位是后面的七位0000001,值为1。10000010 00000001 第一个字节最高位为1,表示后面还有字节,第二个字节最高位0表示到此为止了,即就是两个字节。注意低位在前,高位在后。所以“10000010 00000001”去年符号位后是“00000010 00000001”。高位是“00000001”,表示128,低位是“00000010”,表示2。所以整个数表示130。int num=0xffffffff; //nu. 阅读全文
posted @ 2012-09-04 20:23 张朝阳 阅读(1332) 评论(0) 推荐(0) 编辑
摘要: 首先引出计算几何学中一个最基本的问题:如何判断向量在的顺时针方向还是逆时针方向?把p0定为原点,p1的坐标是(x1,y1),p2的坐标是(x2,y2)。向量的叉积(cross product)实际上就是矩阵的行列式:当叉积为正时,说明在的顺时针方向上;叉积为0说明两向量共线(同向或反向)。当同时满足:(1)和在的两侧(即一个顺时针方向上,一个在逆时针方向上)(2)和在的两侧时可肯定和相交。 图1图1是线段相交的一般情形。图2只满足第(1)条,不满足第(2)条所以不能证明和相交。 图2图3和图4是一种特殊情况,它不满足第(2)条,因为和重合,即和的叉积... 阅读全文
posted @ 2012-09-03 15:30 张朝阳 阅读(17407) 评论(2) 推荐(2) 编辑
摘要: Horner Rule是一种对多项求值的高效方法。直接计算的话,需要进行的乘法次数为:1+2+3+......+n,Horner给出的算法:需要进行的乘法次数为:N次#include<iostream>#include<deque>using namespace std;double horner(deque<double> & coe,double x,double pre=0.0){ if(coe.size()<=0) return pre; double rect=pre*x+coe.back(); coe.pop_back(); ret 阅读全文
posted @ 2012-09-03 09:13 张朝阳 阅读(2867) 评论(0) 推荐(0) 编辑
摘要: malloc/free和new/delete的区别malloc/free是C语言的标准库函数,new/delete是C++的运算符。 由于malloc/free是库函数而不是运算符,不在编译器控制权限之内。对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。(废话) new是 阅读全文
posted @ 2012-08-30 21:12 张朝阳 阅读(2602) 评论(1) 推荐(3) 编辑
摘要: Collaborative Filtering Recommendation 向量之间的相似度 度量向量之间的相似度方法很多了,你可以用距离(各种距离)的倒数,向量夹角,Pearson相关系数等。 皮尔森相关系数计算公式如下: \begin{equation}\rho_{X,Y}=\frac{cov 阅读全文
posted @ 2012-08-30 21:00 张朝阳 阅读(48795) 评论(23) 推荐(7) 编辑
摘要: 大类 名称 关键词 有监督分类 决策树 信息增益 分类回归树 Gini指数,Χ2统计量,剪枝 朴素贝叶斯 非参数估计,贝叶斯估计 线性判别分析 Fishre判别,特征向量求解 K最邻近 相似度度量:欧氏距离、街区距离、编辑距离、向量夹角、Pearson相关系数 逻辑斯谛回归(二值分类) 参数估计(极 阅读全文
posted @ 2012-08-28 22:04 张朝阳 阅读(18647) 评论(4) 推荐(16) 编辑
摘要: 信息论(Information Theory)是概率论与数理统计的一个分枝。用于信息处理、信息熵、通信系统、数据传输、率失真理论、密码学、信噪比、数据压缩和相关课题。 基本概念 先说明一点:在信息论里面对数log默认都是指以2为底数。 自信息量 联合自信息量 条件自信息量 信息熵 条件熵 联合熵 根 阅读全文
posted @ 2012-08-25 21:50 张朝阳 阅读(16668) 评论(1) 推荐(2) 编辑
摘要: HDFS适合做:存储大文件。上G、T甚至P。一次写入,多次读取。并且每次作业都要读取大部分的数据。搭建在普通商业机群上就可以了。虽然会经常宕机,但HDFS有良好的容错机制。HDFS不适合做:实时数据获取。如果有这个需求可以用HBase。很多小文件。因为namenode要存储HDFS的metadata(比如目录的树状结构,每个文件的文件名、ACL、长度、owner、文件内容存放的位置等等信息),所以HDFS上文件的数目受到namenode内存的限制。并发环境下的写入和修改。Block一个磁盘的block通常是512B,内核一次读写磁盘不能少于这个数目。在HDFS上一个Block的默认大小是64M 阅读全文
posted @ 2012-08-24 10:13 张朝阳 阅读(7863) 评论(0) 推荐(0) 编辑
摘要: 在Hadoop集群中,数据在网络上传输,保证数据完整性的通常做法使用checksum,比如常用的CRC-32 (cyclic redundancy check)。Hadoop上支持的文件压缩格式有:gzip ZIP bzip2 LZO。例如在UNIX上可以使用命令:gzip -1 file,会生成file.gz,但是原来的file就没有了。压缩算法都要在执行速度和压缩比上做一个权衡,-1表示只注意速度,-9表示只注重压缩比。CompressionOutputStream和CompressionInputStream很类似于java.util.zip.DeflaterOutputStream 和 阅读全文
posted @ 2012-08-24 10:13 张朝阳 阅读(4696) 评论(0) 推荐(3) 编辑
摘要: 配置Configuration一条configuration的名称可以是任意字符串,值可以是任意数据类型。conf.set("name", "orisun");conf.setInt("age",24);在代码中设置只对本次代码运行有效,而在配置文件中设置则长久有效。configuration-1.xml<?xml version="1.0"?><configuration><property><name>color</name><value> 阅读全文
posted @ 2012-08-24 10:13 张朝阳 阅读(3767) 评论(0) 推荐(0) 编辑
摘要: 一、客户端向JobTracker提交作业这个阶段要完成以下工作:向JobTracker申请 一下新的JobID检查是否指定了output dir,并且确认output dir不存在根据InputPath计算input split。这里的input split并不是MapReduce输入数据的完整拷贝,只是记录了每个split在什么地方存放着。split和block一样都是逻辑概念,一个split可能跨越不同的磁盘。把运行作业所需的resource复制到jobtracker的文件系统上去,保存在一个包含jobID的目录下。这些resource包括:jar文件、配置文件、计算好的input spl 阅读全文
posted @ 2012-08-24 10:13 张朝阳 阅读(8107) 评论(0) 推荐(1) 编辑
摘要: InputFormatInputFormat类用来产生InputSplit,并把它切分成record。public interface InputFormat { InputSplit[] getSplits(JobConf job, int numSplits) throws IOE... 阅读全文
posted @ 2012-08-24 10:12 张朝阳 阅读(8907) 评论(1) 推荐(2) 编辑
摘要: CountersBuilt-in Counters这些counters你在Web UI中,或是job结束后在控制台生成的统计报告中都看得到,根据名字你也能猜到这些counter是什么意思。分为3个Group:Map-Reduce FramewordMap input records,Map skip... 阅读全文
posted @ 2012-08-24 10:12 张朝阳 阅读(2193) 评论(0) 推荐(0) 编辑
摘要: 首先搞清楚什么叫判别分析?Discriminant Analysis就是根据研究对象的各种特征值判别其类型归属问题的一种多变量统计分析方法。 根据判别标准不同,可以分为距离判别、Fisher判别、Bayes判别法等。比如在KNN中用的就是距离判别,当然这里的“距离”又有好几种:欧氏距离、街区距离、甚 阅读全文
posted @ 2012-08-17 17:24 张朝阳 阅读(31249) 评论(3) 推荐(0) 编辑
摘要: -对于正定的对称矩阵,奇异值等于特征值,奇异向量等于特征向量。在这种情况下用奇异值分解就把特征值和特征向量求出来了。但是只要是方阵,它就有特征值和特征向量,对于一般的方阵,特征值和特征向量怎么求呢(当然我指的是数值求法)?这就要用本文即将介绍的“幂法”。 Power Method幂法 Definit 阅读全文
posted @ 2012-08-17 14:44 张朝阳 阅读(17241) 评论(0) 推荐(2) 编辑
摘要: SVM属于一种前馈神经网络,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势。对于两类分类问题,有训练样本{(X1,y1),(X2,y2),...,(Xn,yn)},y是分类标记,取值于+1和-1。a和b都可以作为分类超平面,但最优超平面只有一个,最优分类平面使间隔最大化。统一起来就是分离边缘可表示为,要使分离边缘最大化,就要使||W0||最小化。于是我们要求解的问题数学表达形式为:这是个带约束的最优化问题。目标函数是二次的,约束条件是一次的----二次规划。可以用Lagrange系数法解决此类优化问题。引入Lagrange函数如下ai是Lagrange系数,非负。上式中第一项为代价 阅读全文
posted @ 2012-08-16 19:40 张朝阳 阅读(3211) 评论(2) 推荐(0) 编辑
摘要: 本文给出基于两种统计量的假设检验,来检验变量间是否独立--χ2与秩和。χ2越小说明越独立。你可能会参考另一篇博客相关性检验。 假设检验 假设检验(Test of Hypothesis)又称为显著性检验(Test of Ststistical Significance)。 在抽样研究中,由于样本所来自 阅读全文
posted @ 2012-08-16 11:41 张朝阳 阅读(24178) 评论(1) 推荐(1) 编辑
摘要: 回归分析本质上就是一个函数估计的问题(函数估计包括参数估计和非参数估计),就是找出因变量(DV,Dependent Variable)和自变量(IV,Independent Variable)之间的因果关系。本文讲两种回归分析的方法:一般线性回归(ordinary linear regression... 阅读全文
posted @ 2012-08-15 20:47 张朝阳 阅读(22276) 评论(0) 推荐(1) 编辑
摘要: 广义上来说,任何在算法中用到SVD/特征值分解的,都叫SpectralAlgorithm。顺便说一下,对于任意矩阵只存在奇异值分解,不存在特征值分解。对于正定的对称矩阵,奇异值就是特征值,奇异向量就是特征向量。传统的聚类算法,如K-Means、EM算法都是建立在凸球形样本空间上,当样本空间不为凸时,算法会陷入局部最优,最终结果受初始参数的选择影响比较大。而谱聚类可以在任意形状的样本空间上聚类,且收敛于全局最优解。谱聚类和CHAMELEON聚类很像,都是把样本点的相似度放到一个带权无向图中,采用“图划分”的方法进行聚类。只是谱聚类算法在进行图划分的时候发现计算量很大,转而求特征值去了,而且最后还 阅读全文
posted @ 2012-08-15 10:18 张朝阳 阅读(7875) 评论(1) 推荐(0) 编辑
摘要: 从理论上来讲用MapReduce技术实现KMeans算法是很Natural的想法:在Mapper中逐个计算样本点离哪个中心最近,然后Emit(样本点所属的簇编号,样本点);在Reducer中属于同一个质心的样本点在一个链表中,方便我们计算新的中心,然后Emit(质心编号,质心)。但是技术上的事并没有理论层面那么简单。Mapper和Reducer都要用到K个中心(我习惯称之为质心),Mapper要读这些质心,Reducer要写这些质心。另外Mapper还要读存储样本点的数据文件。我先后尝试以下3种方法,只有第3种是可行的,如果你不想被我误导,请直接跳过前两种。一、用一个共享变量在存储K个质心由于 阅读全文
posted @ 2012-08-12 11:42 张朝阳 阅读(8749) 评论(5) 推荐(0) 编辑
摘要: 本文给出两种相关系数,系数越大说明越相关。你可能会参考另一篇博客独立性检验。 皮尔森相关系数 皮尔森相关系数(Pearson correlation coefficient)也叫皮尔森积差相关系数(Pearson product-moment correlation coefficient),是用来 阅读全文
posted @ 2012-08-10 15:03 张朝阳 阅读(114625) 评论(4) 推荐(3) 编辑
摘要: 首先给出一个对字符串比较好的散列函数,在有些地方把该算法称为“均匀哈希算法”。//提供一个对string进行散列的函数int hashString(const string &str){ string s; if(str.size()>1024) //如果str太长,则只取前1024个字符 s=str.substr(0,1024); else s=str; int rect=0; for(int i=0;i<s.size();++i) rect=rect*37+s[i]; //Horner法则 return rect;}这个散列函数可能会溢出,导致返回值为负数。注意这里选择 阅读全文
posted @ 2012-08-09 23:23 张朝阳 阅读(3347) 评论(2) 推荐(0) 编辑
摘要: 本文就高斯混合模型(GMM,Gaussian Mixture Model)参数如何确立这个问题,详细讲解期望最大化(EM,Expectation Maximization)算法的实施过程。单高斯分布模型GSM多维变量X服从高斯分布时,它的概率密度函数PDF为:x是维度为d的列向量,u是模型期望,Σ是... 阅读全文
posted @ 2012-08-06 14:45 张朝阳 阅读(74203) 评论(12) 推荐(10) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页