[혼자 공부하는 머신러닝 + 딥러닝] 7강_사이킷런으로 선형 회귀 모델 만들어 보기

7강_사이킷런으로 선형 회귀 모델 만들어 보기


k-최근접 이웃의 한계

  • 훈련 세트 범위 밖의 샘플을 예측할 수 없음. 
    • k-최근접 이웃 회귀는 아무리 멀리 떨어져 있더라도 무조건 가장 가까운 샘플의 타깃을 평균하여 예측하기 때문
  • 머신러닝 모델은 주기적으로 훈련해야 함
    • 한 번 만들고 끝나는 프로그램이 아님 
    • 시간과 환경이 변화하면서 데이터도 바뀌기 때문에 주기적으로 새로운 훈련 데이터로 모델을 다시 훈련해야 함. (예를 들어 배달 음식이 도착하는 시간을 예측하는 모델은 배달원이 바뀌거나 도로 환경이 변할 수 있기때문)

- 사이킷런 모델 클래스들은 훈련, 평가, 예측하는 메서드 이름이 모두 동일함 (fit(), score(), predict() 메서드)



선형회귀

  • 널리 사용되는 회귀 알고리즘
  • 비교적 간단하고 성능 뛰어남 -> 맨 처음 배우는 머신러닝 알고리즘 중 하나
  • 직선 학습 알고리즘 (특성 잘 나타낼수있는 직선)



-  coef_ 속성 이름에서 알 수 있듯이 머신러닝에서 기울기를 종종 계수(coefficient) 또는 가중치(weight)라고 부름

- coef_ 와 intercept_ 를 머신러닝 알고리즘이 찾은 값이라는 의미로 모델 파라미터(model parameter)라고 부름. 

- 많은 머신러닝 훈련 과정은 최적의 모델 파라미터를 찾는것과 같음 (모델 기반 학습)

- k-최근접 이웃에는 모델 파라미터가 없음. 훈련 세트를 저장하는것이 훈련의 전부 (사례 기반 학습)


다항 회귀

  • 다항식을 사용한 선형 회귀
  • 2차 방정식의 그래프를 그리려면 길이를 제곱한 항이 훈련 세트에 추가되어야 함.(넘파이 column_stack() 사용)



선형 회귀로 훈련 세트 범위 밖의 샘플 예측

  • k-최근접 이웃 회귀의 문제(한계)를 해결하기 위해 선형 회귀를 사용
  • 선형회귀
    • 훈련 세트에 잘 맞는 직선의 방정식을 찾는 것.
    • 사이킷런의 LinearRegression 클래스 사용 ( 이웃과 동일한 방식으로 모델 훈련하고 예측에 사용할 수 있음 )
  • 가장 잘 맞는 직선의 방정식을 찾는다는 것 = 최적의 기울기와 절편을 구한다는 의미
    • 선형 회귀 모델의 coef_와 intercept_ 속성에 저장되어 있음
  • 선형 회귀 모델은 훈련 세트를 벗어난 범위의 데이터도 잘 예측했음. 하지만 모델이 단순하여 농어의 무게가 음수일 수도 있다는 문제가 있음
  • 이를 해결하기 위해 다항 회귀 사용
    • 데이터를 제곱하여 훈련 세트에 추가한 다음 선형 회귀 모델을 다시 훈련했음.
    • 2차 방정식의 그래프 형태 학습, 훈련 세트가 분포된 형태를 잘 표현
    • 성능 높아짐
    • 하지만 과소적합된 경향이 아직 있음 (복잡한 모델로 문제 해결) 
    

키워드로 끝내는 핵심 포인트 

  • 선형 회귀 
    • 선형 회귀는 특성과 타깃 사이의 관계를 가장 잘 나타내는 선형 방정식을 찾음. 
    • 특성이 하나면 직선 방정식이 됨
  • 계수 or 가중치
    • 선형 회귀가 찾은 특성과 타깃 사이의 관계는 선형 방정식의 계수 또는 가중치에 저장됨. 
    • 머신러닝에서 종종 가중치는 방정식의 기울기와 절편을 모두 의미하는 경우가 많음. 
  • 모델 파라미터
    • 선형 회귀가 찾은 가중치처럼 머신러닝 모델이 특성에서 학습한 파라미터.
  • 다항 회귀
    • 다항식을 사용하여 특성과 타깃 사이의 관계를 나타냄
    • 이 함수는 비선형일 수 있지만 여전히 선형 회귀로 표현할 수 있음. 


핵심 패키지와 함수

  • scikit-learn
    • LinearRegression
      • 사이킷런의 선형 회귀 클래스


확인문제

  • 선형 회귀 모델이 찾은 방적식의 계수를 무엇이라고 부르나요?
  • 사이킷런에서 다항 회귀 모델을 훈련할 수 있는 클래스는 무엇인가요?



댓글

이 블로그의 인기 게시물

[혼자 공부하는 머신러닝 + 딥러닝] 17강_인공 신경망: 간단한 인공 신경망 모델 만들기

[솔트룩스] 새싹 인공지능 응용 SW 개발자 양성과정 | 24일차 | 5. 머신러닝 (2)

[혼자 공부하는 머신러닝 + 딥러닝] 10강_확률적 경사 하강법 알아보기