中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談SciPy中的optimize.minimize實現受限優化問題

發布時間:2020-09-22 23:55:49 來源:腳本之家 閱讀:804 作者:lmb633 欄目:開發技術

問題描述:有一批樣本x,每個樣本都有幾個固定的標簽,如(男,24歲,上海),需要從中抽取一批樣本,使樣本總的標簽比例滿足分布P(x),如(男:女=49%:51%、20歲:30歲=9%:11%、..........)

采用KL-散度作為優化目標函數。

KL-散度又叫相對熵

KL-散度在機器學習中,P用來表示樣本的真實分布,比如[1,0,0]表示當前樣本屬于第一類。Q用來表示模型所預測的分布,比如[0.7,0.2,0.1]

KL-散度直觀的理解就是如果用P來描述樣本,那么就非常完美。而用Q來描述樣本,雖然可以大致描述,但是不是那么的完美,信息量不足,需要額外的一些“信息增量”才能達到和P一樣完美的描述。如果我們的Q通過反復訓練,也能完美的描述樣本,那么就不再需要額外的“信息增量”,Q等價于P。

公式:

淺談SciPy中的optimize.minimize實現受限優化問題

使用SciPy中的optimize.minimize來進行優化。

def minimize(fun, x0, args=(), method=None, jac=None, hess=None,
    hessp=None, bounds=None, constraints=(), tol=None,
    callback=None, options=None):

幾個重要的參數:

fun:目標函數(he objective function to be minimized);

x0:參數初始值(Initial guess. Array of real elements of size (n,));

bounds:參數取值范圍限制(Bounds on variables for L-BFGS-B, TNC, SLSQP and trust-constr methods.)

constraints:約束函數(Constraints definition (only for COBYLA, SLSQP and trust-constr)

Constraints for COBYLA, SLSQP are defined as a list of dictionaries.
Each dictionary with fields:
 
 type : str
  Constraint type: 'eq' for equality, 'ineq' for inequality.
 fun : callable
  The function defining the constraint.
 jac : callable, optional
  The Jacobian of `fun` (only for SLSQP).
 args : sequence, optional
  Extra arguments to be passed to the function and Jacobian.
)

tol : 目標函數誤差范圍,控制迭代結束(optional Tolerance for termination. For detailed control, use solver-specific options.) options : 其他一些可選參數(dict, optional A dictionary of solver options. All methods accept the following generic options:)

求解過程:

定義優化函數:

def obj_function(x): 其中x為要優化的變量,在本問題中有480類的樣本(如:男,24歲,上海),每類樣本10-1000個不等,x為每類抽取的比例。要從中抽取50000個樣本,滿足22個約束條件(男:女=50%:50%、20歲:30歲=9%:11%等等)。

例如:男性要占總樣本的50%,則 淺談SciPy中的optimize.minimize實現受限優化問題

選擇優化函數。SciPy中可以使用bounds參數的算法有:L-BFGS-B, TNC, SLSQP and trust-constr,可以使用constraints 參數的算法有: COBYLA, SLSQP and trust-constr

調參:optimize.minimize有統一的參數,但每個優化算法都有自己特有的參數,可以看源碼中的參數列表。

運行:res = optimize.minimize(sample_fun, np.array(x0), bounds=bound, method='L-BFGS-B', tol=1e-11, options={'disp': True, 'maxiter': 300, 'maxfun': 1500000}),最終的結果保存在res.x中

如果程序沒達到指定的迭代次數就停止,可能有兩種原因:

STOP: TOTAL NO. of f AND g EVALUATIONS EXCEEDS LIMIT 增大參數maxfun;

CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH 調小參數tol

以上這篇淺談SciPy中的optimize.minimize實現受限優化問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东乌| 松潘县| 酒泉市| 南漳县| 太康县| 株洲县| 邵东县| 玉山县| 囊谦县| 玉环县| 冀州市| 织金县| 仪征市| 武威市| 乌兰浩特市| 四子王旗| 陵川县| 民县| 建水县| 迁西县| 抚州市| 揭阳市| 永年县| 曲阳县| 安福县| 仙桃市| 静海县| 哈巴河县| 南和县| 呼图壁县| 泽州县| 沾化县| 邳州市| 张家口市| 顺义区| 香格里拉县| 宿迁市| 寿宁县| 台前县| 新巴尔虎右旗| 龙里县|