《Spark机器学习》通读
title: 《Spark机器学习》通读
date: 2019-09-18 17:20:35
categories:
- 技术
tags: - 整理
最近,花了三天时间通读了Nick Pentreath的著作《Spark机器学习》。醍醐灌顶,有酣畅淋漓之感,记录、梳理该书的核心内容,避免以后自己遗忘。
因为我是做软件工程出身,擅长应用开发、功能实现。对于机器学习算法理解还在学习、加深阶段,该书最大的优点是,实践性很强,每段代码都可以运行(排除极个别代码疏忽错误);不足之处在于理论讲解不够深入。
在郑捷的《机器学习-算法原理与编程实践》一书中,说到,“基础决定高度”,我也非常认可这句话。但是,如果没有高度,从我的角度而言,不知道从哪里夯实基础,况且单纯的数学公式推导过于枯燥,没有成就感,很容易磨灭兴趣。所以我先“不求甚解”,把机器学习的算法先应用起来,把“代码”跑起来,看看效果,再一层层刨根问底。
第一章 环境搭建
主要介绍 Spark环境搭建,略。
第二章&第三章 数据准备工作&特征介绍
个性化与推荐的联系
推荐是个性化的一种,推荐通常是显式呈现内容,而个性化偏向隐形,比如搜索等场景。
机器学习模型的种类
监督学习
已标记的数据来学习。
无监督学习
学习过程不需要标记。
机器学习系统组成
用户行为 -> 数据收集 -> 数据清理与转化 -> (模型训练 -> 模型测试 )-> 模型部署与整合 -> 推荐给用户。
其中,模型训练 -> 模型测试,可以迭代多次。
注意:在模型部署与整合后,同时监控模型准确度相关指标和业务指标。
特征
- 数值特征
- 类别特征
- 名义变量,如 职业:程序员、律师
- 有序变量,有内在联系。如级别评价,一星,二星。
- 文本特征
- 词袋(分词->删除停用词->提取词干->向量化)
- 其他特征 如图像、音频、地理位置等
- 派生特征
- 可以把时间,按区间转变为 清晨、上午、中午等类别特征。
特征的正则化
正则转化(减去均值)和标准化(缩放到0-1)
第四章 推荐引擎
推荐模型的分类
基于内容的过滤
- 利用物品内容or用户的相似度进行推荐
协同过滤
- “众包只会”的体现。
- 根据相似用户的喜好计算各个物品的评分,推荐给该用户。
矩阵分解
显示矩阵分解
用户因子矩阵(U,K) 和 物品因子矩阵 (K,I )的点积来表示 评级矩阵(U,I)
隐式矩阵分解
最小二乘法(ALS)
固定用户因子矩阵or物品因子矩阵,用固定的矩阵和评级更新另一个矩阵。
之后,将被更新的矩阵固定,更新另一个。
迭代上述步骤,直至模型收敛。
推荐模型效果的评估
- 均方差(MSE):各平方误差的和与总数目的商。
- 均方根误差(RMSE):对于·MSE取平方根。
- K值平均准确率(MAPK):前K个结果与实际相关的结果进行比较。
第五章 分类模型
分类模型的种类
线性模型
逻辑回归(sigmod):损失函数式逻辑损失。
线性支持向量机(SVM):损失函数为合页损失。
最大间隔分类器,试图训练一个使得类别尽可能分开的权重向量。
决策树
每一步骤中评估特征分裂的信息增益,最后选择分割数据集最优的特征。
信息增益通过计算节点不纯度减去分割后的两个子节点不纯度的加权和。
评估方法:基尼不纯 和 熵
适用于集成方法,多个决策树,成为决策树森林。
朴素贝叶斯模型
假设: 每个特征分配到某个类别的概率是独立分布的。
基于假设,属于某个类别的概率表示为若干概率乘积的函数,其中这些概率包括某个特征在给定某个类别条件下出现的概率(条件概率),以及该类别的概率(先验概率)。
评估分类模型的性能
预测的正确率和错误率
训练样中被正确分类的数目除以总样本数 为 正确率。
反之,为错误率。
准确率与召回率
准确率
真阳性的数目除以真阳性和假阳性的总数。
真阳性:被正确预测的类别为1的样本。
假阳性:被错误预测为类别为1的样本。
召回率(与准确率是负相关)
真阳性的数目除以真阳性与假阳性的和
假阴性:别错误预测为0的样本。
准确率-召回率(召回率为x)的曲线(PR)
ROC曲线与AUC
真阳性率(TPR)
真阳性的样本数除以真阳性和假阳性样本数之和。
假阳性率(FPR)
假阳性的样本数厨艺假阳性和真阳性的样本数之和。
ROC是真阳性率与假阴性率的图形化解释。
ROC下的面积为AUC。
第六章 回归模型
回归模型的种类
线性模型(最小二乘回归)
损失函数为平方损失
正则化
L1正则化LASSO;L2正则化为岭回归。
决策树模型
第七章 聚类模型
聚类模型的类型
K-均值聚类
- 模糊K-均值
混合模型
模糊K-均值的扩展,混合模型假设样本的数据是由某种概率分布产生的。
层次聚类
- 凝聚聚类
- 分裂式聚类
评估聚类模型的性能
内部评价指标
- WCSS
- Davies-Bouldin指数
- Dunn指数
- 轮廓系数
外部评价指标
使用带标注的数据进行评估
- Rand measure
- F-measure
- 雅卡尔系数(Jarcard index)
第八章 数据降维
降维方法从一个D维的数据输入提取出K维表示,K一般远远小于D。
被抽取的维度表示应该仍能捕捉大部分原始数据的变化和结构。
目的:缩减维度可以排除数据中的噪音并保留数据原有的隐含结构。
降维方法的种类
- PCA(主成分分析)
- SVD(奇异值分解)
- 聚类方法也可以用来降维
第九章 高级文本处理技术
特征抽取
- 短语加强表示
- 词袋模型
- 词频-逆文本频率(TF-IDF)
- 特征哈希
- Word2Vec分布向量表示
第十章 Spark Stream 实时机器学习
- 流处理
- 输入源
- 转换
- 执行算子
- 窗口算子
- 缓存与容错
- 应用创建&在线学习
后记:
整理过程中,发现该书已经发布第二版,果断下单。
《Spark机器学习》通读相关推荐
- 基于大数据的Uber数据实时监控(Part 1:Spark机器学习)
导言 据Gartner称:到2020年,25亿辆联网汽车将成为物联网的主要对象.联网车辆预计每小时可以生成25GB的数据,对这些数据进行分析实现实时监控.大数据目前是10个主要领域之一,利用它可以使城 ...
- 用Spark机器学习数据流水线进行广告检测
在这篇文章中,我们Spark的其它机器学习API,名为Spark ML,如果要用数据流水线来开发大数据应用程序的话,这个是推荐的解决方案.关键点: 了解机器学习数据流水线有关内容. 怎么用Apache ...
- Spark机器学习9· 实时机器学习(scala with sbt)
Spark机器学习 1 在线学习 模型随着接收的新消息,不断更新自己:而不是像离线训练一次次重新训练. 2 Spark Streaming 离散化流(DStream) 输入源:Akka actors. ...
- Apache Spark机器学习.1.7 机器学习工作流示例
1.7 机器学习工作流示例 为了进一步了解学习机器学习的工作流,在这里让我们学习一些例子. 本书后续章节会研究风险建模.欺诈检测.客户视图.流失预测和产品推荐.对于诸如此类的项目,目标往往是确定某些问 ...
- Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API
Spark机器学习MLlib系列1(for python)--数据类型,向量,分布式矩阵,API 关键词:Local vector,Labeled point,Local matrix,Distrib ...
- Spark机器学习库(MLlib)指南
spark-1.6.1 机器学习库(MLlib)指南 MLlib是Spark的机器学习(ML)库.旨在简化机器学习的工程实践工作,并方便扩展到更大规模.MLlib由一些通用的学习算法和工具组成,包括分 ...
- Spark机器学习实战 (十二) - 推荐系统实战
0 相关源码 将结合前述知识进行综合实战,以达到所学即所用.在推荐系统项目中,讲解了推荐系统基本原理以及实现推荐系统的架构思路,有其他相关研发经验基础的同学可以结合以往的经验,实现自己的推荐系统. 1 ...
- Spark 机器学习中的线性代数库
文章目录 1. DenseVector.SparseVector 2. DenseMatrix 3. SparseMatrix 4. Vector 运算 5. 矩阵运算 6. RowMatrix 7. ...
- Spark机器学习之协同过滤算法
Spark机器学习之协同过滤算法 一).协同过滤 1.1 概念 协同过滤是一种借助"集体计算"的途径.它利用大量已有的用户偏好来估计用户对其未接触过的物品的喜好程度.其内在思想是相 ...
最新文章
- 英飞凌AI电磁越野组浅析
- CSS导航条菜单:带小三角形
- 机器学习实战之SVM
- python读取sql_从python读取sql的实例方法
- 特征工程之特征缩放特征编码
- linux内核笔记-内核同步
- 根据端口不同来切换站点_根据不同高温气体对窑炉的侵蚀,来选用相应的耐火材料...
- Spring-jdbc-ConnectionHolder
- 史上最简单的 SpringCloud 教程
- 2016 网易校招内推C/C++第二场8.6
- 深入解读Docker底层技术cgroup系列(总览)
- CodeForces914 D.Bash and a Tough Math Puzzle(线段树)
- java简历项目经验大全(java商城项目经验简历)
- matlab实现双线性插值,使用双线性插值法放大图像(matlab实现)
- (NCRE网络技术)网络系统结构与设计的基本原则-知识点
- Springboot科学养宠 omap1计算机毕业设计-课程设计-期末作业-毕设程序代做
- 共振峰估计实验MATLAB
- 深入探究JVM(1) - Java的内存区域解析
- ios - 百度地图和高德地图坐标的区别
- 【泛函分析MOOC笔记】(一)拓扑和拓扑空间
热门文章
- 百度网盘加速无限试用_百度网盘临时加速正式上线,最低 2 元
- input 起止时间_几种常用的控件(下拉框 可选框 起止日期 在HTML页面直接读取当前时间)...
- linux怎么静态改为自动获取,Linux系统下设置静态IP或自动获取动态IP的简单方法...
- Java Web实现 使用浏览器从服务器下载文件
- 爱奇艺校招map优先队列笔试题字符串的价值
- mysql更改密码后需要重启吗,mysql忘记密码真的需要重启服务吗?
- simulia助力,柔性屏时代即将到来
- 四舍六入五成双(C语言版)
- 怎样将多个韵达快运单号物流中含有问题件的单号归类
- 单招考计算机一般考什么科目,单招考试考什么内容 单招都考什么科目