【学习笔记】感知机(原始)
来源:互联网 发布:学java走前端还是后端 编辑:程序博客网 时间:2024/06/06 19:01
【学习笔记】感知机(原始)
感知机(perceptron)是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别。
感知机模型
由输入空间到输出空间的如下函数:
称为感知机。
学习策略
假设:训练数据集是线性可分。
策略(定义损失函数):误分类点到超平面S的总距离。
输入空间中任一点
x0 到超平面S的距离:1||w|||w⋅x0+b| - 其中
||w|| 是w 的L2 范数
- 其中
对误分类的数据
(xi,yi) 有:−[yi(w⋅xi+b)]>0 - 如何被误分:当
w⋅xi+b>0 时,yi 却等于−1 ,而当w⋅xi+b<0 时,yi 却等于+1
正确的划分应该是:当w⋅xi+b>0 时,yi 等于+1 ,当w⋅xi+b<0 时,yi 等于−1
即:错误划分后w⋅xi+b 与yi 始终符号相反,两者相乘恒小于零
- 如何被误分:当
所以,误分类点
xi 到超平面S的距离:−1||w||yi(w⋅xi+b) 所以误分类点集合
M 到超平面S的总距离函数:−1||w||∑xi∈Myi(w⋅xi+b) 不考虑
1||w|| 得到损失函数:L(w,b)=−∑xi∈Myi(w⋅xi+b)
感知机学习算法
最优化的方法是随机梯度下降法
感知机学习算法的原始形式
损失函数最小化问题的解为,找到w,b,使得损失函数的值最小,即:
随机梯度下降法:
1. 任选一个超平面
2. 随机选取一个误分类点使其梯度下降。
算法:
* 输入:训练数据集,学习率
* 输出:
选取初值
w0,b0 在训练集中选取数据
(xi,yi) 如果
(xi,yi) 被错误划分,即yi(w⋅x+b)≤0 - 更新参数
w,b w←w+ηyixi b←b+ηyi
- 更新参数
- 跳转到2,直到训练集中没有误分类点。(更新参数后,测试每个点,都没有误分类结束)
#coding:utf-8'''author:zhdata:2017/9/22感知机实现,学习率为1'''w = [0,0]b = [0]def SetDate(): """ 制作测试数据,采用书中例题数据。 """ return [[(3, 3), 1], [(4, 3), 1], [(1, 1), -1]]def UpDate(item): """ 更新参数w,b """ global w, b w[0] += item[1] * item[0][0] w[1] += item[1] * item[0][1] b[0] += item[1] passdef cal(item): """ 计算并返回yi(w*xi+b)的值 """ res = 0 for i in range(len(item[0])): res += w[i] * item[0][i] res += b[0] res *= item[1] return resdef check(data): """ 检查超平面是否可以正确地分类示例。 """ flag = False for item in data: print(item) if cal(item) <= 0 : flag = True UpDate(item) if flag == False: print( "RESULT: w: " + str(w) + " b: " + str(b)) return flagif __name__ == '__main__': traindata = SetDate() while check(traindata): pass
小结
References
[1] 统计学习方法 李航
阅读全文
0 0
- 【学习笔记】感知机(原始)
- 感知机学习算法的原始形式
- 感知机学习笔记
- 感知机(perceptron)学习算法的原始形式
- 神经网络学习笔记(五):感知机
- 统计学习笔记(二)感知机
- 机器学习笔记(四) 感知机
- 机器学习-感知机笔记
- 机器学习学习笔记3---感知机
- 神经网络学习笔记(九):多层感知机(上)
- 神经网络学习笔记(十一):多层感知机(下)
- 统计学习笔记(2)——感知机模型
- 统计学习笔记(2)——感知机模型
- 神经网络学习笔记(六):感知机收敛定理
- 统计学习方法笔记(二)感知机学习
- 统计学习笔记(2)——感知机模型
- 统计学习笔记(2)——感知机模型
- 机器学习笔记(2)——感知机
- C与C++动态内存分配
- Java面向对象的程序设计
- ubantu下mxnet版本更新
- mac上安装htop
- 【大数据】Impala-数据加载
- 【学习笔记】感知机(原始)
- Exception in thread "main" java.io.IOException: Error opening job jar: /apache_logs/cleaned.jar
- CF 652 C(思维好题) D(排序+BIT维护) E(边双联通分量+缩点).
- 请问如何在Android APP层获取Framework层中的鼠标位置信息。
- MyEclipse 新手使用教程---图文详解
- Java易错知识点
- yii2-DetailView
- Multimodal Deep Learning
- leetcode 151. Reverse Words in a String