统计学习方法感知机(附简单模型代码) Myth丶恋晨 2022-04-04 14:29 259阅读 0赞 ## 1. 感知机模型 ## **输入为实例的特征向量, 输出为实例的类别, 取+1和-1;感知机对应于输入空间中将实例划分为正负两类的分离超平面, 属于判别模型;导入基于误分类的损失函数;利用梯度下降法对损失函数进行极小化;**感知机学习算法具有简单而易于实现的优点, 分为原始形式和对偶形式;1957年由Rosenblatt提出, 是神经网络与支持向量机的基础。 **定义** 假设输入空间(特征空间) 是x⊆Rn, 输出空间是 ![20181217202538422.png][]=\{+1,-1\}。输入x∊x表示实例的特征向量, 对应于输入空间(特征空间) 的点; 输出y∊ ![20181217202553730.png][]表示实例的类别。 由输入空间到输出空间的如下函数:![20181217202609594.png][]称为感知机。其中, w和b为感知机模型参数, w∊Rn叫作权值(weight) 或权值向量(weight vector) , b∊R叫作偏置(bias) , w·x表示w和x的内积。 sign是符号函数, 即![20181217202706914.png][]。 感知机几何解释: 线性方程:![20181217202824441.png][] 对应于超平面S, w为法向量, b截距, 分离正、 负类: 分离超平面:![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM2Mzk5Nw_size_16_color_FFFFFF_t_70][] ## 2. 感知机学习策略 ## **如何定义损失函数?** 自然选择: 误分类点的数目, 但损失函数不是w,b 连续可导, 不宜优化。 另一选择: 误分类点到超平面的总距离。 距离:![20181217203125666.png][] 误分类点:![20181217203146288.png][] 误分类点距离: :![20181217203203677.png][] 假设超平面S的误分类点集合为M, 那么所有误分类点到超平面S的总距离为: ![20181217203218958.png][] 不考虑![20181217203405486.png][] , 就得到感知机学习的损失函数。 给定训练数据集![20181217203427751.png][]其中, xi∊x=Rn, yi∊ ![20181217203505581.png][]=\{+1,-1\}, i=1,2,…,N。 感知机sign(w·x+b)学习的损失函数定义为![20181217203529631.png][]其中M为误分类点的集合。 这个损失函数就是感知机学习的经验风险函数。 ## 3. 感知机学习算法 ## 求解最优化问题:![20181217203800422.png][] 随机梯度下降法, 首先任意选择一个超平面, w, b, 然后不断极小化目标函数,损失函数L的梯度: ![20181217203932252.png][] 选取误分: ![20181217204003409.png][] **感知机学习算法的原始形式** 输入: 训练数据集T=\{(x1, y1),(x2,y2),…,(xN,yN)\}, 其中xi∊x=Rn, yi∊ ![20181217204110756.png][]=\{-1,+1\}, i=1,2,…,N; 学习率![20181217204131464.png][] (0< ≤1); 输出: w,b; 感知机模型f(x)=sign(w·x+b)。 (1) 选取初值w0,b0 (2) 在训练集中选取数据(xi, yi) (3) 如果yi(w·xi+b)≤0:![20181217204204784.png][] (4) 转至(2) , 直至训练集中没有误分类点。 这个可以说是最简单的感知机算法了,下面是用随机梯度下降实现的代码: \# 数据线性可分,二分类数据 \# 此处为一元一次线性方程 class Model: def \_\_init\_\_(self): self.w = np.ones(len(data\[0\])-1, dtype=np.float32) self.b = 0 self.l\_rate = 0.1 \# self.data = data def sign(self, x, w, b): y = np.dot(x, w) + b return y \# 随机梯度下降法 def fit(self, X\_train, y\_train): is\_wrong = False while not is\_wrong: wrong\_count = 0 for d in range(len(X\_train)): X = X\_train\[d\] y = y\_train\[d\] if y \* self.sign(X, self.w, self.b) <= 0: self.w = self.w + self.l\_rate\*np.dot(y, X) self.b = self.b + self.l\_rate\*y wrong\_count += 1 if wrong\_count == 0: is\_wrong = True return 'Perceptron Model!' 其中data是你数据,是不是很简单。 **感知机学习算法的对偶形式** 输入: 线性可分的数据集T=\{(x1, y1),(x2, y2),…,(xN,yN)\}, 其中xi∊Rn, yi∊\{-1,+1\}, i=1,2,…,N; 学习率 ![20181217210256433.png][](0< ≤1); 输出: a,b; 感知机模型![20181217210325381.png][] 其中a=(a1,a2,…,aN)T 。 (1) a←0, b←0 (2) 在训练集中选取数据(xi, yi) (3) 如果![20181217210345180.png][]则![20181217210401745.png][] (4) 转至(2) 直到没有误分类数据。 **对偶形式中训练实例仅以内积的形式出现。** 为了方便, 可以预先将训练集中实例间的内积计算出来并以矩阵的形式存储, 这个矩阵就是所谓的Gram矩阵(Gram matrix)![20181217210427929.png][]。目前这个代码还没看懂。 以上内容均出自李航老师的《统计学习方法》。 [20181217202538422.png]: https://img-blog.csdnimg.cn/20181217202538422.png [20181217202553730.png]: https://img-blog.csdnimg.cn/20181217202553730.png [20181217202609594.png]: https://img-blog.csdnimg.cn/20181217202609594.png [20181217202706914.png]: /images/20220404/aa3200caba504d55b6af5a3b2646f044.png [20181217202824441.png]: /images/20220404/7cabf674a5314ebaa2e466e132853c52.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjM2Mzk5Nw_size_16_color_FFFFFF_t_70]: /images/20220404/f310aa8c6d234883ba95bd92e9f265fc.png [20181217203125666.png]: /images/20220404/6749e8643a8a445484276f0141e1c6ba.png [20181217203146288.png]: /images/20220404/af677c870db340b89581c8002b6f540c.png [20181217203203677.png]: /images/20220404/7b6dc00c64f64ddda422787bb9bfbb5d.png [20181217203218958.png]: /images/20220404/31973f9990a14092a155c3274cdcdba2.png [20181217203405486.png]: /images/20220404/04c3b56d36f447dfbf0d8fee5fa7fbb0.png [20181217203427751.png]: https://img-blog.csdnimg.cn/20181217203427751.png [20181217203505581.png]: https://img-blog.csdnimg.cn/20181217203505581.png [20181217203529631.png]: /images/20220404/1100a515eae943658ed24f5aee4ba301.png [20181217203800422.png]: /images/20220404/24a9c062a629435bba9a106f66a5f262.png [20181217203932252.png]: /images/20220404/2645fe40695b415ba1d2cec49e397918.png [20181217204003409.png]: /images/20220404/1e9fef63591b40cd9fd309de292666d8.png [20181217204110756.png]: https://img-blog.csdnimg.cn/20181217204110756.png [20181217204131464.png]: /images/20220404/e7aaa9af7f69424c84f1febe3d667f17.png [20181217204204784.png]: /images/20220404/9460763bffbb4077a5ea3421b037c2c4.png [20181217210256433.png]: /images/20220404/547089835c23411d806428ddb18b0ecb.png [20181217210325381.png]: /images/20220404/7ed61910a73845ffad426102e2513975.png [20181217210345180.png]: https://img-blog.csdnimg.cn/20181217210345180.png [20181217210401745.png]: /images/20220404/edd711cb93aa4b99a059555cbf761f73.png [20181217210427929.png]: /images/20220404/ec09e60afb3a4ba38dd32240d680397a.png
还没有评论,来说两句吧...