[혼자 공부하는 머신러닝 + 딥러닝] 7강_사이킷런으로 선형 회귀 모델 만들어 보기
7강_사이킷런으로 선형 회귀 모델 만들어 보기
- k-최근접 이웃 회귀와 선형 회귀 알고리즘의 차이를 이해하고 사이킷런을 사용해 여러 가지 선형 회귀 모델을 만들어보기.
- <혼자 공부하는 머신러닝+딥러닝>의 코드 저장소
k-최근접 이웃의 한계
- 훈련 세트 범위 밖의 샘플을 예측할 수 없음.
- k-최근접 이웃 회귀는 아무리 멀리 떨어져 있더라도 무조건 가장 가까운 샘플의 타깃을 평균하여 예측하기 때문
- 머신러닝 모델은 주기적으로 훈련해야 함
- 한 번 만들고 끝나는 프로그램이 아님
- 시간과 환경이 변화하면서 데이터도 바뀌기 때문에 주기적으로 새로운 훈련 데이터로 모델을 다시 훈련해야 함. (예를 들어 배달 음식이 도착하는 시간을 예측하는 모델은 배달원이 바뀌거나 도로 환경이 변할 수 있기때문)
- 사이킷런 모델 클래스들은 훈련, 평가, 예측하는 메서드 이름이 모두 동일함 (fit(), score(), predict() 메서드)
선형회귀
- 널리 사용되는 회귀 알고리즘
- 비교적 간단하고 성능 뛰어남 -> 맨 처음 배우는 머신러닝 알고리즘 중 하나
- 직선 학습 알고리즘 (특성 잘 나타낼수있는 직선)
- coef_ 와 intercept_ 를 머신러닝 알고리즘이 찾은 값이라는 의미로 모델 파라미터(model parameter)라고 부름.
- 많은 머신러닝 훈련 과정은 최적의 모델 파라미터를 찾는것과 같음 (모델 기반 학습)
- k-최근접 이웃에는 모델 파라미터가 없음. 훈련 세트를 저장하는것이 훈련의 전부 (사례 기반 학습)
선형 회귀로 훈련 세트 범위 밖의 샘플 예측
- k-최근접 이웃 회귀의 문제(한계)를 해결하기 위해 선형 회귀를 사용
- 선형회귀
- 훈련 세트에 잘 맞는 직선의 방정식을 찾는 것.
- 사이킷런의 LinearRegression 클래스 사용 ( 이웃과 동일한 방식으로 모델 훈련하고 예측에 사용할 수 있음 )
- 가장 잘 맞는 직선의 방정식을 찾는다는 것 = 최적의 기울기와 절편을 구한다는 의미
- 선형 회귀 모델의 coef_와 intercept_ 속성에 저장되어 있음
- 선형 회귀 모델은 훈련 세트를 벗어난 범위의 데이터도 잘 예측했음. 하지만 모델이 단순하여 농어의 무게가 음수일 수도 있다는 문제가 있음
- 이를 해결하기 위해 다항 회귀 사용
- 데이터를 제곱하여 훈련 세트에 추가한 다음 선형 회귀 모델을 다시 훈련했음.
- 2차 방정식의 그래프 형태 학습, 훈련 세트가 분포된 형태를 잘 표현
- 성능 높아짐
- 하지만 과소적합된 경향이 아직 있음 (복잡한 모델로 문제 해결)
키워드로 끝내는 핵심 포인트
- 선형 회귀
- 선형 회귀는 특성과 타깃 사이의 관계를 가장 잘 나타내는 선형 방정식을 찾음.
- 특성이 하나면 직선 방정식이 됨
- 계수 or 가중치
- 선형 회귀가 찾은 특성과 타깃 사이의 관계는 선형 방정식의 계수 또는 가중치에 저장됨.
- 머신러닝에서 종종 가중치는 방정식의 기울기와 절편을 모두 의미하는 경우가 많음.
- 모델 파라미터
- 선형 회귀가 찾은 가중치처럼 머신러닝 모델이 특성에서 학습한 파라미터.
- 다항 회귀
- 다항식을 사용하여 특성과 타깃 사이의 관계를 나타냄
- 이 함수는 비선형일 수 있지만 여전히 선형 회귀로 표현할 수 있음.
핵심 패키지와 함수
- scikit-learn
- LinearRegression
- 사이킷런의 선형 회귀 클래스
확인문제
- 선형 회귀 모델이 찾은 방적식의 계수를 무엇이라고 부르나요?
- 사이킷런에서 다항 회귀 모델을 훈련할 수 있는 클래스는 무엇인가요?
댓글
댓글 쓰기