十大数据挖掘算法及各自优势
国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 2006年12月评选出了数据挖掘领域的十大经典算法:C4.5, k-Means, SVM, Apriori, EM, PageRank, AdaBoost, kNN, Naive Bayes, and CART.
不仅仅是选中的十大算法,其实参加评选的18种算法,实际上随便拿出一种来都可以称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响。
1. C4.5
C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法. C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:
1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
2) 在树构造过程中进行剪枝;
3) 能够完成对连续属性的离散化处理;
4) 能够对不完整数据进行处理。
C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
2. The k-means algorithm 即K-Means算法
k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均 方误差总和最小。
更多 »
数据与数据处理能力将成为企业的核心竞争力
随着云计算,物联网,移动互联网,大数据,智慧城市等新技术的发展和广泛应用,人们的生活方式,企业的经营方式等都发生了巨大的变化,互联网公司成为了企业纷纷学习的对象。软件测试中心测试工程师针对当下的形式,提出了数据驱动的企业之一概念,数据将成为企业的第四资产。
在移动互联网时代,数据的作用将上升为一个新的高度。其实,历史已经证明了数据的重要作用。每一次IT变革都是在重复数据掌控权的转移动作,很多小型企业或者某种业务,或者把数据真的放在公有云上,这些行为都是在当下的技术产生的基础上发生的。实际上这些数据的转移导致了我们话语权转移的可能性。
因此,光有数据显然是远远不够的,同时还要掌握使用数据的知识和能力。由此我们可以得出一个结论,公司的核心竞争力就是两条,第一拥有数据,第二拥有使用数据的专业知识。从这个意义来讲,作为一个IT公司,走到最后,我们就会发现我们已经只拥有第二种能力了,但是没有数据,因为数据是有所有权的。测试工程师认为未来如果企业想在市场上竞争的话,其实只需要做的就两件事儿,第一是收集数据,拥有数据,第二,拥有处理数据的能力。
大数据的4V特征
近几年很多领域都在讨论如何发展和运用大数据,那么什么是大数据?大数据的特征是什么?好多人不怎么了解,下文对这些方面进行简单的阐述。
(一)大数据(Big Data)
大数据是指那些超过传统数据库系统处理能力的数据。它的数据规模和转输速度要求很高,或者其结构不适合原本的数据库系统。为了获取大数据中的价值,我们必须选择另一种方式来处理它。数据中隐藏着有价值的模式和信息,在以往需要相当的时间和成本才能提取这些信息。如沃尔玛或谷歌这类领先企业都要付高昂的代价才能从大数据中挖掘信息。而当今的各种资源,如硬件、云架构和开源软件使得大数据的处理更为方便和廉价。即使是在车库中创业的公司也可以用较低的价格租用云服务时间了。对于企业组织来讲,大数据的价值体现在两个方面:分析使用和二次开发。对大数据进行分析能揭示隐藏其中的信息。例如零售业中对门店销售、地理和社会信息的分析能提升对客户的理解。对大数据的二次开发则是那些成功的网络公司的长项。例如Facebook通过结合大量用户信息,定制出高度个性化的用户体验,并创造出一种新的广告模式。这种通过大数据创造出新产品和服务的商业行为并非巧合,谷歌、雅虎、亚马逊和Facebook它们都是大数据时代的创新者。
更多 »
修改hadoop的ssh端口
启动hadoop,但ssh 端口不是默认的22怎么样?好在它可以配置。在conf/hadoop-env.sh里改下。如:
export HADOOP_SSH_OPTS="-p 1234"
hadoop加载本地库不成功
- 安装java环境
- 安装eclipse集成开发环境
- 将hadoop的client,core,以及apache的common对应包放到classpath下
调试的时候需要注意:
Hadoop异常:启动服务后50070端口无法访问
stopping jobtracker
localhost: no tasktracker to stop
no namenode to stop
localhost: no datanode to stop
localhost: stopping secondarynamenode
理解Spark的核心RDD
与许多专有的大数据处理平台不同,Spark建立在统一抽象的RDD之上,使得它可以以基本一致的方式应对不同的大数据处理场景,包括MapReduce,Streaming,SQL,Machine Learning以及Graph等。这即Matei Zaharia所谓的“设计一个通用的编程抽象(Unified Programming Abstraction)。这正是Spark这朵小火花让人着迷的地方。
要理解Spark,就需得理解RDD。
RDD是什么?
RDD,全称为Resilient Distributed Datasets,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。在这些操作中,诸如map、flatMap、filter等转换操作实现了monad模式,很好地契合了Scala的集合操作。除此之外,RDD还提供了诸如join、groupBy、reduceByKey等更为方便的操作(注意,reduceByKey是action,而非transformation),以支持常见的数据运算。
更多 »
Scala语言入门初探
用Java语言开发许久了,一直接触指令式的语言开发,同时也做的多了,也逐渐感觉到了静态语言的一些弊病。Scala的出现,可以使Java程序员平滑的过度,Scala语言也是运行在JVM上的,可以与Java无缝交互;Scala是面向对象的,可以通过提升接口的抽象级别来帮助管理复杂性。Scala是简洁的,Scala程序员曾报告说,与Java比起来,它的代码行数可以减少到Java的1/10,哈哈,是不是有些夸张呢?个人觉得,如果能减少三分之一,就非常成功了;Scala是静态的,它以Java的内嵌类型系统为基础,允许使用泛型参数化类型,用交集组合型类型和抽象类型隐藏实现细节,从而能够设计出安全而又能灵活使用的接口。
我们先来安装Scala的开发包,我的版本是scala-2.9.0.1.zip,安装方式解压就可以,环境变量和Jdk的没什么区别,指向到bin目录下就可以了,打开dos窗口,运行scala,出现下面结结果就表示安装成功了
更多 »
几个大数据处理工具都是用JVM上的语言写成的
Storm, Spark, Hadoop三个大数据处理工具都是JVM上的语言写成的,这件事是否能说明什么?
现任Apache软件基金会主席Doug Cutting开发了三个很牛逼的开源,Lucene、Nutch和Hadoop,都是用Java写的,这说明了什么,只能说明Doug本人非常熟悉Java。当然,Doug是业余时间读论文然后照着论文实现的这些东西,还说明了Doug具有很强的学习能力和专研精神。
如果都从头自己那么语言之间可以认为没有什么区别,只是不知道现在还会有人这样做吗?
一旦要考虑引入库,那么java的优势就很明显了。c和c++都逃不掉至少需要重新编译库的问题,而且很多时候一些库无法组合在一起用(不修改库的代码的情况下)。
而hadoop使用了java,并且获得了巨大的成功,这自然的让更多的集群软件选择使用jvm。否则不说其他的,你hdfs的时候还能够这么方便吗?