[혼공단 7기] 혼공머신 2주차 미션

코덩이·2022년 1월 23일
0

혼공머신

목록 보기
3/7
post-thumbnail

03-1. k-최근접 이웃 회귀

🔈 회귀 (Regression)

  • 지도 학습 알고리즘은 크게 분류와 회귀로 나뉜다.
  • 분류 : 샘플을 몇 개의 클래스 중 하나로 분류하는 문제
  • 회귀 : 클래스 중 하나로 분류하는 것이 아닌 임의의 어떤 숫자를 예측하는 문제.
    따라서 타깃값이 가상으로 만든 코드값이 아닌 임의의 수치이다.

k-최근접 이웃 회귀

  • k-최근접 이웃 알고리즘을 사용해 회귀 문제를 푼다.
  • 예측하려는 샘플에 가장 가까운 이웃 샘플을 찾고 이 샘플들의 타깃값을 평균값을 구해 예측으로 삼는다.

🔧 데이터 준비

🔧 훈련 세트 준비

KNeighborsRegressor

  • 사이킷런에서 k-최근접 이웃 회귀 알고리즘을 구현한 클래스
  • 객체를 생성하고 fit() 메서드로 회귀 모델을 훈련할 수 있다.

🔧 테스트 세트 점수

🔈 분류와 회귀 모델을 평가하는 방법

  • 정확도 : 분류를 평가하는 방법. 테스트 세트에 있는 샘플을 정확하게 분류한 개수의 비율
  • 회귀에서는 정확한 숫자를 맞히는 게 거의 불가능하므로 결정계수라는 값으로 평가한다

결정계수(R²)

  • 대표적인 회귀 문제의 성능 측정 도구. 1에 가까울수록 좋고, 0에 가깝다면 성능이 나쁜 모델
  • 예측이 평균과 비슷해지면 분모와 분자의 값이 비슷해져 R²는 0에 가까워진다.
  • 예측이 타깃을 정확히 맞춘다면 분자가 0에 가까워져 R²는 1에 가까운 값이 된다.

사진출처 : https://velog.io/@arittung/DeepLearningStudyDay4, https://adamlee.tistory.com/entry/%EC%89%AC%EC%9A%B4-%EC%84%A4%EB%AA%85%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EA%B2%B0%EC%A0%95%EA%B3%84%EC%88%98R2-%EB%9C%BB-%EC%A6%9D%EB%AA%85

🔧 mean_absolute_error

  • 타깃과 예측의 절댓값 오차를 평균하여 반환한 것
  • mean_absolute_error 을 통해 결정계수(R²) 보다 직관적인 값을 얻을 수 있다.

🔈 과대적합과 과소적합

사진출처 : https://youtu.be/0mrLRkgbjA0

  • 훈련 점수보다 테스트 점수가 낮게 나오는 것이 일반적이다.

  • 이런 현상을 훈련세트를 적절히 학습하지 못한 과소적합이라고 한다.

  • 위 사진과 반대로 훈련세트에는 0.99와 같은 높은 성능을 보이면서 테스트세트에는 0.6과 같이 형편없는 결과가 나온 경우, 실전에서는 형편없어지는 과대적합 현상이 발생한다.

과대적합 (overfitting)

  • 모델의 훈련 세트 성능이 테스트 세트 성능보다 훨씬 높을 때 일어난다.
  • 모델이 훈련 세트에 너무 집착해서 데이터에 내재된 거시적인 패턴을 감지하지 못한다.

과소적합 (underfitting)

  • 훈련 세트와 테스트 세트 성능이 모두 동일하게 낮거나 테스트 세트 성능이 오히려 더 높을 때 일어난다.
  • 이런 경우 더 복잡한 모델을 사용해 훈련 세트에 잘 맞는 모델을 만들어야 한다.

🔧 이웃 개수 줄이기

  • 이웃의 개수를 5에서 3으로 줄임으로써 더 적합한 결과를 얻어낼 수 있었다.
  • 이웃의 개수를 줄일수록 샘플 하나하나와 과하게 유사한 과대적합이 발생하고
  • 이웃의 개수를 늘릴 수록 훈련세트 성능이 낮은 (훈련세트를 제대로 훈련하지 못한) 과소적합이 발생한다.

🎉 기본미션 - 확인문제 2

과대적합과 과소적합에 대한 이해를 돕기 위해 복잡한 모델과 단순한 모델을 만들겠습니다. 앞서 만든 k-최근접 이웃 회귀 모델의 k값을 1, 5, 10으로 바꿔가며 훈련해 보세요. 그다음 농어의 길이를 5에서 45까지 바꿔가며 예측을 만들어 그래프로 나타내 보세요. n이 커짐에 따라 모델이 단순해지는 것을 볼 수 있나요?

  • n이 커짐에 따라 각 샘플의 영향이 줄어드는 것을 확인 할 수 있었다.

03-2. 선형회귀

🔈 선형회귀

  • 특성과 타깃 사이의 관계를 가장 잘 나타내는 선형 방정식을 찾는 것
  • 특성이 하나면 직선 방정식이 된다.
  • 선형 회귀가 찾은 특성과 타깃 사이의 관계는 선형 방정식의 계수 또는 가중치에 저장된다.
  • 머신러닝에서 종종 가중치는 방정식의 기울기와 절편을 모두 의미하는 경우가 많다.

🔧 LinearRegression

  • 직선을 구하기 위해서는 기울기와 절편이 필요하다.
  • 이는 직선형태인 선형회귀도 마찬가지인데 이를 LinearRegression 클래스를 통해 구할 수 있다.

    lr = LinearRegression() 로 선언했을 때

    • 기울기(coefficient) : lr.coef_
    • 절편 : lr.intercept_

사진 출처 : https://youtu.be/xkknXJeEaVA

🔈 모델 파라미터

  • 머신러닝 알고리즘이 찾은 값
  • 선형 회귀가 찾은 가중치(기울기, 절편)처럼 머신러닝 모델이 특성에서 학습한 파라미터를 말한다.
  • 많은 머신러닝 알고리즘의 훈련 과정은 최적의 모델 파라미터를 찾는 것
  • 이를 모델 기반 학습이라고 부른다.

🎉 선택미션 - 모델 파라미터란?

머신러닝 알고리즘이 찾은 값으로
선형회귀의 가중치(기울기, 절편)와 같이 머신러닝 모델이 특성에서 학습한 파라미터를 뜻한다.
머신러닝은 이 모델 파라미터의 최적값을 찾기위해 계속 훈련하는 것이다.

🔈 다항 회귀

  • 다항식을 사용하여 특성과 타깃 사이의 관계를 나타낸다.
  • 이 함수는 비선형일 수 있지만 여전히 선형 회귀로 표현할 수 있다.

후기

  • 시간이 부족해 중간부터 강의 없이 급하게 학습했더니 실습이 부족해 아쉽다.
  • 복습하고 다음 주차도 무리없이 진행하는 것이 목표!!
  • 책 실습과 유튜브강의가 너무 잘되어 있다고 생각한다. 덕분에 스트레스 없이 아주 편하게 학습중이다.
profile
개발공부중

0개의 댓글