0. 머신러닝 프로세스
데이터 수집 ➡️ 데이터 분석 및 전처리 ➡️ 머신러닝 모델 학습(training) ➡️ 평가
1. 데이터 전처리
- 범주형 자료: 혈액형, 성별, 태어난 연도, 등급 등 범주로 나누어지는 자료(전처리 필수)
- 명목형 자료: 값의 대소에 의미가 없는 자료(예: 혈액형 등)
- 명목형 자료의 전처리 방법
- 수치 맵핑: 해당 범주의 값을 수치화하는 방법(예: 혈액형[A, B, O, 기타] ➡️ 혈액형[0, 1, 2, 3])
- 더미 기법: 해당 범주의 값을 각각 범주화하는 방법(예: A형[T, F], B형[T, F], O형[T, F] 기타형[T, F])
- 순서형 자료: 값의 대소가 의미를 가지는 자료(예: 등급 등)
- 순서형 자료의 전처리 방법
- 수치 맵핑(예: 등급[대형, 준대형, 중형, 준중형, 소형] ➡️ 등급[10, 7.5, 5, 2.5, 0])
- 수치형 자료: 신장, 체중, 재산 등 수치로만 구성된 자료(성능 향상을 위해 전처리 권장)
- 수치형 자료의 전처리 방법
- 스케일링: 값의 크기 및 범위를 변환하는 방법
- 표준화: 이상치 제거
- X' = (X - 평균) / 표준편차
- 정규화: 값을 0~1 사이로 스케일링
- X' = (X - 최댓값) / (최댓값 - 최솟값)
- 표준화: 이상치 제거
- 범주화: 해당 범주의 수치보다 범주가 더 의미 있을 경우 사용
- 예: 성적[10, 20, 70] ➡️ 평균미만=0, 평균이상=1 ➡️ 성적[0, 0, 1]
- 스케일링: 값의 크기 및 범위를 변환하는 방법
- 수치형 자료의 전처리 방법
- 결측값 처리: 일반적으로 값이 누락된 경우 머신러닝 모델의 입력으로 사용 불가
- 결측값이 포함된 샘플(row) 삭제
- 결측값이 과다하게 포함된 범주(column) 삭제
- 결측값을 적당한 값(평균)으로 대체
- 이상치 처리: 모델 성능 저하를 방지하기 위해 이상치(outlier) 제거 수행
- 이상치 판단 방법
- 통계지표(카이제곱 검정, IQR 지표 등) 기반
- 데이터 분포 기반
- 머신러닝 도입
- 이상치 판단 방법
- 데이터 분리: 학습용 데이터셋(train)과 평가용 데이터셋(test)을 분리(8:2, 7:3 등)
- 각 dataset은 feature와 label로 구성된다.
- Feature data: Label data를 예측하기 위해 모델에 입력되는 데이터(예: 기온, 습도)
- Label data: 모델이 예측해야 할 정답 데이터(예: 아이스크림 판매량)
2. 지도학습 - 회귀(Regression)
- 데이터를 가장 잘 설명하는 함수(=모델)를 발견하여 입력값(features)에 따른 결괏값(labels)을 출력하는 알고리즘
- 완벽한 모델을 찾는 것은 불가능에 가까우며, 최대한 근사한 모델을 찾아야 한다.
- 이를 위해서 모델의 예측값과 실제값의 차이를 구하는 함수(loss function)을 사용한다.
- 경사하강법(Gradient Descent)
- 후보 모델들의 loss를 3차원 좌표계에 나타내면 거꾸로 된 산과 같은 형상이 나옴
- 그 산의 경사도를 보고 loss가 더 낮은 모델을 선택해가며 가장 loss가 적은 모델을 도출하는 알고리즘
- Loss function = ( ∑(Yᵢ - (β₁+β₂X)ᵢ)² ) / n (Y=실제값, β₁+β₂X=예측값)
- 임의의 초기값 β₁, β₂를 사용하여 loss를 계산한다.
- 계산 결과로 loss값과 β₁, β₂를 변화시킬 방향(증가/감소)을 알 수 있는 gradient(=경사도)값이 나온다.
- Gradient값에 따라 β₁, β₂를 변화시키고 다시 loss를 계산한다.
- 더 이상 loss값에 유의미한 변화가 없을 때까지 반복한다.
- 단순 선형 회귀 모델(Simple Linear Regression)
- Y ≈ β₁ + β₂X (β₁은 Y절편, β₂는 기울기)
- 따라서 입력값(feature)이 한 개인 경우에만 사용 가능(예: 기온과 아이스크림 판매량)
- 가장 기초적인 모델이며, 입력값의 영향성과 두 변수(입력-결과)의 관계를 직관적으로 알 수 있다.
- 다중 선형 회귀 모델(Multiple Linear Regression)
- Y ≈ β₁ + β₂X + βᵢX
- 입력값(feature)이 여러 개인 경우 사용 가능(예: [기온, 습도]와 아이스크림 판매량)
- 입력값 X가 늘어남에 따라 loss function 또한 그에 맞추어 정의한다.
- 단순 선형 회귀 모델과 동일한 원리로 동작하며, 다수의 입력과 결과 간 관계를 파악할 수 있다.
- 단, 입력값 간의 상관관계가 높을 경우 결과에 대한 신뢰성은 저하된다.(예: [강수량, 습도]와 아이스크림 판매량)
- 다항 회귀 모델(Polynomial Regression)
- Y ≈ β₁ + β₂X²
- 입력값과 출력값의 관계가 비선형적인 경우 사용 가능(예: [기온, (강수량)²]과 아이스크림 판매량)
- 분포가 복잡한 데이터는 2차 이상의 고차함수로 표현될 수 있다.
- 선형 회귀 모델과 동일한 원리로 동작한다.
- 단, 함수의 차수가 높을수록 과적합이 발생할 가능성이 높아진다.
- 회귀 알고리즘 평가지표
- RSS(Residual Sum of Squares): ∑(Yᵢ - (β₁+β₂X)ᵢ)² ((실제값-예측값)의 제곱한 값의 총 합)
- 가장 간단한 평가지표로, 직관적인 해석이 가능하다.
- 값을 정규화하지 않으므로 입력값에 의존적인 지표이다.(입력값이 커지면 RSS도 커짐)
- 절대적인 값이 아니므로 다른 지표와 비교가 불가
- MSE(Mean Squared Error, 평균 제곱 오차): RSS값(행렬)을 그 길이 n으로 나눈 값
- ∑(Yᵢ - (β₁+β₂X)ᵢ)² / n
- MSE가 작을수록 성능이 높다고 봄
- MAE(Mean Absolute Error, 평균 절댓값 오차): MSE에서 각 항에 제곱 대신 절댓값을 취한 것
- ∑|Yᵢ - (β₁+β₂X)ᵢ|
- MAE 역시 작을수록 좋음
- R²(R squared, Coefficient of determination, 결정 계수): 1 - RSS/TSS
- TSS: ∑ ((데이터 평균값) - (실제값))²
- 1에 가까울수록 좋음
- 'Y = 평균값'인 일직선 모델인 경우 R²값이 0이 된다.
- R²값이 음수인 경우는 일직선 모델보다 예측도가 떨어지는 경우이다.
- RSS(Residual Sum of Squares): ∑(Yᵢ - (β₁+β₂X)ᵢ)² ((실제값-예측값)의 제곱한 값의 총 합)
A. 과적합(Overfitting)
- 모델이 학습 데이터에 과하게 맞추어져 새로운 데이터에 대한 예측 성능이 떨어지는 현상(=일반성이 저하됨)
- 과적합 방지 기법 - 교차검증(Cross Validation)
- 학습용 데이터셋을 학습용과 검증용으로 나누는 부류의 기법
- K-fold 교차 검증
- 학습용 데이터셋을 K개로 분할(K=3, train=[A, B, C], test=[D])
- K개 중 한 개를 val, 나머지를 train으로 사용하여 K개의 모델을 학습
- [train, train, val]
- [train, val, train]
- [val, train, train]
- 총 K개 모델들의 평균을 예측값으로 사용한다.
- 과적합 방지 기법 - 정규화(Regularization)
- 모델의 복잡성을 줄여 일반화된 모델을 구현하는 방법
- Loss function의 가중치(β)에 패널티(λ)를 부여하여 그 영향성을 낮춘다.
- L1 정규화(Lasso, L1 penalty)
- 가중치의 절댓값 합을 최소화 λ∑|β|
- (불필요한 입력값 X의 β를 0으로 만든다.)
- L2 정규화(Ridge, L2 penalty)
- 가중치의 제곱합을 최소화 λ∑(β)²
- (불필요한 입력값 X의 β를 0에 가깝게 만든다.)
- Elastic Net
- Lasso, Ridge 두 가지 제약조건을 모두 적용
3. 지도학습 - 분류(Classification)
- 입력값이 속할 클래스를 예측하는 알고리즘(예: 풍속에 따른 결항 여부)
- 분류 문제에 적용 가능한 모델: 트리 기반 모델, 확률 기반 모델, 결정경계 기반 모델, 신경망 모델
- 트리 기반 - 의사결정나무 모델(Decision Tree)
- 각각의 노드가 Yes/No로 답할 수 있는 질문으로 구성된 트리 모델
- 루트 노드에서 시작하여 터미널 노드까지 순차적으로 진행
- 의사결정나무의 깊이가 깊을수록 세분화된 출력을 기대할 수 있으나 과적합을 야기할 수 있다.
- 장점: ①빠르다, ②결과가 직관적이고 해석이 쉽다.
- 단점: ①트리가 깊을수록 과적합 발생 가능성이 상승한다.
- 불순도(Impurity)
- 일정 구간에서 다수 label이 아닌 label이 포함된 정도
- 예시
- X=[1, 2, 3, 4, 5, 6]; y=[F, F, T, F, F, T]
- tree['X <= 2', 'A', 'B']
- 지니 불순도(Gini Impurity)
- 지니 계수(Gini Index): 일정 구간(노드)에서 특정 클래스에 속하는 데이터의 비율을 제외한 값(클수록 다양성이 높다)
- Gini Index = 1 - (True인 확률)² - (False인 확률)²
- 정답 데이터의 비율이 50:50인 경우 가장 크고(0.5), 100:0인 경우 가장 작다.(0)
- 따라서 위 예시 데이터에서 A, B의 지니 계수는 각각 0, 0.5가 된다.
- 지니 불순도(Gini Impurity): n₁ / N * Gini + n₂ / N * Gini
- N: 부모 노드의 입력 데이터 수(len(X))
- n₁: 왼쪽 자식 노드의 입력 데이터 수(len([1,2])
- n₂: 오른쪽 자식 노드의 입력 데이터 수(len([3,4,5,6])
- 따라서 'X <= 2'라는 조건의 지니 불순도는 0 + 4/6 * 0.5 = 1/3이 된다.
- 이런 방법으로 조건을 변경해가면서 가장 불순도가 낮은 조건을 찾아 적용한다.
- 트리 기반 - 랜덤 포레스트 모델(Random Forest)
- 앙상블 기법 중 하나인 배깅(bagging)을 사용함
- 다수 의사결정 트리의 출력을 집계하여 가장 득표율이 높은 결과를 도출
- 각 트리는 train dataset에서 bootstrapping(=복원추출)된 데이터 샘플을 학습
- 장점: ①과적합 감소, ②유연성(분류/회귀 모두 사용가능), ③Feature의 중요도 평가 용이(Gini, MDA, MDI)
- 단점: ①느리고, ②리소스를 많이 사용하며, ③왜 이런 예측값이 나왔는지에 대한 해석이 어렵다.
- 복원추출: 뽑기를 여러 번 실행할 때, 뽑힌 개체를 다시 모집단에 넣고 다음 뽑기를 계속함
- 비복원추출: 뽑힌 개체는 다시 모집단에 넣지 않고, 다음 뽑기를 계속함
- 결정경계 기반 - SVM(Support Vector Machine)
- 확률 기반 - 나이브 베이즈 분류 모델(Naïve Bayes Classification)
- KNN 모델(K-Nearest Neighbor)
- 학습 개념이 없는 lazy model
- 분류 알고리즘 평가지표
- 혼동 행렬(Confusion Matrix)
- 예측값과 실제값이 Positive(1)로 일치: True Positive, TP
- 예측값과 실제값이 Negative(0)로 일치: True Negative, TN
- 예측값이 Positive(1)이나 실제값은 Negative(0): False Positive, FP = 1형 오류
- 예측값이 Negative(0)이나 실제값은 Positive(1): False Negative, FN = 2형 오류
- 코로나에 감염되지 않은 사람을 확진자로 판단: 1형 오류(僞양성, FP)
- 코로나에 감염된 사람을 정상으로 판단: 2형 오류(僞음성, FN)
- 정확도(Accuracy) = (TP + TN) / (P + N) = (예측 성공 수) / (전체 데이터 수)
- 전체 데이터 중에서 정답을 얼마나 맞추었는가?
- 일반적인 평가 방법으로 사용된다.
- 그러나 분류 클래스별 데이터 비율이 불균형하면 신뢰할 수 없다.
- 정밀도(Precision) = TP / (TP + FP)
- 양성 판정을 받은 데이터 중에서, 실제로 얼마나 양성인가?
- 음성을 양성으로 판단하면 안 되는 경우 사용한다.
- 예: 정상 메일을 스팸 메일로 분류하면 사용자가 중요한 메일을 받지 못한다.
- 재현율(Recall, TPR, True Positive Rate) = TP / P
- 양성인 데이터 중에서, 얼마나 많이 양성으로 분류했는가?
- 양성을 음성으로 잘못 판단하면 안 되는 경우 사용한다.
- 예: 악성종양을 양성(良性)종양으로 잘못 판단하면 수술을 받을 수 없어 위험하다.
- 혼동 행렬(Confusion Matrix)
4. 비지도학습 - 클러스터링(Clustering)
5. 비지도학습 - 차원축소(Dimensionality Reduction)
위첨자/아래첨자/수학기호
∑ ᵢ ₁ ₂ ₃ ¹ ² ³ β σ μ ≈ λ