原理
對於沒有約束限制的優化問題,可以每次僅更新函數中的一維,固定其他參數,迭代多次以達到求解優化函數的目的。
具體過程如下
舉例
求解問題 f(x
1,x
2) = 3x
1
2 + x
2
2 + 4x
1x
2 - 8
迭代次數計數
{
1、固定x 2更新x 1 x 1 = - 2/3 x 22、固定x 1更新x2 x 2 = -2 x 1}![]()
# -*- coding: utf-8 -*- """ Created on Wed Apr 05 18:09:41 2017 @author: LoveDMR 坐標上升法 """ import numpy as np import matplotlib.pyplot as plt delta = 0.025 x1 = np.arange( -5 , 5 , delta ) x2 = np.arange( -5 , 5 , delta ) X1 , X2 = np.meshgrid( x1 , x2 ) Y = X1**2 + 5 * X2**2 + 3 * X1 * X2 - 6 plt.figure() bg_fig = plt.contour(X1,X2,Y) a , b = [] , [] a.append(-4) b.append(3) j = 1 for i in xrange(1,150): a_tmp = - 1.5 * b[j-1] a.append( a_tmp ) b.append( b[j-1] ) j = j + 1 b_tmp = - 0.3 * a[j-1] b.append( b_tmp ) a.append( a[j-1] ) plt.plot(a , b) plt.title( "Coordinate Ascent" ) plt.xlabel('x1') plt.ylabel('x2') plt.show()
另外可以迭代到W的值不再變化或着變化幅度小於某個值即可
