2015-11-03 86 views
1

給定一個返回健身測量值的Python可調參數(0.0 =可怕的,0.5 = ok,1.0 =完美)並描述其參數(type = bool | int | float | nominal,min,max)什麼是參數優化器的健壯實現,它可以找到儘可能高的適應性度量的參數組合?我並不是在尋求一個全面保證的全局最優解。近似值會很好。Python中的參數優化

我見過scipy的optimize模塊引用了很多,但也scikit學習的gridsearch。這兩者之間的實際區別是什麼?什麼是其他選項?

+0

我已經使用了很多gridsearch。你是否希望優化管道中某些組件的參數?例如,gridsearch將允許您創建具有功能選擇器和分類器的管道。 – AbtPst

+0

@AbtPst,我有一個圖像處理管道,並且對於每個圖像,我都手動設置了提供最佳/期望輸出的參數。現在我試圖找到一組適用於「大多數」圖像的參數。我基本上只是試圖概括我手動調整的參數。 – Cerin

+0

請看看這裏http://stackoverflow.com/questions/33353228/feature-selection-using-logistic-regression/33422387?noredirect=1#comment54753653_33422387 – AbtPst

回答

2

給定一個參數空間和任務來尋找最佳值,gridsearch可能是最容易做的事情:分離參數空間,並通過蠻力檢查所有組合。返回產生最佳結果的參數組合。

這種方法很有效,但正如您可以想象的那樣,這並不能很好地擴展。對於高維優化問題,這根本不可行。

這裏改進的策略取決於您擁有的附加信息。在最佳情況下,您可以優化平滑和可微的功能。在這種情況下,您可以使用數值優化。

在數值優化例程中,您可以利用函數的梯度總是向上的事實。所以如果你想增加函數值,只要簡單地跟隨漸變,只要漸變不爲零,你就會一直提高。

這個強大的概念在scipy的大部分例程中被利用。通過這種方式,您可以通過利用有關當前位置附近的附加信息來優化高維功能。

所以,如果你沒有一個平滑和差分功能,scipy的數值例程不能使用。

請注意,利用當前參數向量附近的信息也可以用於非光滑優化。基本上你做同樣的事情:你檢查一下當前估計值附近的一個窗口,並嘗試通過在該窗口中找到更好的值來改善。