【机器学习笔记二】----Learning to answer Yes or No(解决二分类问题)

perceptron hypothesis set

以信用卡发放为例,对顾客的相关特征信息进行收集,

数据集示例如下:

对每一个特征赋予一个权重,计算所有特征的加权,然后和已定义的阈值threshold进行比较,查看两者之间的大小关系

简化:将门槛值threshold转换为(w_{0}=-threshold,x_{0}=+1

二维平面中的感知器:每个h对应平面上的一条直线,每条线会有不同的预测,perceptrons<=>linear(binary) classifiers,所以对于同一个点,使用不同的直线会产生不同的预测结果。

Perceptron Learning Aigotithm(PLA) 感知器学习算法

设置演算法在hypothesis H 中选择最好的 g,达到理想的g(x_{n})=f(x_{n})=y_{n},但是困难的是H中hypothesis的个数无限,所以使用一个普通的直线基于数据集的错误分类不断进行修正。

扫描二维码关注公众号,回复: 3057597 查看本文章

使用权重向量w_{0}代表g_{0},设置所有的w都为0,对于给定的直线w_{t},找到使用此直线分类错误的点并使用公式w_{t+1}=w_{t}+y_{n(t)}x_{n(t)}进行修正,

实际y=+1,但分类为-1,即w和x的角度太大,使用w_{t+1}=w_{t}+x_{n(t)}

实际y=-1,但分类为+1,即w和x之间的角度太小,w_{t+1}=w_{t}-x_{n(t)}

一直循环,直到没有错误的分类点(知错能改)

怎样判断还有没有错误?cyclic PLA,例如从1-100,依次查看是否有错,有则修正,没有则继续

算法一定会停下吗?

(在对分类错误的点进行修正的时候,可能会使分类正确的点变成分类错误的点)

algorithmic:halt(no mistake)

Linear Separability 线性可分可以找到一条直线将其分类

假设是线性可分的情况,算法是否能停下来?

假设w_{f}为理想的直线,则\min_{n}y_{n}w_{f}^{T}x_{n}为最接近理想直线的线,则使用w_{f}存在对每一个点x_{n}

使用w_{f}^{T}w_{t}相乘,对于任何一个(x_{n(t)},y_{n(t)})\left (x_{n(t)},y_{n(t)} \right )w_{f}^{T}w_{t}內积会越来越大,角度越来越靠近,但是可能不是角度的关系,而是长度的关系。

w_{t}只有出错的时候才会更新。

查看更新向量的长度变化:向量的增长会有限

w_{0}=0开始,进行T次修正后,因为长度的增长会有限,而內积正规化后最大为1,所以w_{f}w_{t}会越来越接近,最终会停下来。

Non Separable Data

针对线性可分的情况,PLA为什么会停下来:

  • 1、因为线性可分则w_{f}w_{t}会越来越接近
  • 2、w_{t}的长度会缓慢增长 

PLA好处:实现简单,快速,可以工作在任何维度

PLA坏处:需要预先假设数据集是线性可分的,但是不能确定PLA需要多久能停下来

数据中可能有噪音,假设噪音很小,通常y_{n}=f(x_{n}),找到一条线使得在data上犯得错误最小

pocket algorithm

修正PLA算法使用保留口袋中最好的w,在修正时比较修正的直线和当前直线哪一个犯错少,使用犯错少的进行替代。

口袋算法比PLA相比较慢。

猜你喜欢

转载自blog.csdn.net/m0_38103546/article/details/82215220
今日推荐