HyeM

[Do it] 3-1|3-2_선형회귀, 경사하강법 본문

Study/AI&DeepLearning

[Do it] 3-1|3-2_선형회귀, 경사하강법

Hailey_HyeM207 2021. 3. 29. 14:12

#1. 선형회귀

입력 데이터 x와 타깃 데이터y를 통해 기울기와 절편을 찾는것

 

 

#1-1. 데이터 셋  활용하기

사이킷런과 케라스에서 다양한 데이터 세트 제공

이 실습에서는 사이킷런 활용

 

1. 데이터 준비하기 & 입력과 타깃 데이터의 크기 확인하기 

diabetes에는 data와 target 속성이 있음 

- data : 442행, 10개 행 -> sample(당뇨병 환자에 대한 특성으로 이루어진 데이터 1세트

- target : 442행 

 

 

 

2. 1개의 특성(세번째 특성)과 타깃 데이터간 산점도 그리기

matplotlib의 scatter 함수

3. 훈련 데이터 준비하기

이후 실습을 위하여 데이터 준비함.

 

 

#2. 경사 하강법 

모델이 데이터를 잘 표현할 수 있도록 기울기를 사용하여 모델을 조금씩 조정하는 최적화 알고리즘

 

y^ = wx + b

 

w : 가중치 (알고리즘이 찾은 규칙)

b : 절편 (알고리즘이 찾은 규칙)

y^ : (와이 햇) 우리가 예측한 값

 

목표 : 훈련 데이터 (x, y)에 잘 맞는 w와 b 구하기

 

#2-1. 예측값

출력 데이터(x, y)를 통해 규칙(a, b)를 발견한 모델을 만들어, 새로운 입력값 넣어 나온 결과값

 

#2-2. 훈련 데이터에 맞는 w와 b 찾아보기

  1. w와 b를 무작위로 초기화
  2. 훈련 데이터의 첫번재 샘플 데이터로 y^(예측값) 얻기
  3. 타깃과 예측 데이터(y^) 비교하기
  4. w값 조절해 예측값 바꾸기 _ ex. w 증가시키고 y^ 변화량 확인해보기
  5. w값 조정한 후 예측값(y^) 증가 정도 확인하기 (변화율)

w_rate = x[0]

==> 변화율은 데이터의 첫번째 샘플인 x[0]이다.

 

#2-3-(1). 변화율(w_rate)로 가중치(w) 업데이트 

- 변화율이 양수일 때, 가중치 업데이트 하는 방법 : 변화율을 w에 더하는 방법 ; w + w_rate

- 변화율이 음수일 때, 가중치 업데이트 하는 방법 : 변화율을 w에 더하는 방법 ; w + w_rate

=> 두 경우 모두 w + w_rate

 

#2-3-(2). 변화율로 절편(b) 업데이트

1차 함수라 절편 b가 1만큼 증가하면, y^도 1만큼 증가한다.

 

 

 

 

#3. 오차 역전파

y^과 y의 차이를 이용하여 w와 b를 업데이트 함

 

- 가중치와 절편을 적절하게 업데이트 하는 방법

1. x[0]일때 오차와 변화율을 곱하여 가중치 업데이트

2. 두번째 샘플로 오차를 구하고,새로운 w,b로 업데이트

 

3. 모든 전체 샘플을 반복하여, w,b 업데이트 

for문

w,b를 사용한 직선을 그려, 그래프로 확인

 

4. 여러 에포크 반복하여 학습 여러번 반복

이중 for문 

w,b를 사용한 직선을 그려, 그래프로 확인

 

=> y^ = 913.6x + 123.4

 

5. 모델로 예측하기 

 

 

 

|| 위 게시물은 'Do it! 딥러닝 입문' 책을 참고한 글입니다. ||

Comments