最近在学机器学习,作为一个萌新,对机器学习的相关领域比较感兴趣,在看了相关的文章和书籍后,便想写点东西来记录一下自己的学习过程。本次写的是有关感知机模型和其学习算法,以及在python上的实践。作为咸鱼,python和机器学习尚未入门,文章和程序问题上的错误请大家多多指点!
一.感知机模型
感知机是二类分类的线性分类模型,输入的是实例的特征,输出为实例的标签。它通过分类超平面将输入空间中的实例划分成正负两类。正例的标签为+1,负例的标签为-1。感知机的学习策略是基于误分类的损失函数的优化,利用梯度下降法对损失函数进行极小化,调整模型参数,求得感知机模型。
1.定义
假设输入空间(特征空间)中x为n维空间,输出空间y={+1,-1},输入x表示实例的特征向量,对应于输入空间中的点。输出y表示市里的类别,由输入空间到输出空间的函数为:
f(x) = sign(w * x + b)
称为感知机。其中,w,b为感知机的模型参数。w是1*n的向量,称为权值向量。b为常数,称为偏置。sign为符号函数。
2.几何解释
线性方程 w * x + b = 0 对应于特征空间Rn的一个超平面S,其中w超平面的法向量,b是超平面的截距。超平面将特征空间划分为两部分,位于上部的点为正例,分布于下部的点表示负例。因此超平面S称为分类超平面。
利用训练集数据,求得W,b的值后就可以得到分类超平面。之后再利用分类模型来对测试数据进行预测。
3.学习机制
基于线性可分的假设上,感知器的模型是利用损失函数的最小化来实现对模型参数w,b的寻优的。
选择损失函数为:误分类点到超平面S的总距离。对于输入空间中的任意一点x0到超平面S的距离为:
|w * x0 + b| / || w ||
对于误分类的点总有:
yi * ( w * xi + b ) < 0
对于所有误分类点到超平面S的距离即为对上式的求和。
于是感知器的学习