충분하지 않은 양의 훈련 데이터
- 일반적으로 간단한 문제라도 수천 개의 데이터가 필요합니다.
- 이미지나 음성 인식 같은 문제는 수백만 개가 필요할 수 있습니다.
- 데이터가 부족하면 알고리즘을 개선하기 위한 노력이 헛수고 될 수 있지만
- 데이터가 많다면 알고리즘의 성능을 크게 높힐 수 있다.
대표성 없는 훈련 데이터
- 모델이 일반화가 잘 되려면, 예측하려는 샘플의 분포를 잘 따르는 훈련셋을 만들어야 한다.
- 우연에 의해 대표성이 없는 데이터를 샘플링 잡음이라고 한다.
- 또, 표본 추출 방법이 잘못된 대표성이 없는 데이터를 샘플링 편향이라고 한다.
- 주피터노트북 실습파일을 보면, 빠진 데이터들이 존재한다. 브라질, 멕시코, 칠레, 체코, 노르웨이, 스위스, 룩셈부르크 들이 빠졌는데, 이 데이터가 들어가면 원래의 데이터와 다른 그래프를 보여주게 된다.
낮은 품질의 데이터
- 이상치나 잡음이 많으면 올바른 모델로 훈련할 수 없다. 이 때문에, 데이터를 정제하는데 많은 시간을 들이게 된다.
- 데이터의 정제가 필요한, 특성이 누락되었을 때
- 해당 특성을 제외
- 해당 샘플을 제외
- 누락된 값을 채움
- 해당 특성을 넣은 경우와 뺀 경우 각기 모델을 훈련
관련 없는 특성
- 좋은 모델을 만드려면, 풀려는 문제에 관련이 높은 특성을 찾아야 한다.
- 특성 공학은 풀려는 문제에 관련이 높은 특성을 찾는다.
- 특성 선택 : 준비되어 있는 특성 중 가장 유용한 특성을 찾는다.
- 특성 추출 : 특성을 조합하여 새로운 특성을 찾는다.
과대적합
- 훈련 세트에 너무 잘 맞아 일반화 성능이 낮아지는 현상
- 규제를 사용해 과대적합을 감소할 수 있다.
- 훈련세트에대해 점수가 높겠지만, 일반적인 데이터에 대해서 정확도가 떨어질 것이다.
- 일반적인 패턴을 따를 수 있도록 만드는 것이다.
과소적합
- 과대적합의 반대
- 모델이 너무 단순해서 제대로 학습하지 못하는 것을 말한다.
- 해결 방법
- 모델 파라미터가 더 많은 모델을 사용한다.
- 특성 공학으로 더 좋은 특성을 찾는다.
- 규제의 강도를 줄인다. (조금더 과대적합 될 수 있도록)
테스트 세트와 검증 세트
- 모델의 일반화 성능을 측정하기 위해 훈련 세트와 테스트 세트로 나눈다.
- 훈련 세트로 모델을 훈련하고 테스트 세트로 모델의 일반화 성능을 측정한다.
- 하이퍼 파라미터는 알고리즘을 조절하기 위해 사전에 정의하는 파라미터이다.
- 여러 하이퍼 파라미터를 테스트해보고, 가장 좋은 하이퍼 파라미터를 사용한다.
- 그러나 간접적으로, 테스트세트에 맞춰지기 때문에, 테스트세트에 과적합 될 수 있다.
- 따라서, 테스트세트는 최대한 제일 마지막에 실행해야 한다.
- 즉, 테스트세트를 한번 더 나눠, 검증세트를 만든다.
- 훈련세트에서 훈련, 검증세트에서 파라미터 선정, 최종 모델을 테스트세트로 일반화 성능을 측정한다.
- 테스트 세트를 사용해 여러 모델을 평가하면 테스트 세트에 과대적합된다.
- 모델 선택을 위해 훈련세트, 검증세트(개발세트), 테스트세트로 나눈다.
훈련-개발 세트
- 대량의 데이터를 쉽게 얻기 위해 실전과 다른 데이터로 훈련 세트를 만들 때.
- 예로 희귀한 꽃을 분류하기위해, 검색엔진에서 여러 꽃의 이미지로 훈련한다.
- 이런 경우 검증 세트 점수가 과대적합과 데이터 불일치 중 어떤 것이 원인인지 모른다.
- 검증 세트에 희귀한 꽃의 데이터를 넣어줘야 한다.
- 과대적합인지, 검증세트에 의귀한 꽃 데이터때문인지 모른다.
- 이를 위해 훈련-개발 세트를 만들어 훈련한 모델을 평가한다.
- 훈련-개발 세트 성능이 낮다면 과대적합이다.
- 검증 세트 성능이 낮다면 데이터 불일치 문제이다.
1. 추가적인 ML 주제
2. 추가적인 라이브러리와 API
3. 최근 딥러닝 연구 중에서 중요한 결과 포함
4. 텐서플로 2로 업그레이드, 가능한 케라스 API(tf.keras)사용
5. 사이킷런, 넘파이, 판다스, 맷플롯립 등의 최신 라이브러리에 맞춰 예제 코드 업데이트
6. 일부 섹션 설명 보완 및 에러 수정