block-quote On this pagechevron-down
copy Copy chevron-down
第2章 感知机 - 原始形式 梯度下降法的算法过程 输入:
训练数据集T = ( x 1 , y 1 ) , ( x 1 , y 1 ) , ⋯ , ( x n , y n ) T={(x_1, y_1), (x_1, y_1), \cdots, (x_n, y_n)} T = ( x 1 , y 1 ) , ( x 1 , y 1 ) , ⋯ , ( x n , y n ) ,其中
x i ∈ R n y i ∈ y = − 1 , + 1 , i = 1 , 2 , ⋯ , n \begin{aligned}
x_i \in R^n \\
y_i \in y = {-1, +1}, \\
i = 1, 2, \cdots, n
\end{aligned} x i ∈ R n y i ∈ y = − 1 , + 1 , i = 1 , 2 , ⋯ , n 学习率为η \eta η
输出:
w, b
感知机模型f ( x ) = s i g n ( w ⋅ x + b ) f(x) = sign(w \cdot x + b) f ( x ) = s i g n ( w ⋅ x + b ) 过程:
1. 选取初值w_0, b_0
2. 在训练集中选取数据( x i , y i ) (x_i, y_i) ( x i , y i ) 3. 如果y i ( w ⋅ x i + b ) ≤ 0 y_i(w \cdot x_i + b) \le 0 y i ( w ⋅ x i + b ) ≤ 0 ,则
{ w ← w + η y i x i b ← b + η y i \begin{cases}
w \leftarrow w + \eta y_ix_i \\
b \leftarrow b + \eta y_i
\end{cases} { w ← w + η y i x i b ← b + η y i 转至2,直至训练集中没有错误分类点
直观解释:当一个实例点被误分类, 即位于超平面错误的一侧时,则调整w,b的值,使超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确划分
代码: https://github.com/windmissing/LiHang-TongJiXueXiFangFa/blob/master/Chapter2/perceptron.ipynbarrow-up-right
Copy # 感知机原始形式
def perceptron ( X , y , eta ):
w , b = np . zeros ( X . shape [ 1 ]), 0
while (( y * ( w . dot ( X . T ) + b )) <= 0 ). any ():
index = np . random . randint ( X . shape [ 0 ])
if y [ index ] * ( w . dot ( X [ index ]) + b ) <= 0 :
w = w + eta * y [ index ] * X [ index ]
b = b + eta * y [ index ]
def f ( x ):
return np . sign ( w . dot ( x ) + b )
return w , b , f