天天看點

matlab實作PLA算法

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

繼續閱讀