统计学习方法(李航)--监督学习--感知机

感知机

  • 感知机是二类分类的线性分类模型,属于判别模型
  • 输入为实例的特征向量
  • 输出为实例的类别 ----> **{-1, +1} **
  • 感知机对应于特征空间(输入空间)中,将实例划分为正负两类的分离超平面
  • 损失函数---->梯度下降法----->损失函数极小化----->感知机模型
  • 感知机学习算法:原始形式对偶形式
  • 感知机于1957年由Rosenblatt提出,是神经网络与支持向量机的基础

一、感知机模型

  1. 定义
    在这里插入图片描述
  2. 模型的假设空间:定义在特征空间中的所有线性分类模型或线性分类器,即函数集合
  3. 几何解释
    • 线性方程:w ⋅ x + b = 0
    • 分离超平面S:将特征空间划分为正负两类;属于特征空间;w是超平面的法向量;b是超平面的截距
      在这里插入图片描述

二、感知机学习策略

  1. 数据集的线性可划分
    • 线性可划分数据集

      (1)对所有yi = +1的实例 i ,有w ⋅ x + b > 0
      (2)对所有yi = -1的实例 i ,有w ⋅ x + b < 0

    • 线性不可分数据集:上述条件不满足
  2. 感知机学习策略
    在这里插入图片描述

三、感知机学习算法----随机梯度下降法(SDG)

  1. 算法
    在这里插入图片描述
  2. 代码实现
import numpy as np


def perceptron(xi, yi):
    res, leaning_rate, b, w = [], 0.1, 0, np.array([0.5, 0.5])  # b:偏置项  w:x的权重
    # np.sign(np.dot(w, xi) + b)  # 激活函数,输出结果为{-1, +1}, -1为假, +1为真
    for i in range(len(yi)):
        if yi[i] * (np.dot(w, xi[i]) + b) <= 0:
            w += leaning_rate * yi[i] * xi[i]
            b += leaning_rate * yi[i]
    for j in range(len(xi)):
        y = np.sign(np.dot(w, xi[j]) + b)
        res.append(y)
    print(f"梯度下降后的权重:{w}, 梯度下降后的偏置项:{b}, 梯度下降后的输出值:{res}")

用上面的代码实现and运算

def AND():  # and运算
    x = np.array([[-1, -1], [-1, 1], [1, -1], [1, 1]])  # -1为假  1为真
    y = np.array([-1, -1, -1, 1])
    return [x, y]


perceptron(AND()[0], AND()[1])

运行结果
梯度下降后的权重:[0.5 0.5], 梯度下降后的偏置项:-0.2, 梯度下降后的输出值:[-1.0, -1.0, -1.0, 1.0]

四、书中关于感知机的参考文献

在这里插入图片描述

五、关于《统计学习方法》的作者

李航

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值