Spark機器學習 模型選擇與引數調優之交叉驗證

2021-09-08 06:06:10 字數 1322 閱讀 7967

機器學習可以簡單的歸納為 通過資料訓練y = f(x)的過程,因此定義完訓練模型之後,就需要考慮如何選擇最終我們認為最優的模型。

如何選擇最優的模型,就是本篇的主要內容:

在《統計學習方法》這本書中,曾經講過模型驗證的方法有三種,分別是簡單的交叉驗證s折交叉驗證留一交叉驗證

即把全部資料按照比例分割成兩部分,分別是訓練集和測試集。在訓練集訓練模型,在測試集測試效果,最終選擇乙個代價比較小的結果。一般是0.75。

設定s為乙個數,一般是3或者10居多。如果是3,那麼前2份作為訓練集,最後乙份作為測試集。

如果s的個數正好是樣本的容量,就是留一交叉驗證。

ps:

訓練集是用於訓練模型,測試集適用於判斷此次訓練效果。

在spark mllib中,為我們提供了兩種驗證方法,分別是

在spark mllib中,超引數可以通過上面的驗證方法,作為引數傳進去:

// 定義超引數集合

val paramgrid = new paramgridbuilder()

.addgrid(hashingtf.numfeatures, array(10, 100, 1000))

.addgrid(lr.regparam, array(0.1, 0.01))

.build()

// 定義驗證器

val cv = new crossvalidator()

.setestimator(pipeline)

.setevaluator(new binaryclassificationevaluator)

.setestimatorparammaps(paramgrid)

.setnumfolds(2) // use 3+ in practice

其中hashingtf給設定了3個引數、lr給了2個引數,如果正常我們想要驗證這6個引數的組合,應該需要驗證6次。但是在spark中,基於validator可以一次性驗證出來,並自動選擇最後代價最小的那個。

ps

上面s折交叉驗證中s的引數為2,因此內部只有乙個訓練集;如果是3,那麼最終執行的訓練次數將會是(3*2)*2 = 12次。

spark提供了三種評估函式:

詳細的**,可以參考:

posted @

2018-01-30 15:57

xingoo 閱讀(

...)

編輯收藏

機器學習 模型評估與選擇

1.擬合 接近目標的遠近程度。過擬合 學習能力過強導致過於擬合。過於學習學到認為女生必須是長頭髮。欠擬合 學習能力低下導致欠擬合。學習能力低下,擁有長髮的都是女生。2.評估方法 目標 所選模型的泛化誤差最小 一 留出法 step 1 將資料集d 互斥 的分成訓練集s和測試集t,d sut。step ...

機器學習 模型評估與選擇

1 經驗誤差和過擬合 錯誤率 分類錯誤的樣本數佔樣本總數的比例 精度 1 錯誤率 誤差分為訓練誤差 或稱經驗誤差 和泛化誤差 訓練誤差 在訓練集上的誤差 泛化誤差 在新樣本上的誤差 機器學習的目標是得到泛化誤差最小的學習器。學習器把訓練樣本學得 太好 了的時候,很可能已經把訓練樣本自身的一些特點當做...

機器學習 模型評估與選擇

第二章 模型評估與選擇 一 概覽 對於同一資料集而言,給定不同的演算法,會提取不同的模型,甚至對於同一演算法給定不同的引數,也會得到不同的模型,選擇最佳的模型的過程稱為模型選擇。模型選擇會遵循一定的標準,首先需要將資料集分成若干部分,一部分用於訓練模型,一部分用於測試模型的泛化能力,對於測試的結果給...