對第一個問題(“哪種選擇更好?”),你需要回答這個問題通過對問題域的理解。
- 你希望類似的行為在組織(項目)?
- 如果是這樣,這是一個+ 1的hyperparameters共享。反之亦然。
- 你有類似的每組數字訓練的例子?
- 如果是這樣,這也是一個+ 1的hyperparameters共享。反之亦然。
- 組織與完整的數據集的規模有多大?
- 如果每組很小和完整的數據集,那麼可以預期調優運行更穩定,如果單獨為每個組。舉例來說,如果你每周訓練你的模型,你可能會非常不同hyperparameters每次(預測)。
- 即。,if each group is fairly small, then consider using shared hyperparameters.
第二個問題(“我怎麼做?”),這是一個草圖。這個草圖是團體也足夠小,適合在1台機器。(當部分或全部組太大適合1日機,可以單獨處理它們使用分布式訓練算法。)
- 為,使用Apache火花DataFrame groupBy創建分組DataFrame。然後應用一個熊貓UDF。在這個UDF調用模型訓練(或調優,如果適用的話)。
- 共享hyperparameters:
- 調用優化,例如,Hyperopt司機上運行。
- 每次測試1組hyperparameters調優算法,它應該適合所有人群的模型運用熊貓DataFrame UDF。
- 在熊貓UDF,毫升庫(例如,sklearn)將使用提供的全球hyperparameter設置Hyperopt適合一個組的模型。
- 獨立的hyperparameters:
- 應用熊貓DataFrame UDF。
- 在熊貓UDF,叫調優(例如,Hyperopt)。調優將調用毫升的圖書館。調優後,您將您的模型組。
- 注意:如果使用Hyperopt,注意Hyperopt應該使用常規試驗,而不是SparkTrials。這是因為熊貓UDF應用程序使用分布式計算,所以Hyperopt本身需要本地運行。