分类模型感知器学习算法(Perceptron Learning Algorithm, PLA)
PLA算法的一个简单应用场景:假设一家银行要根据顾客的资产、居住年限、未偿债务和其他数据字段来评估是否要给这名顾客发放信用卡,用y来表示是否批准或者(-1/1)。
现在已经知道了顾客的数据和y的结果,想要知道判断发放信用卡的公式,我们在这里选择的函数形式h(x)给x的不同坐标赋予了不同的权重,反映了它们在信贷决策中的相对重要性。然后将加权坐标合并形成信用评分,并将结果与阈值进行比较。如果申请人通过了门槛,信用证被批准;如果不通过,信用证被拒绝。
h(x)=+1表示“批准信用”,h(x)=-1表示“拒绝信用”;
知乎上一个关于PLA算法的通俗易懂的描述
以下求出权重的matlab代码
clear
load data
%%
tr_label=data(:,end)%取最后一列判断数据
tr_data=data(1:360,1:end-1);%输入 x 前360行的数据
tr_label=data(1:360,end);%标签y 前360的所有数据(包括判断)
[trnum,Dim]=size(tr_data);%trnum=360行 Dim=4列
w=ones(1,Dim+1);%x对应的权重 生成1*5的1矩阵 初始权重都是1
x=[ones(trnum,1) tr_data];%加上x0 输出第一列是1和前360行的数据矩阵
h=zeros(trnum,1);%sign函数的输出值 生成360*1个零矩阵用来存放数据
while 1% 求权重W=[w0,w1,,,wd]^T
for i=1:trnum %对所有个体循环
h(i,:)=sign(x(i,:)*w');%计算函数的输出值 1或者-1
if h(i,:)~=tr_label(i,:)%若函数的输出与真实值不符合
w=w+tr_label(i,:)*x(i,:);%对权重更新,再判断下一个个体(可以用上面链接内的向量解释)
end
end
if h==tr_label%循环直到所有行的函数输出与真实值相同
break
end
end
%此时的w是最优权重