6장 정리문제
1. 파이프라인을 사용한 효율적인 워크플로우 파이프라인의 정의
파이프라인은 여러 함수를 하나의 함수로 묶는 것으로, 데이터 전처리, 특성 변환, 모델 학습 등의 단계를 하나의 객체로
정의한 것이다.
핵심 개념:
스케일링, 차원 축소, 분류 모델 등 여러 단계를 순차적으로 연결해 fit과 predict를 한 번만 호출하면 모든 단계가
자동으로 순서대로 실행되도록 한다.
주요 장점:
데이터 누수 방지가 가장 중요하다. 교차 검증 시 각 폴드마다 전처리를 독립적으로 수행한다.
전체 데이터로 먼저 스케일링하면 테스트 폴드의 정보가 누수되지만, 파이프라인은 각 폴드의 훈련 데이터로만 스케일링한다.
스케일러, PCA, 모델을 따로 관리하지 않고 하나의 객체로 관리하여 코드가 간결해진다.
그리드 서치와 완벽하게 통합된다. 전처리 단계의 파라미터와 모델 파라미터를 동시에 최적화할 수 있다.
파라미터 명명 규칙
파이프라인에서 각 단계의 파라미터를 지정할 때는 (단계이름 __파라미터이름) 형식을 사용한다.
2. k-겹 교차 검증을 사용한 모델 성능 평가 홀드아웃 방법
데이터를 훈련 세트와 테스트 세트로 한 번만 분할한다. 간단하지만 분할 방식에 따라 결과가 달라질 수 있어 불안정하다.
k-겹 교차 검증
데이터를 k개 폴드로 나누고 k번 반복 평가하여 매번 다른 폴드를 테스트로 사용하고 나머지를 훈련으로 사용한 후,
k개의 점수를 평균내어 최종 성능을 추정한다.
모든 데이터가 한 번씩 테스트에 사용되므로 홀드아웃보다 신뢰할 수 있고, k개의 모델이 생성되지만 이는 성능 평가용이며
실제 운영에는 전체 데이터로 재학습한 모델을 사용한다.
LOOCV
k를 전체 데이터 개수로 설정한 극단적인 경우로 매번 1개만 테스트하고 나머지 전부로 훈련한다.
데이터가 극단적으로 적을 때 최대한 많은 데이터로 학습하기 위해 사용하며 계산 비용이 매우 높다.
3. 학습/검증 곡선을 사용한 알고리즘 디버깅 학습 곡선
훈련 데이터 크기를 점점 늘려가며 훈련 성능과 검증 성능을 측정한다.
과적합 진단:
훈련 성능은 높지만 검증 성능이 낮고 둘 사이 격차가 크다. 더 많은 데이터 수집, 정규화 강화, 모델 복잡도 감소로 해결한다.
과소적합 진단:
훈련 성능과 검증 성능 모두 낮고 비슷하다. 더 복잡한 모델 사용, 특성 추가, 정규화 약화로 해결한다.
검증 곡선
특정 하이퍼파라미터 값을 변화시키며 성능을 측정하며 검증 성능이 최고인 지점이 최적 하이퍼파라미터 값이다.
과적합과 과소적합 사이의 균형점을 찾을 수 있다.
디버깅 과정
먼저 학습 곡선으로 과적합인지 과소적합인지 파악한 후, 검증 곡선으로 하이퍼파라미터를 조정한다.
마지막으로 학습 곡선을 다시 확인하여 개선 여부를 평가한다.
4. 그리드 서치를 사용한 머신 러닝 모델 세부 튜닝 하이퍼파라미터
모델 학습 전에 미리 설정하는 값이다. 정규화 강도, 커널 종류 등이 있다.
그리드 서치
최적의 하이퍼파라미터를 찾기 위해 모든 조합을 시도한다. 시도할 값들을 정의하면 모든 조합을 자동으로 생성하고,
각 조합마다 교차 검증으로 성능을 측정한 후 최고 성능의 조합을 선택한다.
파이프라인과의 결합
파이프라인의 각 단계별 파라미터를 동시에 탐색할 수 있어 전처리 파라미터와 모델 파라미터의 모든 조합을 자동으로
테스트할 수 있게 된다.
정규화
L1 규제는 절댓값의 합을 패널티로 사용한다. 가지치기 효과가 있어 일부 가중치를 완전히 0으로 만든다.
L2 규제는 제곱의 합을 패널티로 사용한다. 스케일 조정 효과가 있어 모든 가중치를 골고루 작게 만든다.
정규화 강도 C가 크면 정규화가 약해져 복잡한 모델이 되고, C가 작으면 정규화가 강해져 단순한 모델이 된다.
커널
데이터를 다른 공간으로 변환하는 방법으로, 기존 값으로부터 새로운 특성을 계산으로 생성한다.
Linear 커널은 직선이나 평면으로 분리하고 RBF 커널은 거리 기반으로 유사도를 계산한다.
중심점과 가까우면 높은 값, 멀면 낮은 값을 갖는다.
비슷한 것끼리 비슷한 값을 갖게 만들어져 쉽게 구분할 수 있고, 차원을 늘려 미세한 차이가 선형적으로 벌어지는 효과를 준다.
5. 다양한 성능 평가 지표 오차 행렬
모든 예측 결과를 표로 정리한다.
TP는 양성을 양성으로 맞춘 것이고, TN은 음성을 음성으로 맞춘 것이다.
FP는 음성을 양성으로 틀린 것으로 1종 오류다. 없는데 있다고 판단한다.
FN은 양성을 음성으로 틀린 것으로 2종 오류다. 있는데 없다고 판단한다.
정밀도와 재현율
정밀도는 양성이라고 예측한 것 중 실제 양성의 비율이다. 양성이라고 했을 때 얼마나 믿을 수 있는지를 나타낸다.
재현율은 실제 양성 중 찾아낸 비율이다. 실제 양성을 얼마나 잘 찾아내는지를 나타낸다.
임계값을 높이면 정밀도는 올라가지만 재현율은 내려가고, 임계값을 낮추면 정밀도는 내려가지만 재현율은 올라간다.
이것이 트레이드오프이다. F1 점수는 정밀도와 재현율의 조화 평균으로 둘 사이의 균형을 나타낸다.
암 진단과 같은 놓치면 안 되는 경우 재현율을 최적화하고 스팸 필터처럼 오탐을 피해야 하는 경우 정밀도를 최적화함으로써
용도에 맞게 조정할 수 있다.
ROC 곡선과 AUC
ROC 곡선은 모든 임계값에서의 성능을 시각화한다. FPR을 가로축에, TPR을 세로축에 놓는다.
AUC는 ROC 곡선 아래 면적이다. 1.0에 가까울수록 좋고, 0.5는 랜덤 수준이다.
임계값에 무관하게 전체적인 성능을 평가할 수 있다. 불균형 데이터에서도 유용하다.
다중 분류의 성능 지표
OvA는 각 클래스를 하나 대 나머지로 분리하여 평가하여 각각을 이진 분류 문제로 변환한다.
Macro 평균은 각 클래스의 지표를 단순 평균하여 모든 클래스를 동등하게 취급한다.
Weighted 평균은 클래스 크기에 비례하여 가중 평균하여 클래스별 지분을 반영한다.
Micro 평균은 전체 TP, FP, FN을 합산하여 계산한다.
불균형한 클래스 다루기
클래스 가중치는 학습 시 소수 클래스에 더 큰 패널티를 부여하여 소수 클래스를 틀리면 손실이 더 크게 계산되게 하여
각 클래스의 중요도를 동등하게 가져가도록 한다.
오버샘플링은 소수 클래스를 복제하거나 합성하여 개수를 늘리는 방법이다.
SMOTE는 기존 데이터 사이를 보간하여 새로운 샘플을 만든다.
언더샘플링은 다수 클래스의 개수를 줄인다. 데이터가 많을 때만 사용하며 정보 손실이 발생한다.
정확도 대신 F1 점수, 재현율, AUC 같은 적절한 지표를 사용하거나 임계값을 조정하여 소수 클래스를 더 많이 찾거나
오탐을 줄인다.