2-2 感知机梯度下降法的算法过程
Posted windmissing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2-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=(x1,y1),(x1,y1),⋯,(xn,yn)$,其中
x
i
∈
R
n
y
i
∈
y
=
−
1
,
+
1
,
i
=
1
,
2
,
⋯
,
n
x_i \\in R^n \\\\ y_i \\in y = -1, +1, \\\\ i = 1, 2, \\cdots, n
xi∈Rnyi∈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)=sign(w⋅x+b)
过程:
- 选取初值w_0, b_0
- 在训练集中选取数据 ( x i , y i ) (x_i, y_i) (xi,yi)
- 如果
y
i
(
w
⋅
x
i
+
b
)
≤
0
y_i(w \\cdot x_i + b) \\le 0
yi(w⋅xi+b)≤0$,则
w ← w + η y i x i b ← b + η y i \\begincases w \\leftarrow w + \\eta y_ix_i \\\\ b \\leftarrow b + \\eta y_i \\endcases w←w+ηyixib←b+ηyi - 转至2,直至训练集中没有错误分类点
直观解释:当一个实例点被误分类, 即位于超平面错误的一侧时,则调整w,b的值,使超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确划分
代码:
https://github.com/windmissing/LiHang-TongJiXueXiFangFa/blob/master/Chapter2/perceptron.ipynb
# 感知机原始形式
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
以上是关于2-2 感知机梯度下降法的算法过程的主要内容,如果未能解决你的问题,请参考以下文章