一、機器學習簡介
1.1、機器學習概念
- 機器學習就是讓機器能像人一樣有學習、了解、認識的能力。
- 機器學習是一門人工智能的科學,該領域的主要研究對象是人工智能,特别是如何在經驗學習中改善具體算法的性能。
- 機器學習的過程就是通過計算機使算法模型利用輸入資料的規律或以往經驗進行學習,并對模型進行評估,評估的性能如果達到要求就拿這個模型來測試其他的資料,如果達不到要求就要調整算法來重建立立模型,再次進行評估,如此循環往複,最終獲得滿意的經驗來處理其他的資料。
- 緻力于研究如何通過計算的手段,利用經驗(曆史資料)來改善系統自身的性能[機器學習]。
- 從資料中産生模型的算法,即“學習算法”。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL4YzN0QjNyYjM4EjYyEzN4EjMhRTYihDZzYDM3YTMkNzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
1.2、基本術語
- 學習(訓練):從資料中學得模型的過程
- 訓練集:參與模型訓練的樣本集合
- 測試:學得模型後,使用其樣本進行預測的過程
- 測試集:被預測的樣本集合
- 分類:輸出結果是離散值
- 回歸:輸出結果是連續值
- 監督學習:訓練樣本有标記
- 無監督學習:訓練樣本無标記
- 泛化能力:學得模型适用于新樣本的能力
1.3、機器學習常用的算法
-
回歸算法
線性回歸:根據已有資料拟合曲線,常采用的方法是最小二乘法
邏輯回歸:一種與線性回歸非常類似的算法,但是線性回歸處理的是數值問題,而邏輯回歸屬于分類算法,預測結果是離散的分類
-
分類算法:有監督學習的方法。
分類算法是通過有類别的訓練資料對模型進行訓練和評估,再根據評估後的模型對未知類别資料進行分類。主要有KNN算法、樸素貝葉斯算法、SVM支援向量機、邏輯回歸、決策樹、随機森林等等
-
聚類算法:聚類是一種無監督學習算法,用于将對象分到高度相似的類中。
常用的聚類方法有KMeans聚類、層次聚類,比較少見的有SOM聚類算法、FCM聚類算法,FCM算法是一種以隸屬度來确定每個資料點屬于某個聚類程度的算法。
-
推薦算法:推薦算法的主要特征就是可以自動向使用者推薦他們最感興趣的東西,進而增加購買率,提升效益。
協同過濾推薦算法:有基于使用者和基于内容兩種
關聯規則的算法:将滿足支援度與置信度的共同購買的商品推薦給買了其中一種或幾種的使用者
- 降維算法:主要作用是壓縮資料與提升機器學習其他算法的效率。通過降維算法,可以将具有幾千個特征的資料壓縮至若幹個特征。降維算法的主要代表是PCA算法(即主成分分析算法)。
二、Spark MLlib簡介
2.1、MLlib簡介
- MLlib是Spark的機器學習(ML)庫,旨在簡化機器學習的工程實踐工作,并友善擴充到更大規模,同時利用Spark分布式處理來實作模型,處理大資料全量資料的疊代計算。
- 算法工具:常用的學習算法,如分類、回歸、聚類和協同過濾。
- 特征化工具:特征提取、轉化、降維,和選擇工具。
- 管道(Pipeline):用于建構、評估和調整機器學習管道的工具。
- 持久性:儲存和加載算法、模型和管道。
- 實用工具:線性代數、統計、資料處理等工具。
2.2、MLlib的發展
- Spark MLlib曆史比較長,在1.0以前的版本即已經包含了,提供的算法實作都是基于原始的RDD。主要有以下幾個發展過程。
- 0.8版本時,MLlib算法包被加入Spark,但是隻支援Java和Scala兩種語言。
- 1.0版本時,Spark MLlib才可以支援Python語言。
- 1.2版本開始Spark機器學習庫被分為兩個包
- 1.2以後的版本,對MLlib中的算法不斷的增加和改進
- 從Spark2.0開始,基于RDD的API進入維護模式(即不增加任何新的特性),并預期于3.0版本的時候被移除出MLlib。
2.3、機器學習算法包
Spark MLlib & Spark ML
官網:http://spark.apache.org/docs/latest/ml-guide.html