[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 9기 학습일 : 2024.08.21
📕학습 목록
회귀
차원축소
클러스터링
📗 기억할 내용
1. 회귀
1) 다항회귀 실무에서 가장 많이 사용!
① 정의
입력 변수 x에 대한 다항식( 2차, 3차 등으로 이루어진 여러 개의 항을 포함)을 사용하는 회귀 분석 기법
다항회귀는 선형 회귀 모델을 사용하여 비선형 데이터를 학습함
ex : 2차 다항회귀 식
- θ₀, θ₁, θ₂, θ₃ : 회귀 모델이 학습하는 파라미터(계수) - x : 독립 변수 - x² : x의 제곱으로, 이 식이 2차 항임을 나타냄
② 다항회귀 ⊃ 선형회귀
선형회귀 : 1차 함수 형태로 데이터를 모델링함. 식 : y = θ₀ + θ₁x (= 1차 다항회귀 식)
다항회귀 : 선형회귀의 확장으로, 독립 변수 x의 차수를 확장하여 데이터의 비선형 패턴을 모델링함. ex : 2차 다항회귀는 x² 항을 포함, 3차 다항회귀는 x³항을 포함
→ Sklearn : 입력 데이터를 다항식 형태로 변환하여 다항회귀 모델을 학습할 수 있게 하는 PolynomialFeatures 클래스 제공 → 객체(회귀 모델) 생성
from sklearn.preprocessing import PolynomialFeatures
PolynomialFeatures(degree=d, include_bias=False)
2) 학습 곡선 (Learning Curve)
모델의 성능이 학습 데이터의 양 • 학습 단계에 따라 어떻게 변하는지를 보여줌
모델의 학습 과정에서 발생하는 과적합(Overfitting), 과소적합(Underfitting), 그리고 수렴(Convergence) 상태를 파악하는 데 유용
- 빨간색 곡선 (Red): 과소적합(Underfitting)을 나타냄. 모델이 너무 단순해서 데이터의 패턴을 충분히 학습하지 못하고, 따라서 예측 성능이 좋지 않은 상태 - 파란색 곡선 (Blue): 적절하게 수렴한 모델을 나타냄. 이 모델은 데이터의 패턴을 잘 학습하고 있으며, 과적합도 과소적합도 아닌 상태 ”이상적인 모델“ - 초록색 곡선 (Green): 과적합(Overfitting)을 나타냄. 모델이 너무 복잡해서 데이터의 노이즈까지 학습해버린 상태로, 훈련 데이터에 대해서는 성능이 좋을 수 있지만 새로운 데이터에 대해서는 일반화가 잘 되지 X
① 학습 곡선의 구성 요소
구성 요소
설명
훈련 곡선 (Training Curve)
- 훈련 데이터에 대한 모델의 성능을 나타내는 곡선 - 훈련 데이터셋에서 손실이나 정확도의 변화를 시각화함
검증 곡선 (Validation Curve)
- 검증 데이터에 대한 모델의 성능을 나타내는 곡선 - 검증 데이터셋에서 손실이나 정확도의 변화를 시각화함
② 학습 곡선의 일반적인 패턴
패턴
설명
과소적합 (Underfitting)
- 훈련 데이터와 검증 데이터 모두에서 성능이 낮음 - 모델이 충분히 학습되지 않았거나 복잡성이 낮은 상태
과적합 (Overfitting)
- 훈련 데이터에서 성능이 매우 높지만, 검증 데이터에서 성능이 낮음 - 모델이 훈련 데이터에 과도하게 맞춰진 상태
적절한 학습 (Well-fitted)
- 훈련 데이터와 검증 데이터 모두에서 성능이 양호하며, 두 곡선이 가까운 지점에서 수렴 - 모델이 적절히 학습된 상태
과소적합*RMSE : 평균 제곱근 오차 * 과소적합은 주로 훈련 데이터와 검증 데이터 모두에서 높은 오류를 보일 때 발생
과소적합 학습 곡선 특징
검증 오류가 높음: 검증 데이터의 RMSE가 높아 모델 성능이 낮음을 나타냄
훈련 오류와 검증 오류의 차이 작음: 두 오류가 수렴하지만, 여전히 높은 RMSE를 유지하여 복잡한 패턴을 학습하지 못함
데이터 증가에 따른 변화 없음: 데이터가 늘어나도 오류가 크게 줄지 않아 모델 개선이 이루어지지 않음
- 빨간색 곡선 : 훈련 데이터에 대한 오차 - 파란색 곡선은 검증 데이터에 대한 오차
과대적합* 과대적합은 주로 훈련 데이터(빨강)보다 검증 데이터(파랑)가 더 높은 오류를 보일 때 발생
과대적합 학습 곡선 특징
검증 오류가 높음: 훈련 데이터에 비해 검증 데이터의 오류가 높음
훈련 오류와 검증 오류의 차이 큼: 훈련 데이터에서는 낮은 오류, 검증 데이터에서는 높은 오류로 과대적합 상태
데이터 증가 시 훈련 오류 감소: 데이터가 늘어나도 검증 오류는 개선되지 않음
적절한 학습 상태
훈련 오류와 검증 오류가 모두 낮음: 학습이 잘 진행되고, 모델이 일반화됨
훈련 오류와 검증 오류 차이 작음: 두 오류가 거의 일치하며, 과대적합 없이 데이터 패턴을 잘 학습
데이터 증가에 따른 성능 안정화: 데이터가 충분할수록 검증 오류가 안정화, 과소적합이나 과대적합이 아님
3) 로지스틱 회귀
회귀모델을 분류모델로 활용할 수 있음
- 이진분류 : 로지스틱 회귀 - 다중 클래스 분류 : 소프트맥스 회귀
① 정의
로지스틱 회귀 : 이름에는 "회귀"가 들어가지만, 실제로는 이진 분류문제를 해결하는 데 사용되는 통계 모델
이진분류 : 종속 변수가 두 개의 범주(예/아니오, 참/거짓 등)로 나뉘는 경우
② 로지스틱 회귀의 수식
선형 회귀식 계산
시그모이드(Sigmoid)함수 적용
- 로지스틱 회귀는 예측된 값을 0과 1 사이의 확률로 변환하기 위해 시그모이드 함수(로지스틱 함수)를 사용 - 시그모이드 함수 : S자 모양의 곡선으로, 입력 값을 0과 1 사이의 값으로 압축 * ŷ : 예측된 확률값
시그모이드 함수
예측된 확률에 따라 분류
- 출력 값이 0과 1 사이의 확률로 해석됨 - 특정 임계값(일반적으로 0.5)을 기준으로 분류; y≥0.5 이면 1로, 그렇지 않으면 0으로 분류 * ex : 예측 확률이 0.7이라면 1로, 0.3이라면 0으로 분류
③ 비용함수(Cost Function) : 로지스틱 회귀 모델의 성능을 평가 지표
비용 함수 : 모델의 예측이 실제 값과 얼마나 차이가 나는지를 측정하며, 이를 최소화하는 방향으로 모델이 학습됨
정답을 더 높은 확률로 예측할수록 좋은 모델이라고 평가
4) 소프트맥스 회귀
① 정의
로지스틱 회귀모델(이진 분류)을 일반화 → 소프트맥스 회귀모델 : 다중 클래스 분류
다중 클래스 분류 : 여러 클래스 중 하나로 데이터를 분류
2. 차원축소
1) 차원의 저주
① 정의
차원이 증가할 수록 데이터간 빈 공간이 생성 → 그로 인해 발생하는 문제들
대표 문제 : 데이터 희소성, 모델 복잡도 증가
- 데이터 희소성 : 차원이 증가하면, 데이터 포인트들이 고차원 공간에 흩어지게 됨 → 데이터 포인트들이 서로 멀리 떨어지게 됨 → 모든 공간을 충분히 커버하는 데이터를 얻기 위해서는 많은 데이터가 필요해짐 - 모델 복잡도 증가 : 차원이 증가하면, 모델의 복잡도가 기하급수적으로 증가 → 모델이 데이터를 과대적합(Overfitting)하게 만듦
2) 차원 축소
① 정의
차원의 저주를 해결하기 위해 특성(Feature) 수를 줄임 → 학습 불가능한 문제를 학습 가능한 문제로 만드는 기법
즉, 정보의 손실이 크지 않은 방향으로 고차원의 데이터를 저차원의 데이터셋으로 변환시키는 것
②-2 PCA(Principal Component Analysis, 주성분 분석) : 학습 데이터셋을 특정 초평면에 사영하는 기법 * 초평면 : n차원 공간을 기준으로 이르는 n−1 차원의 공간
분산 보존 : 고차원 데이터의 차원을 축소하면서도 데이터의 중요한 정보를 최대한 보존
주성분 : PCA에서 데이터의 주요 방향을 나타내는 벡터
- 직교성: 주성분은 서로 직교하여 데이터의 변동성을 독립적으로 설명함 즉, PCA(주성분 분석)에서는 데이터를 변환할 때 여러 개의 축(주성분)을 사용할 수 있으며, 이 축들은 각각 데이터의 분산을 최대한 잘 유지함. 각 축은 데이터의 분산을 가장 잘 설명하는 방향으로 정의됨. 이 과정에서 주성분들은 서로 직교(수직)하며, 각 주성분은 데이터의 변동성을 독립적으로 설명함. n개의 주성분을 사용하면 데이터의 총 분산을 n개의 축에서 분해하여 설명할 수 있음
- 시각화: PCA를 통해 주성분을 시각화하면, 데이터의 주요 방향과 구조를 쉽게 이해할 수 있음
ex : 첫 번째 주성분이 데이터의 최대 분산을 설명하고, 두 번째 주성분은 첫 번째 주성분과 직교하여 다음으로 큰 분산을 설명
→ Sklearn : 입력 데이터를 주성분으로 변환하여 차원을 축소하고 PCA 모델을 학습할 수 있게 하는 PCA 클래스 제공 → 객체(PCA 모델) 생성
from sklearn.decomposition import PCA
# PCA 모델 생성# n_components : 주성분의 수(축소할 차원을 정함)
pca = PCA(n_components=2)
PCA 모델에 데이터를 피팅(fit)하고 변환(transform)
X_pca = pca.fit_transform(X)
# 각 주성분에 대한 원 데이터셋의 분산 비율# z1 축 : 75.8%, z2 축 : 15.2%
pca.explained_variance_ratio_
array([0.7578477 , 0.15186921]) #output
pca = PCA(n_components = 0.95)
X_reduced = pca.fit_transform(X_train)
②-3 LDA(Linear Discriminant Analysis, 선형 판 분석) : 클래스 간 분산을 최대화하면서 데이터를 선형적으로 구분하는 차원 축소 기법
- PCA : 입력 데이터의 변동성이 가장 큰 축을 찾음 (분산분포) - LDA : 입력 데이터의 결정값 클래스를 최대한 분리할 수 있는 축을 찾음
→ Sklearn에서는 LDA 클래스(LinearDiscriminantAnalysis)를 제공하여 입력 데이터를 선형 판별 분석(Linear Discriminant Analysis) 기법으로 변환하고, 분류 모델을 학습할 수 있게 함 → 객체(LDA 모델) 생성
③ 다양한 차원축소 모델
3. 클러스터링(Clustering, 군집화)
비지도 학습 : 레이블이 없는 데이터를 학습하는 기법
1) 군집화
① 정의
비슷한 샘플끼리의 군집을 형성하는 것
즉, 유사성이 높은 데이터들을 동일한 그룹으로 분류 & 서로 다른 군집들이 상이성을 가지도록 그룹화
레이블x "비지도 학습"
② 활용 분야 - 데이터 분석 - 고객분류 - 추천 시스템 - 검색 엔진 - 이미지 분할 - 준지도 학습
실루엣 계수 (Silhouette Coefficient) : K-means의 성능을 평가하는 지표. 각 데이터 포인트의 클러스터 할당이 얼마나 적절한지를 평가. -1 ~ 1 사이의 값을 가짐
실루엣 계수 계산식
* a(i): 데이터 포인트 i와 동일 클러스터 내 다른 데이터 포인트 간의 평균 거리(군집 내 응집도) * b(i): 데이터 포인트 i와 가장 가까운 다른 클러스터 내 데이터 포인트 간의 평균 거리(다른 클러스터와의 분리도)
- s(i) = 1: 데이터 포인트가 매우 잘 클러스터링되어 있음 - s(i) = 0: 데이터 포인트가 두 클러스터의 경계에 위치해 있음. - s(i) < 0: 데이터 포인트가 잘못된 클러스터에 할당되었음
실루엣 다이어그램 : 각기 다른 클러스터 개수(K)에 대해 계산된 실루엣 계수를 보여줌. K-means 클러스터링의 성능을 평가하는 데 사용되는 시각화 도구
- 군집 개수별로 데이터들의 실루엣 계수들을 시각화 - 평균만 높다고 좋은 군집이 X, 군집별 크기가 비슷해야 좋은 모델O
* 클러스터의 품질: - K=3에서 평균 실루엣 계수가 가장 높으며, 클러스터들이 상대적으로 잘 구분됨; 이 데이터에 대해 K=3이 적절한 클러스터 개수 - K=5, K=6으로 갈수록 평균 실루엣 계수가 감소하고, 특정 클러스터는 매우 낮은 실루엣 계수를 가짐; 클러스터가 과도하게 분할되어 데이터가 적절하게 군집화되지 못한 것을 의미
네 개의 그래프가 있으며, 각각의 그래프는 서로 다른 K 값(3, 4, 5, 6)에 대한 실루엣 계수
② Hierarchical Clustering(계층적 군집화) : 데이터를 하나하나 계층에 따라 순차적으로 클러스터링
정의: 계층적 군집화는 데이터 간의 거리를 측정하여, 데이터 포인트들을 계층 구조로 묶어가는 방식입니다.
원리:
- 병합형(Agglomerative): 모든 데이터 포인트를 개별 클러스터로 시작해, 가장 가까운 두 클러스터를 반복적으로 병합 - 분할형(Divisive): 모든 데이터를 하나의 클러스터로 시작해, 반복적으로 가장 큰 클러스터를 분할
장점:
클러스터의 개수를 미리 알(지정할) 필요가 없음
다양한 클러스터링 구조를 시각적으로 나타낼 수 있음
단점:
계산 복잡도가 높아 대규모 데이터셋에서는 비효율적
한번 병합된 클러스터는 다시 분할할 수 없음
③ DBSCAN (Density-Based Spatial Clustering of Applications with Noise) : 밀도 기반 군집화 알고리즘
원리:
- 데이터 포인트의 밀도(특정 거리 내의 데이터 포인트 수)를 기준으로 클러스터를 형성 - 핵심 포인트(Core point), 경계 포인트(Border point), 노이즈 포인트(Noise point)로 데이터를 분류 - 밀도가 높은 영역을 클러스터로 식별함
DBSCAN 알고리즘 원리
[DBSCAN 알고리즘 원리]
* Core Points (핵심 포인트) - 빨간색 점 - 반경 Eps 내에 최소한 MinPts 이상의 다른 포인트들이 포함된 포인트 - MinPts = 4로 설정되어 있어, 각 빨간색 포인트의 주변에 적어도 3개 이상의 이웃 포인트가 있는 것을 볼 수 있음
* Border Points (경계 포인트) - 노란색 점 - 반경 Eps 내에 MinPts 만큼의 이웃은 없지만, 핵심 포인트에 인접한 포인트 - 즉, 다른 클러스터와의 경계에 위치한 포인트
* Noise Points (노이즈 포인트) - 파란색 점 - 반경 Eps 내에 이웃 포인트가 MinPts 미만인 포인트 - 어떤 클러스터에도 속하지 않음
DBSCAN 알고리즘 적용 예
[DBSCAN 적용 예시] : 서로 다른 eps 값에 따라 DBSCAN이 적용된 결과
* 왼쪽 그래프 (eps=0.05, min_samples=5): - eps가 작게 설정되어 있어 각 데이터 포인트의 이웃 범위가 좁음 - 결과적으로, 대부분의 포인트가 노이즈로 간주되어 클러스터링되지 않았고, 각 클러스터가 조각조각 나뉘어 있음 - 노이즈로 분류된 포인트들은 빨간색 X 마크로 표시되어 있음
* 오른쪽 그래프 (eps=0.20, min_samples=5): - eps가 더 큰 값으로 설정되어 데이터 포인트 간의 이웃 범위가 넓어짐 - 그 결과, 두 개의 주요 클러스터가 명확하게 구분됨 - 노이즈로 간주되는 포인트의 수가 감소함 - 각 클러스터는 색으로 구분되어 있으며, 중간의 데이터들이 두 개의 주요 클러스터로 분리된 것을 볼 수 있음
장점:
클러스터의 형태에 관계없이 잘 작동
노이즈 데이터(Outlier, 이상치)를 효과적으로 처리함
클러스터의 개수를 미리 알(지정할) 필요가 없음
군집의 모양/개수에 상관X
이상치에 안정적
단점:
밀도 매개변수(eps, MinPts)에 민감
군집 간 밀도가 크게 다르면 모든 군집 파악이 불가능함
④ Gaussian Mixture Model(GMM, 가우시안 혼합 모델)
정의: 데이터가 여러 개의 가우시안 분포(정규 분포)의 조합으로 구성되어 있다고 가정하는 확률적 모델
원리:
- 각 클러스터는 가우시안 분포로 표현됨 (군집의 모양/크기/밀집도/방향이 다른 데이터 셋에 대해 가우시안 분포를 이루는 각 군집을 찾아냄; 타원형 군집 생성) - 데이터가 각 가우시안 분포에 속할 확률을 계산함; 데이터 포인트가 어느 클러스터에 속할지 결정