AI/Machine Learning

[Python] 머신러닝-11 점진적 학습을 위한 확률적 경사하강법 / 확률적 경사하강법이란?

Jeong Jeon
반응형

이번에는 새롭게 확률적 경사하강법을 공부해보려고 한다.

이것은 딥러닝에서도 중요하게 자리잡고있는 개념이기 때문에 헷깔리면 다시 한번 보도록 하자.

 

1). 데이터 불러오기

2). 훈련세트와 테스트 세트 구분하기

3). 스케일 변환

여기까지는 전과 동일하다

 

4). 경사하강법 분류용 클래스인 SGDCassifier를 사용한다.

  • loss = 'log' : 로지스틱 손실함수를 적용
  • max_iter = 훈련횟수지정

==> 결과 : 훈련세트와 테스트세트의 정확도가 낮게 나온것을 확인 할 수있다.

예측하건데, 우리가 지정한 10번의 훈련횟수가 적었을수 도있다.

 

그렇다면 우리가 훈련을 추가적으로 진행하고자하면, 다시 훈련을 처음부터 해야되는가 라는 생각이들것이다.

하지만 경사하강법은 점진적 학습이 가능하여 추가적으로 훈련을 시킬수 있다. (기존 훈련 그대로 유지)

 

자 그럼 추가로 학습을 시키는 코드를 작성해보자.

5). 추가 훈련

==> 결과 : 눈에 띄는 훈련 성과가 있는것을 확인할수있다. 확실히 10번한것보다 11번 한 훈련의 결과가 더좋은것을 확인 할 수 있다.

 

하지만 그렇다고 훈련을 무작정 많이 한다면 과대적합이 발생할 수 있다는점 기억해야한다.

 

그렇다면 우리는 몇번의 훈련을 지정해야 적절한 훈련양이 되는지 확인할 필요가 있다.

 

6). 에포크 => 적절한 수 알아보기

우선 점수가 어떻게 나오는지 파악하기 위해 에포크 100번을 반복해본다.

그리고 그 점수 배열을 통해 그래프를 그려본다.

그래프를 확인해 봤을때 일정 수준 도달하고 난뒤에 훈련세트와 테스트세트의 거리가 멀어지는것을 확인 할 수 있을것이다.

과대적합,과소적합 기억 해보면, 두 그래프가 가장 가까운 지점이 최적의 반복양이다.

그래프에 따르면 대략 100으로 볼수있다.

 

7). 훈련에 가장 적절한 횟수를 찾았으니 적용시켜 본다.

점수가 아주 잘나온다.

 

우선 여기까지 머신러닝을 공부하고 딥러닝으로 넘어가보려고한다.

머신러닝의 나머지 부분은 차후에 진행할 예정이다.

 

반응형