日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

机器学习_机器不学习:从Spark MLlib到美图机器学习框架实践

發(fā)布時(shí)間:2024/4/11 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习_机器不学习:从Spark MLlib到美图机器学习框架实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

/ 機(jī)器學(xué)習(xí)簡(jiǎn)介 /

在深入介紹 Spark MLlib 之前先了解機(jī)器學(xué)習(xí),根據(jù)維基百科的介紹,機(jī)器學(xué)習(xí)有下面幾種定義:

  • 機(jī)器學(xué)習(xí)是一門人工智能的科學(xué),該領(lǐng)域的主要研究對(duì)象是人工智能,特別是如何在經(jīng)驗(yàn)學(xué)習(xí)中改善具體算法性能
  • 機(jī)器學(xué)習(xí)是對(duì)能通過經(jīng)驗(yàn)自動(dòng)改進(jìn)的計(jì)算機(jī)算法的研究;
  • 機(jī)器學(xué)習(xí)是用數(shù)據(jù)或以往的經(jīng)驗(yàn),以此優(yōu)化計(jì)算機(jī)程序的性能標(biāo)準(zhǔn);
  • 一種經(jīng)常引用的英文定義是「A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.」。

*加粗的是重點(diǎn)/加粗的是重點(diǎn)/加粗的是重點(diǎn)

其實(shí)在「美圖數(shù)據(jù)技術(shù)團(tuán)隊(duì)」之前的科普文章貝葉斯概率模型一覽曾介紹過,機(jī)器學(xué)習(xí)狹義上是指代統(tǒng)計(jì)機(jī)器學(xué)習(xí),統(tǒng)計(jì)學(xué)習(xí)根據(jù)任務(wù)類型可以分為監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)、增強(qiáng)學(xué)習(xí)等。

機(jī)器學(xué)習(xí)常用的算法可以分為以下種類:

1.構(gòu)造間隔理論分布:人工神經(jīng)網(wǎng)絡(luò)、決策樹、感知器、支持向量機(jī)、集成學(xué)習(xí) AdaBoost、降維與度量學(xué)習(xí)、聚類、貝葉斯分類器;

2.構(gòu)造條件概率:高斯過程回歸、線性判別分析、最近鄰居法、徑向基函數(shù)核;

3.通過再生模型構(gòu)造概率密度函數(shù):最大期望算法、概率圖模型(貝葉斯網(wǎng)和 Markov 隨機(jī)場(chǎng))、Generative Topographic Mapping;

4.近似推斷技術(shù):馬爾可夫鏈、蒙特卡羅方法、變分法;

5.最優(yōu)化算法。

/ Spark MLlib /

在上文我們?cè)岬綑C(jī)器學(xué)習(xí)的重點(diǎn)之一是「經(jīng)驗(yàn)」,而對(duì)于計(jì)算機(jī)而言經(jīng)驗(yàn)往往需要經(jīng)過多輪迭代計(jì)算才能得到,而 Spark 擅長(zhǎng)迭代計(jì)算,正好符合機(jī)器學(xué)習(xí)這一特性。在 Spark 官網(wǎng)上展示了邏輯回歸算法在 Spark 和 Hadoop 上運(yùn)行性能比較,從下圖可以看出 MLlib 比 MapReduce 快了 100 倍。

Spark MLlib 主要包括以下幾方面的內(nèi)容:

  • 學(xué)習(xí)算法:分類、回歸、聚類和協(xié)同過濾;
  • 特征處理:特征提取、變換、降維和選擇;
  • 管道(Pipeline):用于構(gòu)建、評(píng)估和調(diào)整機(jī)器學(xué)習(xí)管道的工具;
  • 持久性:保存和加載算法,模型和管道;
  • 實(shí)用工具:線性代數(shù),統(tǒng)計(jì),最優(yōu)化,調(diào)參等工具。

上表總結(jié)了 Spark MLlib 支持的功能結(jié)構(gòu),可以看出它所提供的算法豐富,但算法種類較少并且老舊,因此 Spark MLlib 在算法上支持與 kylin 項(xiàng)目有些脫節(jié),它的主要功能更多是與特征相關(guān)的。

ML Pipelines

從 Spark 2.0 開始基于 RDD 的 API 進(jìn)入維護(hù)模式,Spark 的主要機(jī)器學(xué)習(xí) API 現(xiàn)在是基于 DataFrame 的 API spark.ml,借鑒 Scikit-Learn 的設(shè)計(jì)提供了 Pipeline 套件,以構(gòu)建機(jī)器學(xué)習(xí)工作流。 ML Pipelines 提供了一套基于 DataFrame 構(gòu)建的統(tǒng)一的高級(jí) API ,可幫助用戶創(chuàng)建和調(diào)整實(shí)用的機(jī)器學(xué)習(xí)流程。

*「Spark ML」不是官方名稱,偶爾用于指代基于 MLlib DataFrame 的 API

首先了解 ML Pipelines 內(nèi)幾個(gè)重要組件。

DataFrame

DataFrame 讓 Spark 具備了處理大規(guī)模結(jié)構(gòu)化數(shù)據(jù)的能力。

RDD 是分布式 Java 對(duì)象的集合,對(duì)象的內(nèi)部數(shù)據(jù)結(jié)構(gòu)對(duì)于 RDD 而言不可知。DataFrame 是一種以 RDD 為基礎(chǔ)的分布式數(shù)據(jù)集,RDD 中存儲(chǔ)了 Row 對(duì)象,Row 對(duì)象提供了詳細(xì)的結(jié)構(gòu)信息,即模式(schema),使得 DataFrame 具備了結(jié)構(gòu)化數(shù)據(jù)的能力。

Transforme

Transformer 通常是一個(gè)數(shù)據(jù)/特征變換的類,或一個(gè)訓(xùn)練好的模型。

每個(gè) Transformer 都有 transform 函數(shù),用于將一個(gè) DataFrame 轉(zhuǎn)換為另一個(gè) DataFrame 。一般 transform 的過程是在輸入的 DataFrame 上添加一列或者多列 ,Transformer.transform也是惰性執(zhí)行,只會(huì)生成新的 DataFrame 變量,而不會(huì)去提交 job 計(jì)算 DataFrame 中的內(nèi)容。

Estimator

Estimator 抽象了從輸入數(shù)據(jù)學(xué)習(xí)模型的過程,每個(gè) Estimator 都實(shí)現(xiàn)了 fit 方法,用于給定 DataFrame 和 Params 后,生成一個(gè) Transformer(即訓(xùn)練好的模型),每當(dāng)調(diào)用 Estimator.fit() 后,都會(huì)產(chǎn)生 job 去訓(xùn)練模型,得到模型參數(shù)。

Param

可以通過設(shè)置 Transformer 或 Estimator 實(shí)例的參數(shù)來(lái)設(shè)置模型參數(shù),也可以通過傳入 ParamMap 對(duì)象來(lái)設(shè)置模型參數(shù)。

Pipeline

Pipeline 定義了一組數(shù)據(jù)處理流程,可以在 Pipeline 中加入 Transformer、Estimator 或另一個(gè) Pipeline。Pipeline 繼承自 Estimator,調(diào)用 Pipeline.fit 方法后返回一個(gè) Transformer——PipelineModel;PipelineModel 繼承自 Transformer,用于將輸入經(jīng)過 Pipeline 的各個(gè) Transformer 的變換后,得到最終輸出。

Spark MLlib 典型流程如下:

  • 構(gòu)造訓(xùn)練數(shù)據(jù)集
  • 構(gòu)建各個(gè) Stage
  • Stage 組成 Pipeline
  • 啟動(dòng)模型訓(xùn)練
  • 評(píng)估模型效果
  • 計(jì)算預(yù)測(cè)結(jié)果

通過一個(gè) Pipeline 的文本分類示例來(lái)加深理解:

import org.apache.spark.ml.{Pipeline, PipelineModel}import org.apache.spark.ml.classification.LogisticRegressionimport org.apache.spark.ml.feature.{HashingTF, Tokenizer}import org.apache.spark.ml.linalg.Vectorimport org.apache.spark.sql.Row// Prepare training documents from a list of (id, text, label) tuples.val training = spark.createDataFrame(Seq( (0L, "a b c d e spark

總結(jié)

以上是生活随笔為你收集整理的机器学习_机器不学习:从Spark MLlib到美图机器学习框架实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。