感知机问题学习算法引入:信用卡问题

根据已知数据(不同标准的人的信用评级)训练后得出一个能不能给新客户发放信用卡的评定结果

解决该问题的核心思想扔为之前所讲到的梯度下降算法,对于更多条件的类似问题,首先选取一个超平面w0,b0,然后用梯度下降算法不断极小化目标函数,使得此过程中随机一个有误分类点的梯度下降。

过程通过随机选取一个分类点,(xi,yi)依据该分类点对w b进行更新。

得出的这个函数f(x) = sign(w·x+b)就是感知机模型。

它的计目的就是找到一条直线,能够把正向数据与负向数据分开

那么如图1是一个明确我们所得出的一个比较好的直线,接下来我们需要找到一条更好的直线,将两种结果分开,那么经过多次迭代,就会得出图二中的直线。

算法原始形式如下:

输入:

  训练数据集T = {(x1,y1)……(xn,yn)}

  (xi为向量)

  学习率  η(0,1)

输出:

  w ,b

依据:

  感知机模型f(x) = sign(w·x+b)

感知机算法的执行步骤:

1)选取初值w0,b0

2)在训练集合中任意选取数据(xi,yi),其中yi为评判标准,即yi∈{+1,-1}

3)如果yi(w·xi+b) <= 0 则说明当前结果与目标结果相违背,更新w与b

w = w + ηyixi

b = b + ηyi

4)跳转到步骤(2)直到不存在误分点。

该过程图形化的描述如下:

该方法虽然简单,但并非所有情况下都是有解的

如图2 3的情况下该算法将一直运行,不会得到解。算法对于可分数据集的计算过程用C++语言描述如下:

#include<iostream>
using namespace std;
int main()
{
bool flag = true;
int x1[],x2[],num;
int type[];
int w1 = ,w2 = ,b = ,times = ;//times为迭代次数
cin>>num;
for(int i = ; i < num; i++)
{
cin >> x1[i] >> x2[i]>>type[i];
}
do
{
times++;
int t = ;
for(int i = ; i < num; i++)
{
if(type[i]*(w1*x1[i]+w2*x2[i]+b) <= )//判断是否被正确分类
{
flag = false;//如果没有正确分类,修改标志 w1 += type[i]*x1[i];//更新w
w2 += type[i]*x2[i];
b += type[i];
}
else t++;
}
if(t == num)
{
flag = true;
} }
while(!flag);
cout <<"w1:"<< w1 <<" w2:"<<w2<<" b:"<<b<<"times"<<times<<endl;
return ;
}

计算过程十分简单,其中说明对于未知的情况,即开始时候,w0 b0都初始化为0,之后将会迭代更新。

经过证明该算法是具有收敛性的,

并且可以得出,对于(R²为最大向量长度,ρ为目标直线的法向量与每个点的內积判断方向yn中的最小的)

可以得出计算次数k <= 

另外需要注意,对于可分训练数据集,选取点的次序不同,得出的解也就不同,但是这些都是感知机学习算法的解。

【机器学习】感知机学习算法(PLA)的更多相关文章

  1. 感知机学习算法(PLA)

    Perception Learning Algorithm, PLA 1.感知机 感知机是一种线性分类模型,属于判别模型. 感知机模型给出了由输入空间到输出空间的映射: f(X) = sign(WTX ...

  2. 感知机学习算法 python实现

    参考李航<统计学习方法> 一开始的感知机章节,看着不太复杂就实现一下... """ 感知机学习算法的原始形式 例2.1 """ ...

  3. 感知机学习算法Java实现

    感知机学习算法Java实现. Perceptron类用于实现感知机, 其中的perceptronOriginal()方法用于实现感知机学习算法的原始形式: perceptronAnother()方法用 ...

  4. 吴裕雄 python 机器学习——人工神经网络感知机学习算法的应用

    import numpy as np from matplotlib import pyplot as plt from sklearn import neighbors, datasets from ...

  5. 利用Python实现一个感知机学习算法

    本文主要参考英文教材Python Machine Learning第二章.pdf文档下载链接: https://pan.baidu.com/s/1nuS07Qp 密码: gcb9. 本文主要内容包括利 ...

  6. 机器学习理论基础学习3.1--- Linear classification 线性分类之感知机PLA(Percetron Learning Algorithm)

    一.感知机(Perception) 1.1 原理: 感知机是二分类的线性模型,其输入是实例的特征向量,输出的是事例的类别,分别是+1和-1,属于判别模型. 假设训练数据集是线性可分的,感知机学习的目标 ...

  7. 机器学习&深度学习基础(机器学习基础的算法概述及代码)

    参考:机器学习&深度学习算法及代码实现 Python3机器学习 传统机器学习算法 决策树.K邻近算法.支持向量机.朴素贝叶斯.神经网络.Logistic回归算法,聚类等. 一.机器学习算法及代 ...

  8. 机器学习&深度学习基础(目录)

    从业这么久了,做了很多项目,一直对机器学习的基础课程鄙视已久,现在回头看来,系统的基础知识整理对我现在思路的整理很有利,写完这个基础篇,开始把AI+cv的也总结完,然后把这么多年做的项目再写好总结. ...

  9. 机器学习&深度学习基础(tensorflow版本实现的算法概述0)

    tensorflow集成和实现了各种机器学习基础的算法,可以直接调用. 代码集:https://github.com/ageron/handson-ml 监督学习 1)决策树(Decision Tre ...

随机推荐

  1. jxls2 java.lang.NegativeArraySizeException

    某个单元格使用jx:each报这个错误. 内部代码,创建一个二维数组时,传了一个负值进去 解决办法 将这个单元格删除,重新编写批注

  2. CentOS 查看进程状态

    Linux中ps与top命令   ============================================================================ 这两个命令都 ...

  3. white-space和word-wrap和word-break所表示的换行和不换行的区别

    一.前言 使得文本换行有很多方式, <br/>标签元素,能够强制使得所在位置文本换行 <p>元素,<div>设定宽度,都可以对文本内容实现自适应换行 对于长单词或者 ...

  4. 打印信息,通过.jasper工具将集合输出到PDF文件 然后利用打印机打印文件

    我们上一次成功的利用iReport工具制作了一张报表,并且预览了报表最后的效果,也生成了格式为“jrpxml”.“jrxml”与“jasper”的文件.这次,我们使用jasper提供的java的api ...

  5. P3796 【模板】AC自动机(加强版)

    P3796 [模板]AC自动机(加强版) https://www.luogu.org/problemnew/show/P3796 题目描述 有NN个由小写字母组成的模式串以及一个文本串TT.每个模式串 ...

  6. 如何禁止chrome自动跳转https

    请在chrome的地址栏输入: chrome://net-internals/#hsts 在打开的页面中, Delete domain 栏的输入框中输入:xx.xx.com(注意这里是二级域名),然后 ...

  7. centos下安装&&配置redis

    一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...

  8. bbs项目实现点赞和评论的功能

    一.点赞功能 思路是这样的: 1.对点赞和踩都设置一个相同的class,然后对这个class绑定点击事件 2.点击触发ajax请求,我们对赞的标签设置了一个class属性,对踩的标签没有设置这个cla ...

  9. jsp选项过长自动换行

    自动换行前是这样的 从源码发现“打发的所发生的7”所在span跨行了,宽度为整行的宽度,不再是自身的实际宽度(一列时所占的宽度) 我的思路是要把这个换行元素前加上<br/>,使得该元素换行 ...

  10. jsp页面\n换行替换

    1,js替换 var text= $(this).text(); var reg = new RegExp("\\n","g");//g,表示全部替换. tex ...