티스토리 뷰

Perceptron Algorithm

 - Perceptron Trick에 대해 이미 배웠으므로 퍼셉트론 알고리즘을 구현할 준비가 다 되었다.

 - 임의의 경계선을 그었을때 점 4개는 good, 점 2개는 come closer의 상황에 놓이게 된다.




 - 우측에 놓인 mis-point에 맞춰 경계선을 수정하였다. 

 - 이번엔 좌측만이 mis-point로 남게 된다.

 - 마찬가지로 좌측에 놓인 mis-point에 맞춰 perceptron-trick에 의거, 경계선을 수정해주면

 - 모든 점들이 correct한 상태로 놓이게 된다.






 - 이 알고리즘의 pseudo code를 작성해보자면, 

 - 가장먼저 랜덤한 weights를 가진 경계선으로 시작한다. (Wx + b)

 - 그다음 잘못 분류된 점들에 대해 좌표값을 얻어두고, (x1, ... , xn)


 - 만약 prediction이 0 인 경우 (즉, Positive-point 인데, Negative-area에 위치한 경우)

 - i는 1부터 n까지 가중치(weights) Wi를 Wi + a*xi로 변경시켜줌

 - 마찬가지로 bias에 해당하는 b를 b + a로 변경시켜준다.


 - 만약 prediction이 1 인 경우 (즉, Negative-point 인데, Positive-area에 위치한 경우)

 - i 는 1부터 n까지 가중치(weights) Wi를 Wi - a*xi로 변경시켜줌

 - 마찬가지로 bias에 해당하는 b를 b - a로 변경시켜준다.


 - 위의 과정을 에러가 없을때까지 반복하면 된다.

- 또는 없을 수 없다면 가장 적은 수의 에러 까지 반복한다.

 - 또는 그냥 간단하게 한 1000번 정도 반복해라 라고 얘기해주면 된다.






Coding the Perceptron Algorithm

 - 각 점들은 (p, q)

 - label : y

 - prediction : yHat

 - yHat = step(w1x1 + w2x2 + b)

 - 만약 점이 올바르게 분류되어있으면 아무것도 안함.

 - 만약 점이 positive로 분류되어있는데, negative label이라면 (w1, w2, b)에서 각각 (a*p, a*q, a*1)를 빼준다(subtract).

 - 만약 점이 negative로 분류되어있는데, positive label이라면 (w1, w2, b)에서 각각 (a*p, a*q, a*1)를 더해준다(add).


perceptron.py

data.csv

solution.py


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함