感知机学习总结

总述

感知机是一种线性二分类模型,它属于判别模型。感知机学习旨在求出将训练集进行线性划分的超平面。损失函数采用误分类的损失函数,使用梯度下降算法进行对损失函数最小化。感知机是神经网络与SVM的基础。
刚刚提到判别模型,什么是判别模型?

判别模型&生成模型

判别模型:由数据直接学习决策函数 f(X) 或者条件概率分布 P(Y|X) 作为预测的模型。判别模型关系的是对于给定的输入X,应当预测什么样的Y。判别模型包括:k近邻、感知机、决策树,逻辑回归、最大熵模型、SVM、提升方法、条件随机场

生成模型:由数据学习联合概率分布 P(X,Y) ,然后求出条件概率分布 P(Y|X) 作为预测的模型。生成模型有:朴素贝叶斯、隐马尔科夫模型。

例题实现

正例:(3,3),(4,3)
负例:(1,1)

#coding:utf-8
import numpy as np

#输入数据
X = np.array([[3,3],[4,3],[1,1]])
Y = np.array([1,1,-1])

alpha = 1  #学习率
W = np.array([0,0])   #初始化权重
b = np.array([0])     #初始化偏置
length = len(X)
flag = 0
while True:
    for i in range(length):
        flag = 1
        if ((np.dot(W,X[i].T)+b)*Y[i])<=0:
            W = W+alpha*Y[i]*X[i]   #梯度下降进行更新权重
            b = b+alpha*Y[i]
            # print "W",W
            # print "b",b
            flag = 0
    if flag==1:
        break   #直到所有的样本点均满足条件
print "W",W
print "b",b
>>>
W [1 1]
b [-3]

得到分离超平面: x(1)+x(2)3=0
得到的感知机模型为: f(x)=sign(x(1)+x(2)3)
其中, x(1) 表示特征的第一个值, x(2) 表示特征的第二个值

注意

1、感知机学习有两种形式,一个是原始形式,如上例题,还有一种是对偶形式。
2、当训练集是线性可分的,感知机学习算法的迭代是收敛的,经过有限次搜索就可以找到分离超平面。
3、当训练集线性不可分时,感知机学习算法不收敛。
4、当训练集线性可分时,感知机学习算法存在无穷多个解。解由于初值不同或者迭代顺序不同而有所不同。

参考:统计学习方法–李航

猜你喜欢

转载自blog.csdn.net/liushui94/article/details/78513478