数据定义
假设DataSet ∑ i = 1 N ( x i , y i ) \sum_{i=1}^{N}(x_i,y_i) i=1∑N(xi,yi),其中 X ∈ R p i i d ( N , σ 2 ) , Y ∈ ( + 1 , − 1 ) X \in R^{p} \dfrac{iid}{}\left( N,\sigma ^{2}\right),Y\in(+1,-1) X∈Rpiid(N,σ2),Y∈(+1,−1) w ∈ R p w\in R^p w∈Rp
模型介绍
感知机算法主要用来解决而分类问题,它的架构十分简单,采用了线性函数+激活函数(非线性)的思想。如图所示:
用公式表示:
y
=
∑
i
=
1
σ
(
w
i
x
i
+
b
)
y=\sum _{i=1}\sigma \left( w_{i}x_{i}+b\right)
y=∑i=1σ(wixi+b)
σ ( a ) = { a ≥ + 1 a < − 1 \sigma \left( a\right) =\begin{cases}a\geq +1\\ a <-1\end{cases} σ(a)={a≥+1a<−1
当
w
i
x
i
+
b
w_ix_i+b
wixi+b的结果大于等于0,我们把它看作类别为+1的类别,反之,看作为-1的类别。为了方便运算,我们用矩阵表示:
Y
=
σ
(
W
T
X
Y= \sigma( W^TX
Y=σ(WTX),在这里我们偏置b放在了w里面。
优化方法
感知机函数我们采用错误驱动的方法优化,在这里我们把⭕️看作+1类别,❌看作-1类别,也就是y的值,从下图我们可以看出,有两个⭕️被错误分类了,也就是它们y值本来是1却被分为-1。我们设集合D,把错误分类的观测值都存入集合D。
,这样我们就有了一个想法,当观测值被正确分类时,yixiwi的乘积为+1,反之,yixiwi的乘积为-1,把对样本错误分类的数量作为损失函数,当损失函数为0时,也就是说明了数据分类成功了。
L
(
W
)
=
∑
I
(
y
i
x
i
w
i
)
L(W)=\sum I(y_ix_iw_i)
L(W)=∑I(yixiwi)
但是由于指示函数I不可导,把指示函数去掉
L
(
W
)
=
−
∑
x
∈
D
y
i
w
i
x
i
L(W)=-\sum_{_{x \in D}} y_i w_ix_i
L(W)=−x∈D∑yiwixi。
loss函数变成了一个正数,我们采用SGD(随即梯度下降)来优化。
局限性
感知机可以解决与,或,非三种问题。如图:
由于最终拟合的模型实际上是一条直线,如果样本点不能被一条直线切开,就无法分类,比如:异或问题。
代码: