十大经典算法:
k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。
3、Support vector machines支持向量机
支持向量机(Support Vector Machine),简称SV机(论文中一般简称SVM)。它是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中。支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面。分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。一个极好的指南是C.J.C Burges的《模式识别支持向量机指南》。van der Walt和Barnard将支持向量机和其他分类器进行了比较。
4、The Apriori algorithm
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。其核心是基于两阶段频集思想的递推算法。该关联规则在分类上属于单维、单层、布尔关联规则。在这里,所有支持度大于最小支持度的项集称为频繁项集,简称频集。
5、最大期望(EM)算法
在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variabl)。最大期望经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。
6、PageRank网页排名
PageRank是Google算法的重要内容。2001年9月被授予美国专利,专利人是Google创始人之一拉里·佩奇(Larry Page)。因此,PageRank里的page不是指网页,而是指佩奇,即这个等级方法是以佩奇来命名的。
PageRank根据网站的外部链接和内部链接的数量和质量俩衡量网站的价值。PageRank背后的概念是,每个到页面的链接都是对该页面的一次投票,被链接的越多,就意味着被其他网站投票越多。这个就是所谓的“链接流行度”——衡量多少人愿意将他们的网站和你的网站挂钩。PageRank这个概念引自学术中一篇论文的被引述的频度——即被别人引述的次数越多,一般判断这篇论文的权威性就越高。
7、AdaBoost
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。
8、kNN: k-nearest neighbor classification
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
9、Naive Bayes朴素贝叶斯
在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBC)。朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。
10、CART:分类与回归树
CART, Classification and Regression Trees。在分类树下面有两个关键的思想。第一个是关于递归地划分自变量空间的想法;第二个想法是用验证数据进行剪枝。
数学之路:高等数学-线性代数-概率统计-数值分析-离散数学-组合数学-近世代数-混沌分性计算;工学硕士考试:前三科,导数,微积分,空间解析几何,多元函数微分,重积分,常微分方程,矩阵,行列式,向量空间,解线性方程组,矩阵可对角化,实二次型,随机事件,条件概率,随机变量,点估计,有理数逻辑,集合,二元关系,函数,代数,格与布尔代数,图论,数值分析插入法,函数逼近,数值积分,常微分方程,非线性偏微方程,微分迭代。
Chris Bishop和Kevin Murphy的书,Andrew Ng和Hugo Larochelle关于神经网络的课程。自己组合设计和修改一组算法用数据训练它来参加Kaggle。在优化参数和选择合适的模型组合方面下功夫。实战测试效果。经典的深度学习有深度卷积网络(CNN)和深度置信网络(DBN)模型。这些模型有很强的分层结构,完成多层非线性运算操作,使其更加强大的拟合性能。2006年Hiton,Yoshua Bengio ,Yann Lecun完成的相对统一的理论基础上开展工作。读书《PRML》,《统计学习法》,《矩阵论》,《最优化法》,《凸分析》。此处可以看看迈克尔-乔丹教授伯里克统计研究方面鼻祖,Ng老师也有及其扎实理论功底,同时也是LDA的二作。
ATC考试:数学,阅读,科学推理,写作,这种考试对SAT来说更适合理工科高中生参加。
在规则下信仰programming Libraries编程库资源
R project for statistical computing:采用类似于Lisp语言的脚本语言,所以要通过统计相关的功能通过R语言提供,包括一些复杂的图标,CRAN机器学习的第三包中机器学习的代码,统计计算方法运行机理。
WEKA:
16个算法
巩固你的核心优势
1.梯度下降(Gradient descent)——一种数学上的最优化算法。
2.欧几里得算法(Euclidean algorithm)——计算两个整数的最大公约数。
3.期望-最大算法(Expectation-maximization algorithm,又名EM-Training)——在统计计算中,期望-最大算法在概率模型中寻找可能性最大的参数估算值,其中模型依赖于未发现的潜在变量。
4.LLL算法(Lenstra-Lenstra-Lovasz lattice reduction)——以格规约(lattice)基数为输入,输出短正交向量基数。
5.最大流量算法(Maximum flow)——该算法试图从一个流量网络中找到最大的流。
6.牛顿法(Newton’s method)——求非线性方程(组)零点的一种重要的迭代法。
7.Q-learning学习算法——通过学习动作值函数(action-value function)完成的强化学习算法。
8.两次筛法(Quadratic Sieve)——现代整数因子分解算法,在实践中,是目前已知第二快的此类算法(仅次于数域筛法Number Field Sieve)。
9.RANSAC——是“RANdom SAmple Consensus”的缩写。该算法能根据包含异常值的一系列观察得到的数据,估算一个数学模型的参数值。
10.RSA——公钥加密算法。首个适用于以签名作为加密的算法。
11.奇异值分解(Singular value decomposition,简称SVD)——在线性代数中,SVD是重要的实数或复数矩阵的分解方法。
12.求解线性方程组(Solving a system of linear equations)——求解线性方程组,可以使用高斯—约当消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。
13.数据压缩——采取特定编码方案,使用更少的字节数(或是其他信息承载单元)对信息编码的过程,又叫来源编码。
14.Schönhage-Strassen算法——在数学中,Schönhage-Strassen算法是用来完成大整数的乘法的快速渐近算法。
15.Strukturtensor算法——应用于模式识别领域,为所有像素找出一种计算方法。
16.维特比算法(Viterbi algorithm)——寻找隐藏状态最有可能序列的动态规划算法。
40种高端工具
提高你的数据分析力
1.Amazon SimpleDB——一个可大规模伸缩、用 Erlang 编写的高可用数据存储。
2.Apache ActiveMQ——Apache出品,是最流行、能力强劲的开源消息总线。
3.Apache Avro——Hadoop下的一个子项目。它本身既是一个序列化框架,同时也实现了RPC的功能。
4.Apache Kafka——一个开源消息系统项目,由Scala写成,为处理实时数据提供一个统一、高通量、低等待的平台。
5.Berkeley Spark——类Hadoop MapReduce的通用的并行,但它能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
6.Cassandra——一套流行的开源分布式NoSQL数据库系统,具有良好的可扩放性。
7.Cloudera Flume——Flume是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。
8.CouchDB——是用Erlang开发的面向文档的数据库系统,最大的特点是,它是一个面向Web应用的新一代存储系统。
9.Dapper——一个轻量的ORM(Object Relational Mapping,简称ORM、O/RM或O/R mapping,对象关系映射)。
10.DataTorrent——一个实时的、有容错能力的数据流式处理和分析平台。
11.Docker——一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化的容器引擎。
12.Facebook Scribe——Facebook开源的日志收集系统,能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS、分布式文件系统等)上,以便于进行集中统计分析处理。
13.Facebook Thrift——解决Facebook系统中,各系统间大数据量的传输通信以及系统间语言环境不同而需要跨平台的问题。
14.FoundationDB——支持ACID事务处理的NoSQL数据库,拥有非常好的性能、数据一致性和操作弹性。
15.Hadoop MapReduce——一种编程模型,用于大规模数据集(大于1TB)的并行运算。
16.HBase——一个分布式的、面向列的开源数据库。
17.HDFS(Hadoop分布式文件系统)——适合运行在通用硬件(commodity hardware)上的分布式文件系统。它是一个高度容错性的系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
18.HyperTable——一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。
19.Imctfy——Google开源了自己所用Linux容器系统的开源版本lmctfy,包括一个C++库(使用了C++11,文档可以参考头文件)和命令行界面。
20.Jafka——一个开源的、高性能的、跨语言分布式消息系统,使用GitHub托管。
21.KFS——GFS的C++开源版本,Kosmos distributed file system(KFS)是一个专门为数据密集型应用(搜索引擎、数据挖掘等)而设计的存储系统,类似于Google的GFS和Hadoop的HDFS分布式文件系统。
22.Kibana——一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口,可使用它对日志进行高效的搜索、可视化、分析等各种操作。
23.Kubernetes——Google开源的容器集群管理系统,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能。
24.Logstash——一个应用程序日志、事件的传输、处理、管理和搜索的平台,可统一对应用程序日志进行收集管理,它提供 Web 接口用于查询和统计。
25.MongoDB——一个基于分布式文件存储的数据库,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。
27.OceanBase——一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。
28.OpenStack——一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。
29.Placed Analytics——“干掉”了脚本、API还有其他需要开发者“跑腿”的工作,仅仅是交付结果。
30.Precog——可以从各种数据源抓取输入数据。
31.RabbitMQ——一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。
32.Spring for Apache Hadoop——使用了基于JVM的脚本,以及使用Hadoop或者相关的技术如Hive、HBase来进行开发应用程序。
33.StatsMix——对开发者使用的编程语言进行应用数据的搜集和分析,该服务可以自动追踪特定的指标。
34.StormMQ——MQMessageQueue消息队列产品,是一种服务程序。
35.Tachyon——一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存在tachyon里的文件。
36.Vertica——它的数据库使用标准的SQL查询,同时架构非常适合云计算,包括虚拟化,分布式多节点运行等,并且可以和Hadoop/MapReduce进行集成。
37.Wukong——配置和管理大数据环境的工具,基于Ruby的命令行界面,可编写大数据应用调用Data Delivery Service或Hadoop,语法简单,无需学习MapReduce或者Flume。
38.ZeroMQ——一个简单好用的传输层,像框架一样的一个socket library,它使得Socket编程更加简单、简洁和性能更高。
39.Zipkin(分布式跟踪系统)——Twitter 的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。
40.ZooKeeper——一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件。
16个算法,提高你的开发效率
1.A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。
2.Buchberger算法——一种数学算法,可将其视为针对单变量最大公约数求解的欧几里得算法和线性系统中高斯消元法的泛化。
3.Diffie-Hellman密钥交换算法——一种加密协议,允许双方在事先不了解对方的情况下,在不安全的通信信道中,共同建立共享密钥。
4.Dijkstra算法——针对没有负值权重边的有向图,计算其中的单一起点最短算法。
5.动态规划算法(Dynamic Programming)——展示互相覆盖的子问题和最优子架构的算法。
6.堆排序(Heaps)——利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。
7.单纯型算法(Simplex Algorithm)——在数学的优化理论中,单纯型算法是常用的技术,用来找到线性规划问题的数值解。
8.二分查找(Binary Search)——在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。
9.分支界定算法(Branch and Bound)——在多种最优化问题中寻找特定最优化解决方案的算法,特别是针对离散、组合的最优化。
10.哈希算法(Hashing)——一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
11.合并查找算法(Union-find)——给定一组元素,该算法常常用来把这些元素分为多个分离的、彼此不重合的组。
12.合并排序(Merge Sort)——是建立在归并操作上的一种有效的排序算法,是采用分治法(Divide and Conquer)的一个非常典型的应用。
13.集束搜索(又名定向搜索,Beam Search)——最佳优先搜索算法的优化。
14.快速傅里叶变换(Fast Fourier transform,FFT)——计算离散的傅里叶变换(DFT)及其反转。
15.Karatsuba乘法——适用于需要完成上千位整数的乘法的系统中,比如计算机代数系统和大数程序库。
16.离散微分算法(Discrete differentiation)。
50种先进工具,让你玩转大数据
1.Apache Accumulo——一个可靠的、可伸缩的、高性能的排序分布式的 Key-Value 存储解决方案,基于单元访问控制以及可定制的服务器端处理。
2.Apache Ambari——一种基于Web的工具,支持Apache Hadoop集群的供应、管理和监控。
3.Apache Drill——一个能对大数据进行交互分析、开源的分布式系统,且基于Google Dremel实现。
4.Amazon Dynamo——一个经典的分布式Key-Value 存储系统,具备去中心化、高可用性、高扩展性的特点。
5.Apache Giraph——一个可伸缩的分布式迭代图处理系统。
6.Apache Hama——一个纯BSP(Bulk Synchronous Parallel)计算框架,模仿了Google的Pregel,用来处理大规模的科学计算,特别是矩阵和图计算。
7.Apache Tajo——目的是在HDFS之上构建一个先进的数据仓库系统。它能提供低延迟的数据访问,以及为更传统的ETL提供工具。
8.BloomFilter——它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员,具有良好的安全性。
9.BitDeli——能衡量出任何使用Python脚本的应用程序的指标。
10.Cloudera Impala——可直接为存储在HDFS或HBase中的Hadoop数据提供快速、交互式的SQL查询。
11.Consistent Hashing(哈希算法)——一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题。
12.Continuuity——它可以简化Hadoop以及HBase集群的复杂性,而且包含一系列开发套件。
13.ElasticSearch——一个基于Lucene的搜索服务器。基于RESTful web接口,它提供了一个分布式多用户能力的全文搜索引擎。
14.Facebook Puma——实时数据流分析。
15.Flat Buffers——谷歌开源高效、跨平台的序列化库。
16.Flurry——不仅可构建移动应用,还能分析所有的数据。
17.Ganglia——Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。
19.Hadoop Yarn——Hadoop 新 MapReduce 框架。
20.HaLoop——迭代的MapReduce,HaLoop适用于迭代计算的Hadoop 。
21.Hive——基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。
22.HyperDex——一个分布式、可搜索的键值存储系统,吞吐和延时都能秒杀MonogDB,吞吐甚至强于Redis。
23.Keen IO——仅需要把一行代码插入到指定的追踪位置,便可以追踪应用程序中的任意代码。
24.Kontagent——建立在Hadoop基础设施之上,它能对移动、社交以及Web应用进行分析的平台。
25.LevelDB——一个Google实现的非常高效的kv数据库,在billion级别下还有着非常高的性能。
26.Lucene——一个开放源代码的全文检索引擎工具包。
27.Mahout——Apache Software Foundation(ASF)开发的一个全新的开源项目,其主要目标是创建一些可伸缩的机器学习算法,供开发人员在 Apache 许可下免费使用。
28.Nagios——一款开源的免费网络监视工具。
29.Netty——由JBOSS提供的一个java开源框架。
30.Nutch——一个开源Java实现的搜索引擎,提供了我们运行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬虫。
31.Phoenix——可在Apache HBase上执行SQL查询,对简单查询来说,其性能量级是毫秒,对于百万级别的行数来说,其性能量级是秒。
32.Pig——一种编程语言,简化了Hadoop常见的工作任务,可加载数据、表达转换数据以及存储最终结果。
33.Presto——Facebook开源的数据查询引擎Presto ,可对250PB以上的数据进行快速地交互式分析。
34.Protocol Buffers——Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。
35.RecordIO——解决存储在磁盘上的文件遇到不稳定的介质容易损坏的问题。
36.Redis——一个高性能的key-value存储系统,和Memcached类似,它支持存储的value类型相对更多。
37.RocksDB——在LevelDB原有的代码上进行开发,借鉴了Apache HBase一些好的idea。在云计算横行的年代,RocksDB也开始支持HDFS,允许从HDFS读取数据。
38.SenseiDB——一个NoSQL数据库,它专注于高更新率以及复杂半结构化的搜索查询。
它之所以能对付坏数据,关键在于MagicNumber(校验值)。
39.Shark——通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作。
40.SolrCloud——基于Solr和Zookeeper的分布式搜索方案。
41.Solr——一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。
42.Sphinx——一个基于SQL的全文检索引擎,可以结合MySQL、PostgreSQL做全文搜索。
43.SSTable——有序字符串表(SSTable,Sorted String Table)是用于存储、处理和数据集交换的最流行的数据输出格式。
44.Stinger——原叫Tez,运行在YARN上的DAG计算框架。它能提升10倍左右的性能,同时让Hive支持更多的SQL。
45.Tair——淘宝自己开发的一个分布式 key/value 存储引擎。
46.TokyoCabinet——一款DBM数据库,是一个DBM的实现。
47.Twister——迭代式MapReduce框架,目前支持NaradaBroking和ActiveMQ。
48.Twitter Rainbird——一款基于Zookeeper、Cassandra、Scribe、Thrift的分布式实时统计系统。
49.Voldemort——一个分布式键值存储系统,是Amazon’s Dynamo的一个开源克隆。
50.Yahoo S4——S4(Simple Scalable Streaming System)是一个分布式流计算(Distributed Stream Computing)的模型
16个算法
巩固你的核心优势
1.梯度下降(Gradient descent)——一种数学上的最优化算法。
2.欧几里得算法(Euclidean algorithm)——计算两个整数的最大公约数。
3.期望-最大算法(Expectation-maximization algorithm,又名EM-Training)——在统计计算中,期望-最大算法在概率模型中寻找可能性最大的参数估算值,其中模型依赖于未发现的潜在变量。
4.LLL算法(Lenstra-Lenstra-Lovasz lattice reduction)——以格规约(lattice)基数为输入,输出短正交向量基数。
5.最大流量算法(Maximum flow)——该算法试图从一个流量网络中找到最大的流。
6.牛顿法(Newton’s method)——求非线性方程(组)零点的一种重要的迭代法。
7.Q-learning学习算法——通过学习动作值函数(action-value function)完成的强化学习算法。
8.两次筛法(Quadratic Sieve)——现代整数因子分解算法,在实践中,是目前已知第二快的此类算法(仅次于数域筛法Number Field Sieve)。
9.RANSAC——是“RANdom SAmple Consensus”的缩写。该算法能根据包含异常值的一系列观察得到的数据,估算一个数学模型的参数值。
10.RSA——公钥加密算法。首个适用于以签名作为加密的算法。
11.奇异值分解(Singular value decomposition,简称SVD)——在线性代数中,SVD是重要的实数或复数矩阵的分解方法。
12.求解线性方程组(Solving a system of linear equations)——求解线性方程组,可以使用高斯—约当消去法(Gauss-Jordan elimination),或是柯列斯基分解( Cholesky decomposition)。
13.数据压缩——采取特定编码方案,使用更少的字节数(或是其他信息承载单元)对信息编码的过程,又叫来源编码。
14.Schönhage-Strassen算法——在数学中,Schönhage-Strassen算法是用来完成大整数的乘法的快速渐近算法。
15.Strukturtensor算法——应用于模式识别领域,为所有像素找出一种计算方法。
16.维特比算法(Viterbi algorithm)——寻找隐藏状态最有可能序列的动态规划算法。
40种高端工具
提高你的数据分析力
1.Amazon SimpleDB——一个可大规模伸缩、用 Erlang 编写的高可用数据存储。
2.Apache ActiveMQ——Apache出品,是最流行、能力强劲的开源消息总线。
3.Apache Avro——Hadoop下的一个子项目。它本身既是一个序列化框架,同时也实现了RPC的功能。
4.Apache Kafka——一个开源消息系统项目,由Scala写成,为处理实时数据提供一个统一、高通量、低等待的平台。
5.Berkeley Spark——类Hadoop MapReduce的通用的并行,但它能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
6.Cassandra——一套流行的开源分布式NoSQL数据库系统,具有良好的可扩放性。
7.Cloudera Flume——Flume是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。
8.CouchDB——是用Erlang开发的面向文档的数据库系统,最大的特点是,它是一个面向Web应用的新一代存储系统。
9.Dapper——一个轻量的ORM(Object Relational Mapping,简称ORM、O/RM或O/R mapping,对象关系映射)。
10.DataTorrent——一个实时的、有容错能力的数据流式处理和分析平台。
11.Docker——一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化的容器引擎。
12.Facebook Scribe——Facebook开源的日志收集系统,能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS、分布式文件系统等)上,以便于进行集中统计分析处理。
13.Facebook Thrift——解决Facebook系统中,各系统间大数据量的传输通信以及系统间语言环境不同而需要跨平台的问题。
14.FoundationDB——支持ACID事务处理的NoSQL数据库,拥有非常好的性能、数据一致性和操作弹性。
15.Hadoop MapReduce——一种编程模型,用于大规模数据集(大于1TB)的并行运算。
16.HBase——一个分布式的、面向列的开源数据库。
17.HDFS(Hadoop分布式文件系统)——适合运行在通用硬件(commodity hardware)上的分布式文件系统。它是一个高度容错性的系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
18.HyperTable——一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。
19.Imctfy——Google开源了自己所用Linux容器系统的开源版本lmctfy,包括一个C++库(使用了C++11,文档可以参考头文件)和命令行界面。
20.Jafka——一个开源的、高性能的、跨语言分布式消息系统,使用GitHub托管。
21.KFS——GFS的C++开源版本,Kosmos distributed file system(KFS)是一个专门为数据密集型应用(搜索引擎、数据挖掘等)而设计的存储系统,类似于Google的GFS和Hadoop的HDFS分布式文件系统。
22.Kibana——一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口,可使用它对日志进行高效的搜索、可视化、分析等各种操作。
23.Kubernetes——Google开源的容器集群管理系统,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能。
24.Logstash——一个应用程序日志、事件的传输、处理、管理和搜索的平台,可统一对应用程序日志进行收集管理,它提供 Web 接口用于查询和统计。
25.MongoDB——一个基于分布式文件存储的数据库,由C++语言编写,旨在为Web应用提供可扩展的高性能数据存储解决方案。
27.OceanBase——一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。
28.OpenStack——一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。
29.Placed Analytics——“干掉”了脚本、API还有其他需要开发者“跑腿”的工作,仅仅是交付结果。
30.Precog——可以从各种数据源抓取输入数据。
31.RabbitMQ——一个受欢迎的消息代理,通常用于应用程序之间或者程序的不同组件之间通过消息来进行集成。
32.Spring for Apache Hadoop——使用了基于JVM的脚本,以及使用Hadoop或者相关的技术如Hive、HBase来进行开发应用程序。
33.StatsMix——对开发者使用的编程语言进行应用数据的搜集和分析,该服务可以自动追踪特定的指标。
34.StormMQ——MQMessageQueue消息队列产品,是一种服务程序。
35.Tachyon——一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存在tachyon里的文件。
36.Vertica——它的数据库使用标准的SQL查询,同时架构非常适合云计算,包括虚拟化,分布式多节点运行等,并且可以和Hadoop/MapReduce进行集成。
37.Wukong——配置和管理大数据环境的工具,基于Ruby的命令行界面,可编写大数据应用调用Data Delivery Service或Hadoop,语法简单,无需学习MapReduce或者Flume。
38.ZeroMQ——一个简单好用的传输层,像框架一样的一个socket library,它使得Socket编程更加简单、简洁和性能更高。
39.Zipkin(分布式跟踪系统)——Twitter 的一个开源项目,允许开发者收集 Twitter 各个服务上的监控数据,并提供查询接口。
40.ZooKeeper——一个分布式的、开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件。
from: http://blog.csdn.net/masibuaa/article/details/8121068
from numpy import*
import matplot.pyplot as plt
import time
def sigmoid(inX):
return 1.0/(1+exp(-inX))
def trainLogRegres(train_x,train_y,opts):
startTime = time.time()
numsamples,numFeatures = shape(train_x)
alpha = opts['alpha'];maxIter = opts[maxIter]
weights = ones(numFeatures,1)
)
for k in range(maxIter):
if opts['optimizeType']=='gradDescent':
output = sigmoid(train_x*weights)
error=train_y - output
weights = weights+alpha*train_x.transpose()*error
elif opts['optimizeType']=='stocGradDescent':
for i in range(numSamples):
output = sigmoid(train_x[i,:]*weights)
error = train_y[i,0] - output
weights = weights + alpha *train_x[i,:].transpouse()*error
elif opts['optimizerType']=='smoothStocGardDescent':
dataIndex = range(numSamples)
for i in range(nunSamples):
alpha = 4.0 / (1.0+k+i)+0.01
randIndex = int(random.unifom(0,len(dataIndex)))
output = sigmoid(train_x[randIndex,:]*weights)
error = train_y[i,0]-output
weight = weight + alpha * train_x[i,:].transpos()*error
elif opts['optimizeType'] =='smoothStocGradDescent':
dataIndex = range(numSamples)
for i in range(numSample):
alpha = 4.0 / (1.0+k+i)+0.01
randIndex = range(random.unifom(0,len(dataIndex)))
output = sigmoid(train_x[randIndex,:]*weights)
error = train_y[randIndex,0] - output
weight = weight + alpha*train_x[randIndex,:]transpose()*error
del(dataIndex[randIndex])
else:
raise NameError('Not support optimize method type!')
print'Congratulations,training complete! took %fs!'%(time.time()-startTime)
return weights
def showlogRegres(weights,train_x,train_y):
numsample, numFeatures = shape(teain_x)
if numFeatures ! = 3:
print "sorry! I can not draw because the dimension of your data is not 2!"
return 1
for i in xrange(numamples):
if int (train_y[i,0])==0:
plt.plot(train_x[i,1],train_x[i,2],'or')
elif int(train_y[i,0]) ==1:
plt.plot(train_x[i,i],train_x[i,2],'ob')
min_x = min(train_x[:,1])[0,0]
max_x = max(train_X[:,1])[0,0]
weights = weights.getA()
y_min_xfloat(-weight[0]-weights[1]*min_x)/weight[2]
y_max_x= flat(-weight[0]-weight[1]*max_x)/weights[2]
plt.plot([min_x,max_x],[y_min_x,y_max_x],'-g')
plt.xlabel('X1');
plt.ylabel.('x2')
plt.show()
.