机器学习笔记2-感知机

机器学习笔记2-感知机

感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别,取+1和-1两个值。感知机学习旨在求出将训练数据进行线性划分的分离超平面,损失函数基于误分类,利用梯度下降法对损失函数进行极小化。(感知机模型是神经网络和支持向量机的基础)

感知机具有形式 f ( x ) = s i g n ( w x + b ) f{\rm{(}}x{\rm{)}} = {\rm{sign(}}wx + b{\rm{)}} f(x)=sign(wx+b),其中 w w w是权值向量, b b b是偏置向量,sign函数是符号函数,超平面S: w x + b = 0 wx+b=0 wx+b=0,称为分离超平面。若对数据集中所有点{( x 1 , y 1 x_1,y_1 x1,y1)( x 2 , y 2 x_2,y_2 x2,y2)…( x n , y n x_n,y_n xn,yn)},都有 w x i + b &gt; 0 wx_i+b&gt;0 wxi+b>0时, y i = + 1 y_i=+1 yi=+1; w x i + b &lt; 0 wx_i+b&lt;0 wxi+b<0时, y i = − 1 y_i=-1 yi=1,则称为数据集线性可分。其损失函数选取为误分类点集( M M M)到超平面S的总距离,即 − 1 ∥ w ∥ ∑ i ∈ M y i ( w x i + b ) - \frac{{\rm{1}}}{{\left\| w \right\|}}\sum\limits_{i \in M} {{y_i}{\rm{(}}w{x_i}} + b{\rm{)}} w1iMyi(wxi+b)。一般不考虑 1 ∥ w ∥ \frac{{\rm{1}}}{{\left\| w \right\|}} w1,损失函数可写为 − ∑ i ∈ M y i ( w x i + b ) -\sum\limits_{i \in M} {{y_i}{\rm{(}}w{x_i}} + b{\rm{)}} iMyi(wxi+b)。损失函数是非负的,当误分类点数为零时,损失函数为零。

感知机的学习算法采用随机梯度下降法(SGD),与之对应的有批量梯度下降法(BGD)。BGD每一次迭代时使用所有样本来进行梯度的更新。当样本数目很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。SGD每次迭代使用一个样本来对参数进行更新。此时虽然训练速度加快了,但准确度会下降,且不易于并行实现。此外还有一个小批量梯度下降法(MBGD),它是对SGD与BGD折中的一个方法,每次迭代使用 batch_size个样本来对参数进行更新。

感知机学习算法的具体形式:
(1)选取初值 w 0 , b 0 w_0,b_0 w0,b0
(2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
(3)如果 y i ( w x i + b ) &lt; = 0 y_i(wx_i+b)&lt;=0 yi(wxi+b)<=0,更新参数 w ← w + η y i x i w \leftarrow w + \eta {y_i}{x_i} ww+ηyixi b ← b + η y i b \leftarrow b + \eta {y_i} bb+ηyi
(4)转至(2),直到训练集中没有误分类点。
以上是感知机学习算法的原始形式,除此之外,其还有对偶形式。对偶形式在支持向量机中会有详细讲述(利用的是拉格朗日对偶性)。

参考:
李航《统计学习方法》
https://www.cnblogs.com/lliuye/p/9451903.html

### 关于机器学习和数据挖掘中感知机的学习笔记 #### 感知机简介 感知机是一种用于线性分类的监督学习算法,属于最简单的神经网络形式之一。该模型由两层组成:输入层和输出层,其中权重连接这两层节点[^1]。 #### 数学表达式 感知机通过计算加权求和并应用激活函数来决定最终输出类别标签。具体来说: \[ f(x)=sign(\sum_{i=0}^{n}{w_ix_i}) \] 这里 \( w_i \) 表示第 i 维特征对应的权重参数,\( x_i \) 是相应维度上的输入变量值,而 sign 函数用来判断正负号从而得出所属类别。 ```python import numpy as np def perceptron_predict(X, weights): """基于给定权重预测单个样本X的结果""" z = np.dot(weights.T, X) return 1 if z >= 0 else -1 ``` #### 学习策略 为了调整初始设定不当或者随机初始化后的权重向量使之逐渐逼近最优解,采用误分类最小化原则更新规则如下所示: 如果实例被错误划分,则按照一定步长修正当前方向直至收敛为止;反之保持不变继续下一个训练样例直到遍历整个集合完成一轮迭代循环操作。 ```python learning_rate = 0.1 # 步长大小可调参优化设置 for epoch in range(max_epochs): for xi, target in zip(X_train, y_train): update = learning_rate * (target - predict(xi)) weights += update * xi ``` #### 应用场景 尽管简单朴素却有着广泛应用背景,比如垃圾邮件过滤器设计当中可以利用其快速高效的特点实现初步筛选工作;另外图像边缘轮廓提取任务里也能发挥重要作用等等[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值