2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Spark 大数据处理系列之 Machine Learning

  • 2016-06-06
  • 本文字数:3262 字

    阅读完需:约 11 分钟

写在之前:

本文是《Spark 大数据处理》系列的第四篇,其他三篇: Spark 介绍 Saprk SQL Spark Streaming

最近几年,机器学习、预测分析和数据科学主题得到了广泛的关注。Spark 的机器学习库(Spark MLlib),包括各种机器学习算法:协同过滤算法、聚类算法、分类算法和其他算法。

在前面的《Spark 大数据处理》系列文章,介绍 Apache Spark 框架,介绍如何使用 Spark SQL 库的 SQL 接口去访问数据,使用 Spark Streaming 进行实时流式数据处理和分析。

在本篇文章,作者将讨论机器学习概念以及如何使用 Spark MLlib 来进行预测分析。后面将会使用一个例子展示 Spark MLlib 在机器学习领域的强悍。

Spark 机器学习 API 包含两个 package:spark.mllib 和 spark.ml。
spark.mllib 包含基于弹性数据集(RDD)的原始 Spark 机器学习 API。它提供的机器学习技术有:相关性、分类和回归、协同过滤、聚类和数据降维。

spark.ml 提供建立在 DataFrame 的机器学习 API,DataFrame 是 Spark SQL 的核心部分。这个包提供开发和管理机器学习管道的功能,可以用来进行特征提取、转换、选择器和机器学习算法,比如分类和回归和聚类。

本篇文章聚焦在 Spark MLlib 上,并讨论各个机器学习算法。下篇文章将讲述 Spark ML 以及如何创建和管理数据管道。

机器学习和数据科学

机器学习是从已经存在的数据进行学习来对将来进行数据预测,它是基于输入数据集创建模型做数据驱动决策。

数据科学是从海里数据集(结构化和非结构化数据)中抽取知识,为商业团队提供数据洞察以及影响商业决策和路线图。数据科学家的地位比以前用传统数值方法解决问题的人要重要。

以下是几类机器学习模型:

  • 监督学习模型
  • 非监督学习模型
  • 半监督学习模型
  • 增强学习模型

下面简单的了解下各机器学习模型,并进行比较:

  • 监督学习模型:监督学习模型对已标记的训练数据集训练出结果,然后对未标记的数据集进行预测;
    监督学习又包含两个子模型:回归模型和分类模型。
  • 非监督学习模型:非监督学习模型是用来从原始数据(无训练数据)中找到隐藏的模式或者关系,因而非监督学习模型是基于未标记数据集的;
  • 半监督学习模型:半监督学习模型用在监督和非监督机器学习中做预测分析,其既有标记数据又有未标记数据。典型的场景是混合少量标记数据和大量未标记数据。半监督学习一般使用分类和回归的机器学习方法;
  • 增强学习模型:增强学习模型通过不同的行为来寻找目标回报函数最大化。

下面给各个机器学习模型举个列子:

  • 监督学习:异常监测;
  • 非监督学习:社交网络,语言预测;
  • 半监督学习:图像分类、语音识别;
  • 增强学习:人工智能(AI)。

机器学习项目步骤

开发机器学习项目时,数据预处理、清洗和分析的工作是非常重要的,与解决业务问题的实际的学习模型和算法一样重要。
典型的机器学习解决方案的一般步骤:

  • 特征工程
  • 模型训练
  • 模型评估

图 1

原始数据如果不能清洗或者预处理,则会造成最终的结果不准确或者不可用,甚至丢失重要的细节。

训练数据的质量对最终的预测结果非常重要,如果训练数据不够随机,得出的结果模型不精确;如果数据量太小,机器学习出的模型也不准确。

使用案例:
业务使用案例分布于各个领域,包括个性化推荐引擎(食品推荐引擎),数据预测分析(股价预测或者预测航班延迟),广告,异常监测,图像和视频模型识别,以及其他各类人工智能。
接着来看两个比较流行的机器学习应用:个性化推荐引擎和异常监测。

推荐引擎

个性化推荐引擎使用商品属性和用户行为来进行预测。推荐引擎一般有两种算法实现:基于内容过滤和协同过滤。
协调过滤的解决方案比其他算法要好,Spark MLlib 实现了 ALS 协同过滤算法。Spark MLlib 的协同过滤有两种形式:显式反馈和隐试反馈。显式反馈是基于用户购买的商品(比如,电影),显式反馈虽好,但很多情况下会出现数据倾斜;隐试反馈是基于用户的行为数据,比如,浏览、点击、喜欢等行为。隐试反馈现在大规模应用在工业上进行数据预测分析,因为其很容易收集各类数据。
另外有基于模型的方法实现推荐引擎,这里暂且略过。

异常监测

异常监测是机器学习中另外一个应用非常广泛的技术,因为其可以快速和准确地解决金融行业的棘手问题。金融服务业需要在几百毫秒内判断出一笔在线交易是否非法。
神经网络技术被用来进行销售点的异常监测。比如像 PayPal 等公司使用不同的机器学习算法(比如,线性回归,神经网络和深度学习)来进行风险管理。

Spark MLlib 库提供给了几个实现的算法,比如,线性 SVM、逻辑回归、决策树和贝叶斯算法。另外,一些集成模型,比如随机森林和 gradient-boosting 树。
那么现在开始我们的使用 Apache Spark 框架进行机器学习之旅。

Spark MLlib

Spark MLlib 实现的机器学习库使得机器学习模型可扩展和易使用,包括分类算法、回归算法、聚类算法、协同过滤算法、降维算法,并提供了相应的 API。除了这些算法外,Spark MLlib 还提供了各种数据处理功能和数据分析工具为大家使用:

  • 通过 FP-growth 算法进行频繁项集挖掘和关联分析;
  • 通过 PrefixSpan 算法进行序列模式挖掘;
  • 提供概括性统计和假设检验;
  • 提供特征转换;
  • 机器学习模型评估和超参数调优。

图 2 展示 Spark 生态
Spark MLlib API 支持 Scala,Java 和 Python 编程。

Spark MLlib 应用实践

使用 Spark MLlib 实现推荐引擎。推荐引擎最佳实践是基于已知用户的商品行为而去预测用户可能感兴趣的未知商品。推荐引擎基于已知数据(也即,训练数据)训练出预测模型。然后利用训练好的预测模型来预测。
最佳电影推荐引擎的实现有下面几步:

  • 加载电影数据;
  • 加载你指定的评价数据;
  • 加载社区提供的评价数据;
  • 将评价数据 join 成单个 RDD;
  • 使用 ALS 算法训练模型;
  • 确认指定用户(userId = 1)未评价的电影;
  • 预测未被用户评价的电影的评价;
  • 获取 Top N 的推荐(这里 N= 5);
  • 在终端显示推荐结果。

如果你想对输出的数据做进一步分析,你可以把预测的结果存储到 Cassandra 或者 MongoDB 等数据库。

使用到的技术

这里采用 Java 开发 Spark MLlib 程序,并在 stand-alone 模型下执行。使用到的 MLlib Java 类:org.apache.spark.mllib.recommendation。

  • ALS
  • MatrixFactorizationModel
  • Rating

图 3 Spark 机器学习的例子程序架构

程序执行:
开发好的程序进行打包,设置环境变量:JDK (JAVA_HOME), Maven (MAVEN_HOME) 和 Spark (SPARK_HOME)。
在 Windows 环境中:

复制代码
set JAVA_HOME=[JDK_INSTALL_DIRECTORY]
set PATH=%PATH%;%JAVA_HOME%\bin
set MAVEN_HOME=[MAVEN_INSTALL_DIRECTORY]
set PATH=%PATH%;%MAVEN_HOME%\bin
set SPARK_HOME=[SPARK_INSTALL_DIRECTORY]
set PATH=%PATH%;%SPARK_HOME%\bin
cd c:\dev\projects\spark-mllib-sample-app
mvn clean install
mvn eclipse:clean eclipse:eclipse

在 Linux 或者 MAC 系统中;

复制代码
export JAVA_HOME=[JDK_INSTALL_DIRECTORY]
export PATH=$PATH:$JAVA_HOME/bin
export MAVEN_HOME=[MAVEN_INSTALL_DIRECTORY]
export PATH=$PATH:$MAVEN_HOME/bin
export SPARK_HOME=[SPARK_INSTALL_DIRECTORY]
export PATH=$PATH:$SPARK_HOME/bin
cd /Users/USER_NAME/spark-mllib-sample-app
mvn clean install
mvn eclipse:clean eclipse:eclipse

运行 Spark 程序,命令如下:
在 Windows 环境下:

复制代码
%SPARK_HOME%\bin\spark-submit --class "org.apache.spark.examples.mllib.JavaRecommendationExample" --master local[*] target\spark-mllib-sample-1.0.jar

在 Linux 或者 MAC 环境下:

复制代码
$SPARK_HOME/bin/spark-submit --class "org.apache.spark.examples.mllib.JavaRecommendationExample" --master local[*] target/spark-mllib-sample-1.0.jar

Spark MLlib 应用监控

使用 Spark 的 web 控制台可以进行监控程序运行状态。这里只给出程序运行的有向无环图(DAG):

图 4 DAG 的可视化

结论

Spark MLlib 是 Spark 实现的机器学习库中的一种,经常用来做业务数据的预测分析,比如个性化推荐引擎和异常监测系统。

作者信息:侠天,专注于大数据、机器学习和数学相关的内容,并有个人公众号:bigdata_ny 分享相关技术文章。

查看英文原文: Big Data Processing with Apache Spark - Part 4: Spark Machine Learning

2016-06-06 19:0812090
用户头像

发布了 43 篇内容, 共 30.0 次阅读, 收获喜欢 7 次。

关注

评论

发布
暂无评论
发现更多内容

Larix真正的去中心化借贷平台,并开启double Mining活动

鳄鱼视界

数据库每日一题---第18天:每天的领导和合伙人

知心宝贝

数据库 大数据 前端 后端 6月月更

2022华为全球校园AI算法精英大赛即将升级启航,等你来战,开拓未来边界

最新动态

云上弹性高性能计算,支持生命科学产业高速发展、降本增效

阿里云弹性计算

HPC 高性能计算 生命科学 药物设计

对讲功能在远程办公中的应用 | 社区征文

Changing Lin

初夏征文

链上智能合约Dapp系统开发部署搭建

薇電13242772558

区块链 智能合约

LP流动性质押挖矿分红dapp系统开发合约定制

开发微hkkf5566

覆盖接入2w+交通监测设备,EMQ为深圳市打造交通全要素数字化新引擎

EMQ映云科技

物联网 IoT 智慧交通 实践案例 6月月更

如何把企业内部碎片信息系统化?

小炮

毕业回馈!Apache Doris 社区所有贡献者来领礼品啦!

SelectDB

数据库 数据湖 开源项目 apache doris 社区活动

Android 修改系统音量及监听

yechaoa

android 6月月更 AudioManager

AIOps落地五大原则(二):价值路线

BizSeer必示科技

从华为WeAutomate数字机器人论坛,看政企领域的“政务新智理”

王吉伟频道

RPA 数字化转型 华为WeAutomate 政务新智理 数字政府

浅谈融云即时通讯服务「日志优化」

融云 RongCloud

喜讯!云效度量能力获信通院先进级评估

阿里云云效

云计算 阿里云 DevOps 研发效能 研发

统一日志

卢卡多多

日志 6月月更

攻防演练中红队的内网横向扩展

穿过生命散发芬芳

6月月更 攻防演练

解密抖音春节红包背后的技术设计与实践

JackJiang

架构设计 短视频 社交产品

vue导航路由

小恺

6月月更

前后端如何并行开发,云端mock了解一下

Liam

前端 前端开发 Mock Mock 服务 前端工具

携手腾竞体育后,英特尔IMC如何加速电竞生态正循环?

科技之家

百度安全再次亮相高性能计算国际顶会SC 2022 — 采用Fuzzing技术防护高性能计算静默数据损坏安全风险

百度安全

百度安全 百度安全实验室 高性能计算国际顶会 SC 2022 Fuzzing技术防护

一问带你彻底了解JVM-Java虚拟机内存区域详解

派大星

JVM

力扣每日一练之数组中篇Day2

京与旧铺

6月月更

flutter系列之:flutter中的builder

程序那些事

flutter 程序那些事 6月月更

稳住了,别抖!—— 看GetX 的Worker如何防抖

岛上码农

flutter ios 前端 安卓开发 6月月更

数据资产管理

奔向架构师

数据资产 数据管理 6月月更

A/B测试助力游戏业务增长

字节跳动数据平台

游戏开发 游戏 ab测试 游戏运营

客户案例|观测云助力合思信息升级新一代可观测平台

观测云

透过华为军团看科技之变(四):互动媒体(音乐)

脑极体

AWS的运营管理类服务

冯亮

云计算 AWS

Spark大数据处理系列之Machine Learning_数据库_Srini Penchikala_InfoQ精选文章