A.正則化
1.正則化的目的是什麼?
正則化是爲了防止過擬合,加入正則項和的參數估計是符合咱們以前的預約目標的,即用盡可能少的變量去擬合數據。正則化符合奧卡姆剃刀原理,在全部可能選擇的模型中,可以很好的解釋已知數據,而且十分簡單的纔是最好的模型,也就是要選擇的模型。
2.機器學習中的範數
L0範數是指向量中非零元素的個數,若是用L0規則化一個參數矩陣W,就是但願W中大部分元素爲0,實現稀疏
L1範數是指向量中各個元素的絕對值之和
L2範數是指向量各元素的平方和而後開方機器學習
3.L1 L2 Regularization圖片描述
4.結論:
爲了防止過擬合,不單單要求損失函數小,還要求 min(損失函數+正則化項 )函數
B.標準化
在spark.ml中標準化的實現列是StandardScaler
StandardScaler處理的對象是每一列,也就是每一維特徵,將特徵標準化爲單位標準差或是0均值,或是0均值單位標準差。
主要有兩個參數能夠設置:學習
withStd: 默認爲真。將數據標準化到單位標準差。
withMean: 默認爲假。是否變換爲0均值。
StandardScaler須要fit數據,獲取每一維的均值和標準差,來縮放每一維特徵。
eg:spa
//數據標準化 val scaler = new StandardScaler() .setInputCol("features") .setOutputCol("scaledFeatures") .setWithStd(true) .setWithMean(false) val scalerModel = scaler.fit(output) val scaledData = scalerModel.transform(output)
C.歸一化
數據歸一化由MinMaxScaler實現
MinMaxScaler做用一樣是每一列,即每一維特徵。將每一維特徵線性地映射到指定的區間,一般是[0, 1]。
eg:code
//數據歸一化 val scaler = new MinMaxScaler() .setInputCol("featuresAssembler") .setOutputCol(features)