본문 바로가기
AI

[AI] 머신러닝 핵심 개념 요약 정리 - Day_2

by Lcoding 2025. 5. 31.
반응형

 

안녕하세요, 개인 공부한 내용을 정리하는 게시글입니다.

 

머신러닝 핵심 개념 요약 정리 - Day_2

 

1. 경사 하강법 (Gradient Descent)

경사 하강법은 손실함수를 줄이기 위한 최적화 알고리즘입니다.

- 에포크 (Epoch)

  • **전체 훈련 세트를 1회 반복 학습한 것을 1에포크(epoch)**라고 합니다.

- 경사 하강법의 종류

방법 설명 특징
배치 경사 하강법 전체 데이터 사용 가장 안정적이지만 느림
확률적 경사 하강법 (SGD) 샘플 하나씩 사용 빠르지만 불안정
미니배치 경사 하강법 일정량 묶음 사용 속도와 안정성의 균형 → 딥러닝에서 주로 사용
 

 

 2. 손실 함수 (Loss Function)

 

모델이 얼마나 잘못 예측하고 있는지 수치적으로 나타냄.

  • 손실값이 클수록 모델 성능이 나쁨
  • 회귀 문제에 주로 사용
  • 분류 문제에서는 확률 기반 손실함수를 사용

-  분류 문제에 일반적인 손실함수는 사용 불가

→ 연속적인 오차 개념이 없기 때문

문제 유형 손실 함수
이진 분류 로지스틱 손실 / 이진 크로스엔트로피
다중 분류 크로스엔트로피 손실
 

3. 결정 트리 (Decision Tree)

 

from sklearn.tree import DecisionTreeClassifier

dt = DecisionTreeClassifier(max_depth=3)
dt.fit(X_train, y_train)
print(dt.feature_importances_)

- 특징

  • 표준화 불필요
  • 직관적이며 해석 쉬움
  • feature_importances_: 각 특성의 중요도 확인 가능

 

- 분할 기준: 불순도 (Impurity)

기준 수식 설명
지니 불순도 기본값
엔트로피 pilog(pi) 정보 이득 기반
DecisionTreeClassifier(criterion='gini')  # 또는 'entropy'

 

 

4. 교차 검증 (Cross Validation)

  • 데이터셋을 여러 개로 나누어 반복 평가
  • 일반화 성능 확인에 유용
from sklearn.model_selection import cross_validate

cross_validate(model, X, y, cv=5)

 

5. 그리드 서치 (GridSearchCV)

하이퍼파라미터 탐색 + 교차 검증을 한 번에 수행하는 강력한 도구

from sklearn.model_selection import GridSearchCV

params = {'min_impurity_decrease': [0.0001, 0.0002, 0.0003]}
gs = GridSearchCV(DecisionTreeClassifier(), params, n_jobs=-1, cv=5)
gs.fit(X_train, y_train)

best_model = gs.best_estimator_
gs.best_params_        # 최적 파라미터
gs.cv_results_['mean_test_score']  # 교차검증 평균 점수

6. 랜덤 서치 (RandomizedSearchCV)

  • 하이퍼파라미터 조합을 랜덤하게 선택
  • 속도가 빠르고 범위가 넓은 탐색에 유리
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import uniform, randint

params = {
  'max_depth': randint(2, 10),
  'min_samples_split': uniform(0.01, 0.2)
}
rs = RandomizedSearchCV(DecisionTreeClassifier(), params, n_iter=20)
rs.fit(X_train, y_train)

 

7. 앙상블 학습 (Ensemble Learning)

- 랜덤 포레스트 (Random Forest)

  • 여러 결정트리를 랜덤 샘플로 훈련 → 평균 결과
  • oob_score=True 설정 시 교차검증 없이 성능 평가 가능
from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(oob_score=True)
rf.fit(X_train, y_train)
print(rf.oob_score_)

✔ 엑스트라 트리 (Extra Trees)

  • 랜덤 포레스트와 유사하나,
    • 전체 데이터 사용
    • 노드 분할 시 무작위 선택

✔ 그레이디언트 부스팅 (Gradient Boosting)

  • 이전 트리의 오차를 보완하는 방식
  • 느리지만 정밀

✔ 히스토그램 기반 부스팅

  • 빠른 부스팅을 위해 데이터를 구간(히스토그램)으로 나누어 학습
  • 예: HistGradientBoostingClassifier

 

8. 군집 알고리즘 (Clustering)

- 시각화 함수 요약

함수 기능
plt.hist() 히스토그램
plt.scatter() 산점도
plt.plot() 선 그래프
plt.bar() 막대 그래프
 

✔ K-평균 (K-Means) 알고리즘

  • 데이터를 자동으로 K개의 그룹으로 나눔
  • 예: 바나나, 사과, 파인애플 이미지 구분

- K 값은 어떻게 정할까?

  • 엘보우 방법: 군집 수 vs SSE 그래프에서 꺾이는 지점을 찾음

 

9. 차원 축소 (Dimensionality Reduction)

✔ 주성분 분석 (PCA: Principal Component Analysis)

- 고차원 데이터를 저차원으로 변환 → 시각화/속도 향상

from sklearn.decomposition import PCA

pca = PCA(n_components=50)
target = data.reshape(-1, 100*100)
pca_target = pca.fit_transform(target)

origin_target = pca.inverse_transform(pca_target).reshape(-1, 100, 100)
  • n_components: 유지할 주성분 수
  • 변환된 특성은 분산이 큰 순서대로 정렬
  • 복원 시 inverse_transform() 사용

 

*** 내용 요약 ***

주제 요약
경사하강법 손실을 줄이기 위한 기울기 따라 이동
손실함수 오차의 척도 (작을수록 좋음)
결정트리 직관적인 분류모델, 전처리 필요 없음
교차검증 모델 성능을 더 공정하게 평가
그리드/랜덤서치 하이퍼파라미터 최적화
앙상블 여러 모델을 결합하여 더 강력한 모델
군집화 라벨 없이 그룹 찾기 (KMeans 등)
차원축소 고차원 → 저차원, 시각화나 연산 속도에 유리

 

 

감사합니다.

 

 

 

 

반응형

loading