
#1




Problem with simple perceptron implmenetation
So I wanted to do a little bit of experimenting with the perceptron algorithm to understand it better and I came up with a simple match making scenario. Essentially i have a 100x2 training data matrix with the first feature being height between 165 and 185 and the second feature is weight (as in physical weight of a person ) between 60 and 80. My target function is a very simple one :
Code:
function [res] = target(X) m = size(X, 1); res = zeros(100, 1); for j = 1:length(X) if(X(j,1) > 170 && X(j,2) > 65) res(j) = 1; else res(j) = 1; end end end The next logical step is to learn a hypothesis function g(X) which would act much in the same way as the target function  which I assume is unknown. So here is my implementation of the perceptron: Code:
function [w] = perceptron(X, y) X = [ones(size(X, 1), 1) X]; % add the bias term w = zeros(size(X, 2), 1); %init weights to zero m = length(y); iterations = 0; wrong = 0; while(true) iterations = iterations + 1; wrong = 0; for j = 1:m if (sign(X(j, :) * w) != y(j)) w = w + (y(j)*X(j, :))'; wrong = 1; break; endif end %inner for if(wrong == 0) break; endif end %outer loop end %function 
#2




Re: Problem with simple perceptron implmenetation
I haven't looked at your implementation of the perceptron; however, I think there will be a problem with convergence regardless of the implementation since the target function is not linearly separable.

#3




Re: Problem with simple perceptron implmenetation
I think you are mistaken. It is linearly separable since the 170/65 act as the threshold i.e. that's where the linear separation occurs.

#4




Re: Problem with simple perceptron implmenetation
The function, height > 170 and weight > 65, is not linearly separable because it does not bisect the plane but instead defines an infinite rectangular region on the plane. There is no single line that separates this region from the rest of the plane.

#5




Re: Problem with simple perceptron implmenetation
John is right. It can't be fit with a linear line. This is what I get with your data (the points are randomly chosen and sorry for not including the axis, legends and labels)
So it isn't a straight line. So it can't converge with a simple 1D perceptron 
#6




Re: Problem with simple perceptron implmenetation
Thanks for the answers. So if I have understood you correctly in this case I will need to train 2 perceptrons  one for each feature and then when a new sample is given run each of the perceptrons for height/weight and my final hypothesis would return 1 only if the 2 perceptrons return 1 on each respective feature? Is this correct?

Tags 
perceptron, pla 
Thread Tools  
Display Modes  

