随笔分类 -  数据分析&挖掘

谈到数据分析和挖掘相关的技术
摘要:本文目的最近在Coursera上学习Data Analysis,结合前一阵子阅读的《Head First Statistics》,发现好多计算方法都涉及了假设检验(Hypothesis Test,又称“显著性检验”,Significance Test),用于检验模型的显著性。如回归分析,检测估计量的系数;卡方检验(运用卡方分布)检验模型的优度拟合和变量独立性。所以,决定梳理一下相关知识,作为备忘。原理&方法个人理解,假设检验就是利用反证法和小概率事件对原假设(Null Hypothesis)和备选假设(Alternative Hypothesis)进行选择。首先,假设原假设成立,那么就 阅读全文
posted @ 2013-03-12 14:49 bourneli 阅读(7624) 评论(0) 推荐(0)
摘要:最近在Coursera上学习Data Analysis课程,课程论坛中有个帖子针对交叉检验(Cross Validation)中训练数据集(train dataset),验证数据集(Validate dataset)和测试数据集(test dataset)展开讨论,内容挺好的,记录到这里,作为备忘。交叉检验(Cross Validation)在数据分析中,有些算法需要利用现有的数据构建模型,比如贝叶斯分类器,决策树,线性回归等,这类算法统称为监督学习(Supervisied Learning)算法。构建模型需要的数据称之为训练数据(Train Data)。模型构建完后,需要利用数据验证模型的正 阅读全文
posted @ 2013-03-11 15:10 bourneli 阅读(21803) 评论(0) 推荐(0)
摘要:Factor是R中的一种数据类型,个人理解就是高级编程语言(C/C++,Python,PHP等)中的枚举。选取Factor数组中的子集不像character,numeric那样直观,在这里记录选取方法,可能不是最简洁的,如果有,还请高手指点。主要思路:将factor转成character,然后按照character的方式选取子集。看个例子:fv <- rep(c('a','b'),5)fv <- as.factor(fv)输出如下数据 [1] a b a b a b a b a bLevels: a b现在,需要将fv的所有枚举取到,也就是' 阅读全文
posted @ 2013-02-10 13:23 bourneli 阅读(4989) 评论(0) 推荐(0)
摘要:本文目的最近为了给自己的web系统添加一个运营数据分析和展示的功能,本打算自己纯手工打造,但是发现成本太高,时间和精力方面不允许。在网上查阅了一些资料,发现目前有许多开源的web数据分析系统,所以拿来主意,决定找一个合适的开源web分析工具。最终选择了piwik,理由如下:Piwik采用LAMP开发,我的系统也是,所以可以复用运营环境。Piwik的架构设计比较通用,可以开发插件进行扩展。Piwik的数据显示比较强大,至少看上去如此。例如有曲线图,直方图,饼图,标签云等等。插件可以通过拖拽的方式任意布置。开源,免费,并且有相对完整的文档。经过了一段时间的摸索,我终于将开发插件的流程梳理清楚了,记 阅读全文
posted @ 2013-01-04 20:03 bourneli 阅读(16766) 评论(4) 推荐(2)
摘要:本文目的最近花了2周时间看完了《Head First 统计学》(又名《深入浅出统计学》)。看完后,感觉统计学的知识又捡起来了。在高中和大学的时候,学习统计学的目的很狭隘——为了应付考试。这次看《Head First 统计学》的动机却截然不同,由于前一阵子看了《集体智慧编程》和《数据挖掘导论》,发现里面很多地方应用了统计学,原来统计学的作用如此强大,所以决定重温统计学,并希望在将来的工作中可以派上用场。《Head First 统计学》中的内容比较生动有趣,读完后对“贝叶斯定理”,“卡方分布”,“抽样统计”,“线性回归”,“皮尔森系数”,“抽样的方差为什么除以n-1”,都有了新的认识,这些内容在前 阅读全文
posted @ 2012-12-11 20:01 bourneli 阅读(2086) 评论(0) 推荐(1)
摘要:本章概要本章主要介绍了遗传程序(Genetic Program,简称GP)。此方法与第五章讲的遗传算法(Genetic Algorithm,简称GA)类似,但是解决的问题不同,GA主要解决优化问题,寻找最优解,而GP主要寻找最优算法。本章还讲解了两个例子,来形象的说明GP的运用。算法解析GP的主要任务是针对一个问题,寻求一个最优的算法。在解决过程中,也是一代一代的精英通过突变(单性繁殖)或杂交(两性繁殖)的方式找到最优解,与GA不同的是,GA对参数进行组合变化,而GP对算法组合变化。这里,就需要将算法抽象出来,以至于可以重行组合。本章采用树的结构组织算法,有点像语法树,每个节点要么是最基本的运 阅读全文
posted @ 2012-11-30 19:45 bourneli 阅读(306) 评论(0) 推荐(0)
摘要:本章概要本章介绍了优化问题的基本概念,以及常见的优化算法(随机搜索,爬山,模拟退火,遗传算法)。读完本章后,感觉茅塞顿开,之前一直认为遗传算法高深莫测,原来这些算法都是根据生物,物理的启发而来的,顿时亲切了许多。什么是优化(Optimization)一个问题的解有一系列组合,在这些组合中找出最优的解的过程就是优化。最笨的方法,枚举出所有可能的结果,找出最优的解。但是,往往可能性太多,计算机根本上无法枚举出所有的解决方案。成本函数(Cost Function)最优的解决方案在成本函数中得到最大或最小值。成本函数是指导优化继续进行的根本。优化算法随机搜索:计算一组随机的组合方案,在这个方案中找到最 阅读全文
posted @ 2012-11-29 20:19 bourneli 阅读(412) 评论(0) 推荐(0)
摘要:本章概要本章介绍了搜索引擎的基本原理,PageRank的基本思想和神经网络在学习用户点击行为,用于提高搜索结果的准确性方面的问题搜索引擎基本原理搜索引擎的基本框架:爬取网页—>制作索引—>检索查询。虽然只有这三步,熟练的工程师基本上一天就可以搭建一个小型的搜索引擎。但是每一步中可以深入研究的地方太多,涉及到的技术难点太多。本书概要的介绍了上面三个步骤,并用python实现了一个小巧的搜索引擎,关键点是要介绍如何对检索出来的内容进行排序。内容排序主要介绍了三种方式为搜索结果排序基于页面内容排序:按照检索词的频率,检索词之间的位置,检索词在文本中的距离的标准排序。基于页面之间的关系排序 阅读全文
posted @ 2012-11-28 19:08 bourneli 阅读(326) 评论(0) 推荐(0)
摘要:本文概要本章主要描述了非负矩阵因式分解(Non-Negative Matrix Factorize)在数据挖掘中的作用。举了两个例子:1)文章主题分析(一些关键的词组);2)股票交易量分析(交易量与重大事件的关系)贝叶斯分类的局限贝叶斯分类时,需要训练数据集,这些数据集是人为划分的,并且不会出现新的分类。如果待处理的数据集的潜在分类很多,而且每一个分类需要一定量的样本才会准确,那么训练的工作量会非常大。所以,贝叶斯分类器适合分类比较少,每个分类样本较多的场景。层级聚类局限在于不太准确,可能导致一些不同类的样本却在一个聚类中。比如2个相关性并不大的文章A,B,但是由于必须要找出距离最近的文章组成 阅读全文
posted @ 2012-11-26 17:23 bourneli 阅读(371) 评论(0) 推荐(0)
摘要:本章概要本章介绍了线性分类器和支持向量机(Supprt Vector Machine, short for SVM)。同时,还介绍了一些数据预处理的相关实践。SVM的原理比较高深,本章没有详细的说明,只是介绍了如何采用python中的LIBSVM库,进行SVM的训练和预测。线性分类器虽然简单,但是与SVM还是有一定联系,所以本章最开始介绍了线性分类器。决策树的不足本章给出的例子是交友网站上的配对预测,经过数据预处理后,主要是一些数值数据。使用决策树分类,会发现节点基本上是在同一类数据上不同值之间来回变化,比如年龄(如下图)。所以,决策数并不适合数值关系负责,没有明确分割点的数据分类。数据伸缩对 阅读全文
posted @ 2012-11-22 19:55 bourneli 阅读(282) 评论(0) 推荐(0)
摘要:本文概要贝叶斯分类器 ,决策数和支持向量机对数值型数据处理能力较弱。本文介绍kNN(K Nearst Neighbor)算法,可以根据已有的数值型训练集合,对数值型数据做出预测。KNN算法正对当前被预测对象,在训练集合中找出最近的K个物品价格,算出平均值为预测价格。距离算法有很多,如皮尔森系数,余弦定理,欧氏距离等。本章例子是预测商品价格,采用的是欧氏距离(为什么呢?我的理解:商品的价格一般与商品重量,体积等成正比,所以距离的模大小比较重要,采用欧拉距离,可以将向量摸大小的因素考虑在内)。K的选取算法中有K的,都会遇到这个问题,k取多少?在KNN中,k太小,比如1,那么预测价格仅仅与最临近的训 阅读全文
posted @ 2012-11-20 21:00 bourneli 阅读(344) 评论(0) 推荐(0)
摘要:本章概要决策树与贝叶斯分类,费舍尔分类,神经网络一样,是一种分类技术。但是,与其他分类技术不同的是,决策树做出决策的过程很清晰,可以帮助用户了解决策过程,从而调整自己的策略(比如广告投放),往往决策树本身处理过程比其分类结果更重要。本章主要介绍了CART算法构建决策树与做出决策,同时还介绍了一些决策树的优化方案,容错机制和使用场景。本章还介绍了三种集合纯度计算方法基尼不纯度(Gini Impurity)熵(Entory)方差(Variance)决策树上面就是一个决策树,分叶节点是逻辑判断,叶节点是结果。输入结果按照决策树的节点一级一级的向下走,直到访问到叶节点,得到最后的分类结果。可以理解为一 阅读全文
posted @ 2012-11-17 22:18 bourneli 阅读(1511) 评论(0) 推荐(0)
摘要:本章概要本章主要介绍了两种分类技术:朴素贝叶斯分类(Naive Bayesian Classification)费舍尔分类器(Fisher Classification)上面两种技术的共性都是基于条件概率计算不同分类的概率,然后通过设定一些阀值,找到最适合的分类。分类过程中,都使用了权重概率,用户避免极概率的发生。当然,上述两种分类器不仅仅局对邮件分类,还可以对其他实物,如文章,图像,商品等分类,关键是如何抽取特性。特性特性是根据不同实物而变化的。比如一般的文本,如新闻。可以将词语出现与否作为特性。比如邮件,可以将发送邮件的IP,发送者,发送时间,大写出现频率等均作为特性。训练人工将一系列特性 阅读全文
posted @ 2012-11-15 21:15 bourneli 阅读(611) 评论(0) 推荐(0)
摘要:本章概要本章主要介绍了两种协同过滤(Collaborative Filtering)算法,用于个性化推荐:基于用户的协同过滤(User-Based Collaborative Filtering,又称 K-Nearest Neighbor Collaborative Filtering)基于条目的协同过滤(Item-Based Collaborative Filtering)本章还介绍两种向量相似性算法:欧氏距离(Euclidean Distance)皮尔斯稀疏(Pearson Coefficient)协同过滤协同过滤是在一大群用户中寻找一些与你的用户相似的用户,然后将这些找到的用户使用过但是 阅读全文
posted @ 2012-11-11 18:33 bourneli 阅读(572) 评论(0) 推荐(0)
摘要:本文目的 最近这几天一直在研究如何评估Kmeans聚类算法中的最优K值。主要理论依据是《数据挖掘导论》8.5.5节中介绍的SSE和Silhouette Coefficient系数的方法评估最优K。现在记录整个实验过程,作为备忘。不过,体验过程中,由于R软件使用的还不太熟练,实现过程中有些地方可能不准确,还请大牛指点。 实验步骤概述 下载实验数据,点击这里。 取k值范围,计算出SSE,并绘制出... 阅读全文
posted @ 2012-11-08 21:27 bourneli 阅读(13851) 评论(2) 推荐(3)
摘要:本文目的最近在看《数据挖掘导论》,此书作为此领域的入门书籍,很有口碑。这几天抽业余时间,看了第二章,觉得该记点什么,否则对不起自己。人总在与遗忘作斗争,好记性不如烂笔头。主要内容本章节主要讨论了数据处理的4个主要方面:数据类型数据质量数据预处理相似度测量数据类型(Type of Data)定义数据的属性,记录,数据集。属性的类型分为4种名称(Noimal):仅仅只是名称,用来区分不同记录,一一对应,如ID有序(Ordinal):可以理解为计算机语言中枚举类型,有序,有限区间(Interval):数字区域,主要用于加减运算,如时间,日期比例(Radio):计算比例,主要用于乘除运算。数据集的类型 阅读全文
posted @ 2012-11-03 20:41 bourneli 阅读(830) 评论(0) 推荐(0)
摘要:读完了《数据挖掘导论》(简称IDM)的前言和第一章,了解到本书主要负责数据挖掘的5个主题数据预处理 Chp 2 3分类 Chp 4 5关联 Chp 6 7聚类 Chp 8 9异常探测 Chp 10前面的四个主题均分为两部分:基础和高级。所以如果希望有大概了解,可以先看所有的基础部分,然后再找自己感兴趣的主题,阅读高级部分。主题的依赖关系,数据预处理最基础,最好先读。分类,关联和聚类顺序任意。异常探测需要分类,关联和聚类的知识,所以最好最后阅读。 阅读全文
posted @ 2012-10-31 20:40 bourneli 阅读(395) 评论(0) 推荐(0)
摘要:本文目的 最近一直在使用R进行hcluster计算,主要采用了一些R自带的距离公式和cophenetic距离验证聚类的质量。其中R自带的hclust方法不支持cosine函数,如果需要下载R的扩展,要下载许多关联的库,所以自己编写了一个简单的cosine函数,并且使用了R的proxy扩展(距离计算框架),计算向量距离。内容涉及比较多,所以记录一下,作为备忘。 采用R计算hclust 步骤... 阅读全文
posted @ 2012-10-30 20:36 bourneli 阅读(4419) 评论(4) 推荐(0)
摘要:本文目的最近在使用R做一些文本聚类方面的计算,感觉R还是很好用的,特别是R有很多计算扩展,可以方便的运用这些扩展和数据进行试验。所以,在此记录一些使用心得,作为备忘。R是什么R是一个开源软件,起初主要用于数学统计计算。通过R脚本与R环境交互,脚本中内置了许多统计相关的函数,使用十分方便。但是,最近几年R被广泛使用到了数据挖掘领域,据Rexer Analytics 5th Annual Data Miner Survey - 2011调查显示,有47%的数据挖掘从业人员使用R作为主要工具。R有一个活跃的社区CRAN(The Comprehensive R Archive Network),此社区 阅读全文
posted @ 2012-10-27 16:07 bourneli 阅读(835) 评论(0) 推荐(0)
摘要:本文目的 weka是一套使用java开发的数据挖掘工具集合,提供GUI/CLI界面和Java API使用方式。所以,在学习和解决数据挖掘问题时,可以先尝试用weka的GUI或CLI做出合适的分析,找到适当的算法,然后在将此算法集成到自己的项目中。最近在的项目中遇到了文本聚类的问题,kmeans是一种常见的聚类算法,这里先拿此算法和示例数据做一些实验,以便熟悉weka的界面操作。 什么是k... 阅读全文
posted @ 2012-10-15 21:12 bourneli 阅读(24416) 评论(3) 推荐(1)