(注:笔者仍处于学习阶段,博客也是刚开始写,如有任何问题欢迎指正!)
0. 机器学习简述
机器学习的目的是通过假设函数g去近似目标函数f的过程。用一张图表示就是:
- 目标函数f:从特征向量
X 映射到标签y的函数。 - 训练集
D :一共有N个样本(我更喜欢用m表示样本数量),每个样本的X 特征,y为标签。 - 学习算法
A :机器学习要做的部分,训练假设函数g近似目标函数f。 - 假设函数
g :我们通过机器学习训练出的函数。
1. 线性分类器
简单地说,线性分类器就是我们训练出来的假设函数g是线性的。
or 矩阵写法
两个式子表示的意思是一样的,其中
2. 感知器学习算法:简称PLA (Perception Learning Algorithm)
前提假设:样本是线性可分的,什么是线性可分下面会讲到。
2.1 算法
形象的说这一算法就叫知错能改算法,哪个样本错分类了,就去纠正
2.2 纠正方法
纠正过程中分两种情况:
(1)y是正的,分类器把它归为负的了。这时
(2)y是负的,分类器把它归为正的了。这时
2.3 例子
初始化:
updata1:找到一个错误向量
重复上一步骤直到第9步时将样本正确分类。
2.4 线性可分的概念
前面说到PLA算法必须在样本是线性可分的情况下使用,那什么是线性可分呢?
如果数据的特征是二维的情况
图中的点就是所谓的样本,“O”和“X”就是样本的类别,直线就是线性分类器。如果我们能找到一条直线将“O”样本和“X”样本分离开来,那么我们就称这些样本线性可分。
换句话说,就是
2.5 验证算法T次迭代后的结果
最后我们需要证明得到的结果确实能够逼近理想分类器,不然瞎折腾什么呢。评价两个向量的相关性,我们通常对这两个向量的单位向量做内积,即
若该值越接近1,那么两个向量越相关。
我们进行一系列的推导证明这一算法在满足样本线性可分时,能达到逼近理想分类器
2.6 算法评估
- 优点:算法简单,速度快,任意维度下均可使用。
- 确定:1. 需要假设样本是线性可分的。2. 我们不知道需要循环多少次。
那么如果样本存在噪声不是线性可分的怎么办呢,没关系,PLA算法存在一种变形形式,我们称之为Pocket Algorhitm。
3. Pocket Algorithm
这一算法用的是贪心算法的思想,每一次随机选择一个错分类样本,并通过PLA的思想进行纠正他,然后判断新的分类器错分类数量是否比原先少,如果是那就说明新的分类器更加棒啦。通常情况下这一算法需要我们制定一个终止条件,比如多少次迭代之后或者说错分类数少于一个阈值等等。由于这一算法需要比较错分类的样本数,这需要一个遍历过程,因此Pocket Algorithm要比PLA慢许多。