模式識別1 線性分類器(感知機)

2021-08-09 19:29:32 字數 2895 閱讀 1007

1.1:感知機演算法原理

首先明確,感知機的輸入和輸出,輸入就是一組向量,每個向量都有n個特徵值,輸出為每個向量的所屬類別,對於二分類而言,就是+1和-1.

這個可以用sign函式來模擬:

輸入空間到輸出空間的函式為:f(x) = sign(w*x +b);

函式理解:w,b為感知機模型引數,w是乙個權重向量,b是偏置,w*x是內積,sign是符號函式,當w*x+b>0時候,函式輸出為+1,當w*x+b<0時候,函式輸出為-1.

然後,感知機是乙個線性分類模型,屬於一種判別模型。

感知機有乙個分類面:w*x +b =0 ,這是對應特徵空間的乙個超平面s,w為這個超平面的法向量,b是這個超平面的截距,這個超平面將特徵空間分為兩半,每一邊代表一類。

在感知機演算法程式設計中,首先要初始化w和b,然後使用誤分點來驅動超平面,進行引數跟新。

當乙個x(i)被錯誤分類的時候,通過下面公式來修正:

w=w+l*y(i)*x(i)

b = b+l*y(i)(l是學習的步長)

進行w和b的更新。

matlab**實現:

clear all;

close all;

n1=440;

fori=1:n1

x(1,i)=-1.7+1.1*randn(1); % 440 samples normal distribution

x(2,i)= 1.6+0.9*randn(1);

x(3,i)= 1;

end;

n2=400;

fori=1:n2

y(1,i)= 1.3+1.0*randn(1); % 400 samples normal distriburion

y(2,i)=-1.5+0.8*randn(1);

y(3,i)= 1;

end;

% %

% plot(x1(1,:),x1(2,:),'*',x2(1,:),x2(2,:),'o');%paint these point int 2-d

% grid on;

% axis equal;

% axis([-5 5 -5 5 ]);

x1 =x;

x2 =y;

plot(x1(1,:),x1(2,:),'r*',x2(1,:),x2(2,:),'b*');

hold on;

%樣本的分類值1和-1

y1 = ones(1,440);

y2 = -ones(1,400);

% x = [x1 x2];

% y = [y1 y2];

%最後乙個w的元素是為了增廣矩陣的維度

w =[rand(1),rand(1),rand(1)];

b=0;

step =0.001;

count=0;

count1 =0;

count2 =0;

tic;

forj =1:100

fori=1:size(x1,2)%迴圈x1,迭代更新修正w的權重值

x = x1(:,i);

if(w*x <0)

w =w +step * x;

count = count + 1;

end;

end;

fori = 1:size(x2,2)%迴圈x2,迭代更新,修正w的權重值

x = x2(:,i);

if(w*x >0)

w =w -step * x;

count = count +1;

end;

end;

end;

y = min(x1(1,:)):max(x2(1,:));

x = (-w(1)*t1-w(3))/w(2);

plot(x1(1,:),x1(2,:),'r*',x2(1,:),x2(2,:),'bo',y,x,'g');%畫出y——x的決策平面

time = toc

注意:**中使用的是增廣矩陣的運算方法。直接吧y=wx+b,變為了y = wx;

下面的**是分別跟新w和b,可以分別理解一下。本人也是理解了一下,不過還需要時間消化。

% tic;

% for j = 1:100

% for i=1:size(x,2)

%% panbie = y(i)*(w*x(:,i) + b);

% if (sign(panbie) >=1)

% count =count+1;

% else

%% w = w+step*y(i)*x(:,i)';

%% b =b+ step*y(i);

% count1 = count1+1;%%

% end

%% end

%% if (count >= size(x,2))

% break;

% end

% count =0;

% count2 = count2 + 1;

%% end

%% u1 =min(x(1,:)):max(x(1,:));

% u2 = -( (w(1)/w(2))*u1 +b/w(2) );

%% w

% b%

% count1

% count2

% time1 = toc

% plot(u1,u2,'g');

% hold off

%

模式識別(三)非線性分類器

遇到像圖1中所示的樣本分類,線性方法是無法發揮作用的。因為塔是線性不可分的,這時候必須採用非線性方法。多層感知器包含乙個以上隱層和乙個輸出層,隱層將輸入對映到乙個超立方體頂點,輸出層完成線性分類。通過隱層不斷對映,最終可以將樣本對映為線性可分。隱層中每個神經元相當於乙個超平面,超平面將樣本點對映到超...

模式識別 感知器 Perceptron

線性可分 在特徵空間中可以用乙個線性分介面正確無誤地分開兩 類樣本 採用增廣樣本向量,即存 在合適的增廣權向量 a 使得 則稱樣本是線性可分的。如下圖中左圖線性可分,右圖不可分。所有滿足條件的權向量稱為解向量。權值空間中所有解向量組成的區域稱為解區。通常對解區限制 引入餘量b,要求解向量滿足 使解更...

模式識別分類

摘自 模式識別導論 齊敏,李大健,郝重陽,清華大學出版社,2009.按照理論分類 統計模式識別 是定量描述的識別方法。以模式集在特徵空間中分布的類概率密度函式為基礎,對總體特徵進行研究,包括判別函式法和聚類分析法。是模式分類的經典型和基礎性技術,歷史最長,目前仍是模式識別的主要理論。句法模式識別 也...