【matlab】機器學習線性分類和隨機梯度下降

讓我們直接從代碼開始,下面開始分佈講解
【注】想要mnist請回復博主


% z=+1,-1;
% result=-0.3;負類 -1  分對了   +1 分錯了 y*result>0
%        =0.4;正類 +1  分對了   -1 分錯了

% z*(w'*x)=z*w'*x=w'*z*x=w'*y
    
%w1*x1+w2*x2+w3=0;
%w'*x+b=0;
%w'x=0;
% (x1,x2,1)
% (w1,w2,w3)

data=randn(2,40);
data(:,21:40)=data(:,21:40)+5;

 scatter(data(1,1:20),data(2,1:20),'*');
    hold on;
scatter(data(1,21:40),data(2,21:40),'+');
    hold on;
 

w=randn(3,1);
data(3,:)=ones(1,40);
z=ones(1,40);
z(21:40)=-1;
for i=1:40
    data(:,i)=data(:,i).*z(i);
end 

for i=1:40
    result1(:,i)=w'*data(:,i);
end 

for s=1:1000
for i=1:40
    result1(:,i)=w'*data(:,i);
end 
dydx=zeros(3,1);

for i=1:40
    if(result1(:,i)<=0)
        dydx=dydx+data(:,i);
    end
end
dydx=-1.*dydx;

amda=1;
w=w-amda.*dydx;
end



%x2=-(w1*x1+w3)/w2;
%w1=randn(1,1);
%w2=randn(1,1);
%w3=randn(1,1);

%w(1)*x(1)+w(2)*x(2)+b=0
%w'x+b=0;
w=randn(2,1);
b=randn(1,1);
%w=randn(784,1);

b=randn(10,1);
w=randn(784,10); 
for i=1:60000
    results(:,i)=w'.*trdata(:,i)+b;
end

[maxv,indexv]=max(results);


%w1*x1+w2*x2+...+w784*x784+w785=0;

%data(1,1)*w1+data(2,1)*w2+w3

for i=1:40
   result(i)=w'*data(:,i)+b;
end
%x2=-(w1*x1+w3)/w2;
x1=[-4,8];
x2=-1.*(w(1).*x1+w(3))./w(2);
plot(x1,x2);

%data(2,1)


for i=21:40
    scatter(data(1,i),data(2,i),'+');
    hold on;
end

在這裏插入圖片描述
首先我們先畫出一幅散點圖,這樣我們好進行下面的分類
在這裏插入圖片描述
有了散點圖之後,我們再自己畫線
在這裏插入圖片描述
w1 w2 w3是三個線性係數,這裏不再贅述
在這裏插入圖片描述
這裏,我們換成向量的形式,784=28*28在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
上述的向量都是是列向量
在這裏插入圖片描述
接下來我們考慮,如果要分類類型多的時候,盲區存在,改怎麼處理

解決方法就是,max勝出原則,代入後,更大的勝出

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
考慮784是個超平面,不好畫出、描繪出來
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
升維
在這裏插入圖片描述
在這裏插入圖片描述
然後,沒有b了
在這裏插入圖片描述
在這裏插入圖片描述
大於零分對了 小於零分錯了

在這裏插入圖片描述
w和最小錯分數是階梯函數,這樣不好優化,我們就鬆弛他
在這裏插入圖片描述
鬆弛後,更加平滑
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
由此我們考慮梯度下降法
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章