Spark2 Model selection and tuning 模型選擇與調優

智慧先行者發表於2016-12-22

Model selection模型選擇

  ML中的一個重要任務是模型選擇,或使用資料為給定任務找到最佳的模型或引數。 這也稱為調優。 可以對諸如Logistic迴歸的單獨Estimators進行調整,或者對包括多個演算法,特徵和其他步驟的整個Pipeline進行調整。 使用者可以一次調整整個Pipeline,而不必單獨調整Pipeline中的每個元素。

MLlib支援使用CrossValidator和TrainValidationSplit等工具進行模型選擇。這些工具需要以下items:
    Estimator:要調整的algorithm or Pipeline
    Set of ParamMaps:可以選擇的引數,有時稱為“parameter grid”
    Evaluator:衡量擬合模型對測試資料支援的有多好

在高階別,這些模型選擇工具的工作如下:

    將輸入資料分成單獨的訓練和測試資料集。
    對於每個(訓練,測試)對,遍歷ParamMap的集合:
        對於每個ParamMap,它們使用這些引數擬合Estimator,獲得擬合的Model,並使用Evaluator評估Model的效能。
    選擇由效能最佳的引數集合生成的模型。

  Evaluator可以是用於迴歸問題的RegressionEvaluator,用於二進位制資料的BinaryClassificationEvaluator,用於多類問題的MulticlassClassificationEvaluator。每個evaluator中的“setMetricName方法”是一個用於選擇最佳ParamMap的預設度量。

為了幫助構造parameter grid,使用者可以使用ParamGridBuilder實用程式。

 

Cross-Validation交叉驗證
  CrossValidator開始於將資料集分割為一組folds,用作單獨的訓練和測試資料集。 例如,k = 3 folds,CrossValidator將生成3個“資料集對(訓練,測試)”,其中每個資料集使用2/3的資料進行訓練和1/3的測試。 為了評估特定的ParamMap,通過在3個不同“資料集對”上擬合Estimator,CrossValidator為3個Models計算平均評估度量。

  在識別最好的ParamMap後,CrossValidator最終使用最好的ParamMap和整個資料集重新匹配Estimator。

  注意,在parameters grid上的CrossValidator是非常耗費資源。 然而,它也是用於選擇引數的好的公認的方法,比啟發式手動調優在統計上更好。

 

Train-Validation Split

  除了CrossValidator,Spark還提供TrainValidationSplit用於超引數調優。 TrainValidationSplit只評估“每個引數的組合”一次,而不是在CrossValidator的情況下k次。 因此,TrainValidationSplit耗費的資源比CrossValidator少一些,但是當訓練資料集不夠大時,不會產生可靠的結果。

  與CrossValidator不同,TrainValidationSplit建立一個“資料集對(訓練,測試)”。 它使用trainRatio引數將資料集拆分為這兩個部分。 例如,trainRatio = 0.75

,TrainValidationSplit將生成訓練和測試資料集對,其中75%的資料用於訓練,25%用於驗證。

  像CrossValidator,TrainValidationSplit最終使用最好的ParamMap和整個dataset擬合Estimator。

 

相關文章