반응형
안녕하세요, 개인 공부한 내용을 정리하는 게시글입니다.
머신러닝 핵심 개념 요약 정리 - 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 등) |
차원축소 | 고차원 → 저차원, 시각화나 연산 속도에 유리 |
감사합니다.
반응형
'AI' 카테고리의 다른 글
[AI] LLM 핵심 개념 요약 정리 (4) | 2025.06.15 |
---|---|
[AI] 딥러닝 핵심 개념 요약 정리 (0) | 2025.06.06 |
[AI] 머신러닝 핵심 개념 요약 정리 - Day_1 (0) | 2025.05.30 |
LangChain(랭체인)이란? (2) | 2025.03.22 |
청크(Chunk)와 임베딩 (Embedding)이란 (1) | 2025.03.10 |