用R实现一个简单的感知机

1. 感知机模型

定义:假设输入空间(特征空间)是 χRn ,输出空间是 Y={+1,1} 。输入 xX   表示实例的特征向量,对应于输入空间的点;输出 y∈Y  表示实例的类别。由输入空间到输出空间的如下函数 

f(x)=sign(wx+b)

称为感知机。其中, w b 为感知机模型参数, wRn 叫做权值, b∈R      叫做偏置, wx 表示 w x 的内积。 sign 为符号函数。                        

2.感知机学习算法

y i
y i y i
y i

输入:训练数据集 T={(x1,y1),(x2,y2),,(xN,yN)} ,其中 xiχ=Rn,yiY={+1,1},i=1,2,,N ;学习率 η(0<η1);  
输出: w,b ;感知机模型 f(x)=sign(wx+b)
(1)选取初值 w0,b0  
(2)在训练集中选取数据 (xi,yi)  
(3)如果 yi(wxi+b)0

yi
yi
w <- w + eta * y[i] * x[i,]
      b <- b + eta * y[i]

其中eta表示计算误差(实际值-计算输出值)yi
yieta
yi
yieta表示计算误差(实际值-计算输出值)

yiyiyiyiyi

(4)转至(2),直至训练集中没有误分类点。

yi
yi
yi
yi
percept <- function(data = data,eta = eta ){
  x <- data[,-3]
  y <- data[,3]
  w <- c(1,-1)
  b <- 0
  len <- length(y)
  i <- 1  
  while(i <= len){
    if(y[i] * (x[1]* w[1]+x[2]*w[2]  + b) <= 0){
      ## update w and b
      w[1] <- w[1] + eta  * x[1]
      w[2] <- w[2] + eta  * x[2]
      b <- b + eta
      i <- 1 ##important, for traversing every point
    }
    else{
      i <- i + 1 
    }
  }
  return(list(w=w,b=b))
}

yi
yi
yi
yi
data<-matrix(c(1 ,1 ,1 ),nrow = 1, ncol = 3,byrow=T)

yi
yi
yi
yi
> data
     [,1] [,2] [,3]
[1,]    1    1    1

说明一下数据含义,第一列代表颜色,1为红,-1为黄,第二列代表形状,1为圆形,-1为弯形,第三列为输出,代表水果的种类,1为苹果,-1为香蕉,本文中的感知器实现了简单的分辨香蕉与苹果的功能,该案例出自吴岸城编的神经网络与深度学习。

yi
yi percept(data,1)

yiyi
$w
[1] 2 0


$b
[1] 1

即输出了感知机的s函数:s=2*p1+1

这时我们来尝试判断一下香蕉:

s=2*-1+1=-1

sign(s)=-1

香蕉判断也正确,误差为0,学习结束

香蕉
ww+ηyixi bb+ηyi yiyi
y i
y i
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值