分類和回歸
spark.mlib提供了多種方法用於用於二分類、多分類以及回歸分析。 下表介紹了每種問題型別支援的演算法。
問題型別
支援方法
二分類線性svms、邏輯回歸、決策樹、隨機森林、梯度增強樹、樸素貝葉斯
多分類邏輯回歸、決策樹、隨機森林、樸素貝葉斯
回歸線性最小二乘法、決策樹、隨機森林、梯度增強樹、保序回歸
線性模型
1、數學描述
許多標準的機器學習演算法可以歸結為凸優化問題。例如,找到凸函式 f(w) 的乙個極小值的任務,這個凸函式依賴於可變向量w (在spark原始碼中,一般表示為weights)。形式上,我們可以將其當作乙個凸優化問題$_f(w)$。它的目標函式可以表示為如下公式
(1):
在上式中,向量x表示訓練資料集,y表示它相應的標籤,也是我們想**的值。如果l(w;x,y)可以表示為$^x$和y的函式, 我們稱這個方法為線性的。spark.mllib中的幾種分類演算法和回歸演算法可以歸為這一類。
目標函式f包含兩部分:正則化(regularizer),用於控制模型的複雜度;損失函式,用於度量模型的誤差。損失函式l(w;.)是乙個典型的基於w的凸函式。固定的正則化引數gamma定義了兩種目標的權衡(trade-off), 這兩個目標分別是最小化損失(訓練誤差)以及最小化模型複雜度(為了避免過擬合)。
1.1、損失函式
下面介紹spark.mllib中提供的幾種損失函式以及它們的梯度或子梯度(sub-gradient)
hinge損失的損失函式l(w;x,y)以及梯度分別是:
logistic損失的損失函式l(w;x,y)以及梯度分別是:
squared損失的損失函式l(w;x,y)以及梯度分別是:
1.2 正則化
正則化的目的是為了簡化模型及防止過擬合。spark.mllib中提供了下面的正則化方法。 問題
規則化函式r(w)
梯度zero00
l2如下公式(1)wl1
如下公式(2)
sign(w)
elastic net
alpha * l1 +(1-alpha) * l2
alpha * sign(w) + (1-alpha) * w
在上面的**中,sign(w)是乙個向量,它由w中的所有實體的訊號量(+1,-1)組成。l2問題往往比l1問題更容易解決,那是因為l2是平滑的。然而,l1可以使權重矩陣更稀疏, 從而構建更小以及更可判斷的模型,模型的可判斷性在特徵選擇中很有用。
2、分類
分類的目的就是將資料切分為不同的類別。最一般的分類型別是二分類,即有兩個類別,通常稱為正和負。如果類別數超過兩個,我們稱之為多分類。spark.ml提供了兩種線性方法用於分類:線性支援向量機以及邏輯回歸。 線性支援向量機僅僅支援二分類,邏輯回歸既支援二分類也支援多分類。對所有的方法,spark.ml支援l1和l2正則化。分類演算法的詳細介紹見下面的鏈結。
TensorFlow 例項一 線性回歸模型
encoding utf 8 create by ibf on 2018 5 6 import numpy as np import tensorflow as tf 1.構造乙個資料 np.random.seed 28 n 100 x np.linspace 0,6,n np.random.nor...
(一)線性模型
基本形式 給定由d個屬性描述的特徵 x 其中x 是在第i個屬性位置上的取值,這樣就形成了乙個線性函式,定義如下 令 x 1 1寫成向量形式如下 我們的目標就是去求這些引數,如何確定引數,關鍵在於如何去衡量 h x 和y之間的差別。均方誤差是回歸任務中最常用的效能度量,因此我們可以試圖讓均方誤差最小化...
機器學習系列之一 線性回歸模型
目錄1.線性回歸 1.1 問題轉換 1.2 衡量標準 1.3 學習方向 1.線性回歸 1.1 問題轉換 今天我們來談一下線性回歸。問題 假如我想知道乙個房屋的房價是多少,現在我們能提供的資料報含房屋的面積,房屋的朝向,房屋的地理位置等有關房子的資訊,我們該怎麼做呢?聰明的你一定已經知道了。為了方便,...