分類模型感覺器學習算法(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是最優權重