본문 바로가기
DATA Science/Python Machine Learning 2nd ed.

퍼셉트론 학습 알고리즘 구현

by Rainbound-IT 2021. 6. 3.
반응형

객체 지향 퍼셉트론 API

객체 지향 방식을 사용한 퍼셉트론 인터페이스를 가진 파이썬 클래스를 만들어보자!

perceptron 객체를 초기화한 후 fit 메서드로 데이터에서 학습하고 별도의 predict 메서드 로 예측을 만든다.

 

rgen은 넘파이 난수 생성기로 사용자가 지정한 랜덤 시드로 이전과 동일한 결과를 얻을수 있다고 한다.

 

가중치가 0으로 초기화 되어 있다면 학습률 파라미터 eta는 가중치 벡터의 방향이 아니라 크기에만 영향을 미친다.

 

fit 메서드는 가중치를 초기화한 후 훈련 세트에 있는 모든 개개의 샘플을 반복 순회하면서 이전절에서 설명한 퍼셉트론 학습규칙에 따라 가중치를 업데이트 한다.

 

 

a.dot(b)나 np.dot(a,b)처럼 넘파이를 사용하여 배열 a,b 사이의 백터 점곱을 대신
파이썬만 사용하여 sum([i * j for i, j in zip(a,b)]) 처럼 계산할 수있다. (넘파이를 쓰니까 간단!)
백터화(vectorization)는 원소별 산술 연산이 자동으로 배열의 모든 원소에 적용된다는 것을 의미한다.

SIMD(Single Instruction, Multiple Data) : 한 번에 원소 하나씩 연산을 차례로 수행하는 것이 아니라 하나의 산술연산을 배열에 대한 연속적인 명령으로 구성하는것 - 최근 cpu의 병렬연산을 활용하는것

넘파이는 BLAS, LAPACK 같은 고도로 최적화된 선형 대수 라이브러리를 사용한다.

 

붓꽃 데이터셋에서 퍼셉트론 훈련

붓꽃 데이터셋에서 Setosa와 Versicolor 두개의 클래스만 사용해서 구현해보자

(시각화를 위해 꽃받침 길이와 꽃잎 길이만 고려하자)

붓꽃 데이터셋
붓꽃데이터의 산점도

꽃받침 길이와 꽃잎 길이 두개의 특성 축을 따라 분포된 형태를 보여준다.

이제 이것을 퍼셉트론 같은 선형분류기에 넣어 분류해보자.

퍼셉트론의 에포크 대비 오차

위 그림에서 보면 여섯번째 epch 이후 수렴하고 샘플을 완벽하게 분류했다.

함수를 만들어 2차원 데이터 셋의 결정 경계를 시각화해 보자.

 

2차원 데이터셋의 결정 경계 시각화
결정경계 표현

잘 구분이 된다. 

반응형

'DATA Science > Python Machine Learning 2nd ed.' 카테고리의 다른 글

적응형 선형뉴런과 학습의 수렴  (0) 2021.06.10
간단한 분류/ 알고리즘 훈련!  (0) 2021.05.29
개요  (0) 2021.05.25

댓글