给定一个数据集,数据分析师一般会先观察一下数据集的基本情况,称之为汇总统计或者概要性统计.一般的概要性统计用于概括一系列观测值,包括位置或集中趋势(比如算术平均值.中位数.众数和四分位均值),展型(比如四分位间距.绝对偏差和绝对距离偏差.各阶矩等),统计离差,分布的形状,依赖性等.除此之外,spark.mllib库也提供了一些其他的基本的统计分析工具,包括相关性.分层抽样.假设检验,随机数生成等. 一.概括统计 summary statistics 我们通过统计学中提供的函数colStats…
  一.什么是机器学习 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能.它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳.综合而不是演绎.一种经常引用的英文定义是: A computer program is said to learn from exp…
    一.概念 “词频-逆向文件频率”(TF-IDF)是一种在文本挖掘中广泛使用的特征向量化方法,它可以体现一个文档中词语在语料库中的重要程度. 词语由t表示,文档由d表示,语料库由D表示.词频TF(t,d)是词语t在文档d中出现的次数.文件频率DF(t,D)是包含词语的文档的个数.如果我们只使用词频来衡量重要性,很容易过度强调在文档中经常出现,却没有太多实际信息的词语,比如“a”,“the”以及“of”.如果一个词语经常出现在语料库中,意味着它并不能很好的对文档进行区分.TF-IDF就是在数…
  一.原理 在机器学习处理过程中,为了方便相关算法的实现,经常需要把标签数据(一般是字符串)转化成整数索引,或是在计算结束后将整数索引还原为相应的标签. Spark ML 包中提供了几个相关的转换器: StringIndexer,IndexToString,OneHotEncoder,VectorIndexer,他们提供了十分方便的特征转换功能,这些转换器都位于org.apache.spark.ml.feature包下. 值得注意的是,用于特征转换的转换器和其他的机器学习算法一样,也属于Ml…
  一.公式 卡方检验的基本公式,也就是χ2的计算公式,即观察值和理论值之间的偏差   卡方检验公式 其中:A 为观察值,E为理论值,k为观察值的个数,最后一个式子实际上就是具体计算的方法了 n 为总的频数,p为理论频率,那么n*p自然就是理论频数(理论值) 二.相关概念 卡方分布:可以看出当观察值和理论值十分接近的时候,也就是我们做的假设是正确的时候,χ2的值就越趋近于0,也就是说我们计算的偏差越小,那么假设值就越可能是对的,反之偏差值越大,假设值就越不准确.那么到底多大才算不准确,有没有个衡…
    一.概念 一个典型的机器学习过程从数据收集开始,要经历多个步骤,才能得到需要的输出.这非常类似于流水线式工作,即通常会包含源数据ETL(抽取.转化.加载),数据预处理,指标提取,模型训练与交叉验证,新数据预测等步骤. MLlib标准化了用于机器学习算法的API,从而使将多种算法组合到单个管道或工作流程中变得更加容易. 本节介绍了Pipelines API引入的关键概念,其中PipeLine(管道)概念主要受scikit-learn项目的启发. 在介绍工作流之前,我们先来了解几个重要概念:…
  降维(Dimensionality Reduction) 是机器学习中的一种重要的特征处理手段,它可以减少计算过程中考虑到的随机变量(即特征)的个数,其被广泛应用于各种机器学习问题中,用于消除噪声.对抗数据稀疏问题.它在尽可能维持原始数据的内在结构的前提下,得到一组描述原数据的,低维度的隐式特征(或称主要特征).简单来说,在高维数据中筛选出对我们有用的变量,减小计算复杂度提高模型训练效率和准确率,这就是我们要说的降维. MLlib机器学习库提供了两个常用的降维方法:奇异值分解(Singula…
  一.概念 决策树及其集合是分类和回归的机器学习任务的流行方法. 决策树被广泛使用,因为它们易于解释,处理分类特征,扩展到多类分类设置,不需要特征缩放,并且能够捕获非线性和特征交互. 诸如随机森林和增强的树集合算法是分类和回归任务的最佳表现者. 决策树(decision tree)是一种基本的分类与回归方法,这里主要介绍用于分类的决策树.决策树模式呈树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别.学习时利用训练数据,根据损失函数最小化的原则建立…
    MLlib支持存储在单个机器上的局部向量和矩阵,以及由一个或多个RDD支持的分布式矩阵. 局部向量和局部矩阵是用作公共接口的简单数据模型. 底层线性代数操作由Breeze提供. 在监督学习中使用的训练示例在MLlib中称为“标记点”. 一.本地向量 局部向量具有整数类型和基于0的索引和双类型值,存储在单个机器上. MLlib支持两种类型的局部向量:密集和稀疏. 密集向量由表示其条目值的双数组支持,而稀疏向量由两个并行数组支持:索引和值. 例如,矢量(1.0,0.0,3.0)可以以密集格式…
  一.概念 Word2vec是一个Estimator,它采用一系列代表文档的词语来训练word2vecmodel.该模型将每个词语映射到一个固定大小的向量.word2vecmodel使用文档中每个词语的平均数来将文档转换为向量,然后这个向量可以作为预测的特征,来计算文档相似度计算等等. 二.代码实现 2.1.引包,获取spark 首先,我们引入相关包: import java.util.Arrays; import java.util.List; import org.apache.spark…
    一.概念 CountVectorizer 旨在通过计数来将一个文档转换为向量.当不存在先验字典时,Countvectorizer作为Estimator提取词汇进行训练,并生成一个CountVectorizerModel用于存储相应的词汇向量空间.该模型产生文档关于词语的稀疏表示,其表示可以传递给其他算法,例如LDA( Latent Dirichlet Allocation 隐含狄利克雷分布). 在CountVectorizerModel的训练过程中,CountVectorizer将根据语…
  一.概念 1.1.定义 按照某一个特定的标准(比如距离),把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不再同一个簇内的数据对象的差异性也尽可能的大. 聚类属于典型的无监督学习(Unsupervised Learning) 方法.与监督学习(如分类器)相比,无监督学习的训练集没有人为标注的结果.在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构. 1.2.主要方法 层次聚类(Hierarchical Clustering):合并法.分…
  一.概念 协同过滤算法主要分为基于用户的协同过滤算法和基于项目的协同过滤算法.   基于用户的协同过滤算法和基于项目的协同过滤算法 1.1.以用户为基础(User-based)的协同过滤 用相似统计的方法得到具有相似爱好或者兴趣的相邻用户,所以称之为以用户为基础(User-based)的协同过滤或基于邻居的协同过滤(Neighbor-based Collaborative Filtering). 具体步骤为: 1.收集用户信息收集可以代表用户兴趣的信息.一般的网站系统使用评分的方式或是给予评…
  PCA 一.概念 主成分分析(Principal Component Analysis)是指将多个变量通过线性变换以选出较少数重要变量的一种多元统计分析方法,又称为主成分分析.在实际应用场合中,为了全面分析问题,往往提出很多与此有关的变量(或因素),因为每个变量都在不同程度上反映这个应用场合的某些信息. 主成分分析是设法将原来众多具有一定相关性(比如N个指标)的指标,重新组合成一组新的相互无关的综合指标来代替原来的指标,从而实现数据降维的目的,这也是MLlib的处理手段之一. 二.代码实现…
    分类 分类旨在将项目分为不同类别. 最常见的分类类型是二元分类,其中有两类,通常分别为正数和负数. 如果有两个以上的类别,则称为多类分类. spark.mllib支持两种线性分类方法:线性支持向量机(SVM)和逻辑回归. 线性SVM仅支持二进制分类,而逻辑回归支持二进制和多类分类问题. 对于这两种方法,spark.mllib支持L1和L2正则化变体. 训练数据集由MLlib中LabeledPoint的RDD表示,其中标签是从零开始的类索引:0,1,2,.... 一.基本思想 统计学习理论…
  逻辑斯蒂回归 一.概念 逻辑斯蒂回归(logistic regression)是统计学习中的经典分类方法,属于对数线性模型.logistic回归的因变量可以是二分类的,也可以是多分类的.logistic回归的因变量可以是二分非线性差分方程类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释.所以实际中最为常用的就是二分类的logistic回归. 二.logistic分布 设X是连续随机变量,X服从逻辑斯蒂分布是指X具有下列分布函数和密度函数:   分布函数和密度函数 式中,μ为位置参…
Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors.消息队列.Flume.Kafka.-- http://spark.apache.org/docs/latest/streaming-programming-guide.html 类群(lineage):应用到RDD上的转换算子和执行算子的集合 3 MLib+Streaming应用 3.0 build…
Spark机器学习 Day1 机器学习概述 今天主要讨论个问题:Spark机器学习的本质是什么,其内部构成到底是什么. 简单来说,机器学习是数据+算法. 数据 在Spark中做机器学习,肯定有数据来源,在Spark的最底层肯定是RDD封装,这个和Spark具体是什么版本没有任何关系,版本发展只不过是提供了更多高层的API而已,例如DataFrame.Dataset等,而之所以有DataFrame.Dataset,一般情况下是为了使用统一的优化引擎(抽象程度越高,优化算法和空间越大). RDD有一…
Spark机器学习库现支持两种接口的API:RDD-based和DataFrame-based,Spark官方网站上说,RDD-based APIs在2.0后进入维护模式,主要的机器学习API是spark-ml包中的DataFrame-based API,并将在3.0后完全移除RDD-based API. 在学习了两周Spark MLlib后,准备转向DataFrame-based接口.由于现有的文档资料均是RDD-based接口,于是便去看了看Spark MLlib的源码.DataFrame-…
Spark机器学习之协同过滤算法 一).协同过滤 1.1 概念 协同过滤是一种借助"集体计算"的途径.它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度.其内在思想是相似度的定义 1.2 分类 1.在基于用户的方法的中,如果两个用户表现出相似的偏好(即对相同物品的偏好大体相同),那就认为他们的兴趣类似.要对他们中的一个用户推荐一个未知物品, 便可选取若干与其类似的用户并根据他们的喜好计算出对各个物品的综合得分,再以得分来推荐物品.其整体的逻辑是,如果其他用户也偏好某些物品,…
Spark 概述 Apache Spark 是一个快速的, 多用途的集群计算系统. 它提供了 Java, Scala, Python 和 R 的高级 API,以及一个支持通用的执行图计算的优化过的引擎. 它还支持一组丰富的高级工具, 包括使用 SQL 处理结构化数据处理的 Spark SQL, 用于机器学习的 MLlib, 用于图形处理的 GraphX, 以及 Spark Streaming. 下载 从该项目官网的 下载页面 获取 Spark. 该文档用于 Spark 2.2.0 版本. Spa…
Spark Streaming 编程指南 概述 一个入门示例 基础概念 依赖 初始化 StreamingContext Discretized Streams (DStreams)(离散化流) Input DStreams 和 Receivers(接收器) DStreams 上的 Transformations(转换) DStreams 上的输出操作 DataFrame 和 SQL 操作 MLlib 操作 缓存 / 持久性 Checkpointing Accumulators, Broadcas…
SparkR (R on Spark) 概述 SparkDataFrame 启动: SparkSession 从 RStudio 来启动 创建 SparkDataFrames 从本地的 data frames 来创建 SparkDataFrames 从 Data Sources(数据源)创建 SparkDataFrame 从 Hive tables 来创建 SparkDataFrame SparkDataFrame 操作 Selecting rows(行), columns(列) Groupin…
监督学习 0.线性回归(加L1.L2正则化) from __future__ import print_function from pyspark.ml.regression import LinearRegression from pyspark.sql import SparkSession spark = SparkSession\ .builder\ .appName("LinearRegressionWithElasticNet")\ .getOrCreate() # 加载数…
这个版本是 Structured Streaming 的一个重要里程碑,因为其终于可以正式在生产环境中使用,实验标签(experimental tag)已经被移除.在流系统中支持对任意状态进行操作:Apache Kafka 0.10 的 streaming 和 batch API支持读和写操作.除了在 SparkR, MLlib 和 GraphX 里面添加新功能外,该版本更多的工作在系统的可用性(usability).稳定性(stability)以及代码的润色(polish)并解决了超过 110…
Spark机器学习 自然语言处理(NLP,Natural Language Processing) 提取特征 建模 机器学习 TF-IDF(词频 term frequency–逆向文件频率 inverse document frequency) 短语加权:根据词频,为单词赋予权值 特征哈希:使用哈希方程对特征赋予向量下标 0 运行环境 tar xfvz 20news-bydate.tar.gz export SPARK_HOME=/Users/erichan/Garden/spark-1.5.1…
PCA(主成分分析法,Principal Components Analysis) SVD(奇异值分解法,Singular Value Decomposition) http://vis-www.cs.umass.edu/lfw/lfw-a.tgz 0 运行环境 export SPARK_HOME=/Users/erichan/Garden/spark-1.5.1-bin-hadoop2.6 cd $SPARK_HOME bin/spark-shell --name my_mlib --pack…
K-均值(K-mean)聚类 目的:最小化所有类簇中的方差之和 类簇内方差和(WCSS,within cluster sum of squared errors) fuzzy K-means 层次聚类(hierarchical culstering) 凝聚聚类(agglomerative clustering) 分列式聚类(divisive clustering) 0 运行环境 cd $SPARK_HOME bin/spark-shell --name my_mlib --packages or…
分类模型的预测目标是:类别编号 回归模型的预测目标是:实数变量 回归模型种类 线性模型 最小二乘回归模型 应用L2正则化时--岭回归(ridge regression) 应用L1正则化时--LASSO(Least Absolute Shrinkage and Selection Operator) 决策树 不纯度度量方法:方差 0 准备数据 archive.ics.uci.edu/ml/machine-learning-databases/00275/Bike-Sharing-Dataset.z…
Spark机器学习 准备环境 jblashttps://gcc.gnu.org/wiki/GFortranBinaries#MacOS org.jblas:jblas:1.2.4-SNAPSHOT git clone https://github.com/mikiobraun/jblas.git cd jblas mvn install 运行环境 cd /Users/erichan/Garden/spark-1.5.1-bin-cdh4 bin/spark-shell --name my_mli…