[천재교육] 프로젝트 기반 빅데이터 서비스 개발자 양성 과정 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) 수를 줄임 → 학습 불가능한 문제를 학습 가능한 문제로 만드는 기법
- 즉, 정보의 손실이 크지 않은 방향으로 고차원의 데이터를 저차원의 데이터셋으로 변환시키는 것
② 차원 축소 기법 : 사영기법, PCA, LDA
②-1 사영기법 : n차원의 데이터셋을 차원이 낮은 d차원의 데이터셋으로 사영(Projection)하는 기법
②-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 "비지도 학습"
② 활용 분야
- 데이터 분석
- 고객분류
- 추천 시스템
- 검색 엔진
- 이미지 분할
- 준지도 학습
2) 군집화 알고리즘 ⊃ K-means, Hierarchical Clustering, DBSCAN, Gaussian Mixture Model
① K-means 가장 많이 활용!
- 정의: 주어진 데이터셋을 K개의 클러스터로 나누는 알고리즘
- 원리
1st. K개의 중심점을 임의로 선택하고, 각 데이터 포인트를 가장 가까운 중심점에 할당
2nd. 각 클러스터의 중심(centroid)을 다시 계산
3rd. 이 과정을 중심이 더 이상 변화하지 않을 때까지 반복
- 장점:
- 계산 속도가 빠르고, 대용량 데이터셋에서도 효율적으로 동작함
- 클러스터가 구형에 가까운 경우 특히 잘 작동함
- 단점:
- 클러스터의 개수(K)를 미리 정해야 함
- 초기 중심점 선택에 민감; 초기 센트로이드 위치에 따라 성능이 달라짐
- 클러스터의 모양이 구형이 아닌 경우 성능이 저하될 수 있음
- 반복 횟수가 많을 경우 수행시간이 느려짐
- 이상치(outliers)에 민감
→ sklearn의 K-means 모델 : kmeans = KMeans(n_clusters=k, init=‘k-means++’, n_init=10, max_iter=300, random_state=42)
- 실루엣 계수 (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으로 갈수록 평균 실루엣 계수가 감소하고, 특정 클러스터는 매우 낮은 실루엣 계수를 가짐; 클러스터가 과도하게 분할되어 데이터가 적절하게 군집화되지 못한 것을 의미
② Hierarchical Clustering(계층적 군집화) : 데이터를 하나하나 계층에 따라 순차적으로 클러스터링
- 정의: 계층적 군집화는 데이터 간의 거리를 측정하여, 데이터 포인트들을 계층 구조로 묶어가는 방식입니다.
- 원리:
- 병합형(Agglomerative): 모든 데이터 포인트를 개별 클러스터로 시작해, 가장 가까운 두 클러스터를 반복적으로 병합
- 분할형(Divisive): 모든 데이터를 하나의 클러스터로 시작해, 반복적으로 가장 큰 클러스터를 분할
- 장점:
- 클러스터의 개수를 미리 알(지정할) 필요가 없음
- 다양한 클러스터링 구조를 시각적으로 나타낼 수 있음
- 단점:
- 계산 복잡도가 높아 대규모 데이터셋에서는 비효율적
- 한번 병합된 클러스터는 다시 분할할 수 없음
③ DBSCAN (Density-Based Spatial Clustering of Applications with Noise) : 밀도 기반 군집화 알고리즘
- 원리:
- 데이터 포인트의 밀도(특정 거리 내의 데이터 포인트 수)를 기준으로 클러스터를 형성
- 핵심 포인트(Core point), 경계 포인트(Border point), 노이즈 포인트(Noise point)로 데이터를 분류
- 밀도가 높은 영역을 클러스터로 식별함
[DBSCAN 알고리즘 원리]
* Core Points (핵심 포인트)
- 빨간색 점
- 반경 Eps 내에 최소한 MinPts 이상의 다른 포인트들이 포함된 포인트
- MinPts = 4로 설정되어 있어, 각 빨간색 포인트의 주변에 적어도 3개 이상의 이웃 포인트가 있는 것을 볼 수 있음
* Border Points (경계 포인트)
- 노란색 점
- 반경 Eps 내에 MinPts 만큼의 이웃은 없지만, 핵심 포인트에 인접한 포인트
- 즉, 다른 클러스터와의 경계에 위치한 포인트
* Noise Points (노이즈 포인트)
- 파란색 점
- 반경 Eps 내에 이웃 포인트가 MinPts 미만인 포인트
- 어떤 클러스터에도 속하지 않음
[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, 가우시안 혼합 모델)
- 정의: 데이터가 여러 개의 가우시안 분포(정규 분포)의 조합으로 구성되어 있다고 가정하는 확률적 모델
- 원리:
- 각 클러스터는 가우시안 분포로 표현됨 (군집의 모양/크기/밀집도/방향이 다른 데이터 셋에 대해 가우시안 분포를 이루는 각 군집을 찾아냄; 타원형 군집 생성)
- 데이터가 각 가우시안 분포에 속할 확률을 계산함; 데이터 포인트가 어느 클러스터에 속할지 결정
- 장점:
- 클러스터의 모양이 비구형이거나 겹치는 경우에도 잘 작동
- 확률 기반 접근으로 좀 더 유연한 클러스터링이 가능
- 단점:
- 클러스터의 개수를 미리 정의해야 함
- EM 알고리즘을 사용해 최적화하므로 계산 복잡도가 높을 수 있음
- 가우시안 분포를 가정하기 때문에 분포가 정규 분포와 다를 경우 성능이 저하될 수 있음
📙 내일 일정
- 머신러닝 실습
'TIL _Today I Learned > 2024.08' 카테고리의 다른 글
[DAY 30] 추천 시스템, 최적화 (1) | 2024.08.23 |
---|---|
[DAY 29] Machine Learning 실습 (0) | 2024.08.22 |
[DAY 27] 분류 / 회귀 모델 (0) | 2024.08.20 |
[DAY 26] Machine Learning 개론 (1) | 2024.08.19 |
[DAY 25] Django 웹 애플리케이션 개발, 웹 크롤링 (0) | 2024.08.14 |