안녕하세요! 오늘은 본캠프 35일차 입니다!
오늘의 베이직 문제!
1번. 박스플롯으로 이상치 확인하기
박스플롯을 통해 변수의 분포 및 이상치를 시각적으로 탐지할 수 있어야 한다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 샘플 데이터
data = {
'Department': ['HR', 'HR', 'HR', 'IT', 'IT', 'IT', 'Finance', 'Finance', 'Finance'],
'Salary': [50000, 52000, 100000, 70000, 72000, 75000, 60000, 61000, 250000]
}
df = pd.DataFrame(data)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 샘플 데이터
data = {
'Department': ['HR', 'HR', 'HR', 'IT', 'IT', 'IT', 'Finance', 'Finance', 'Finance'],
'Salary': [50000, 52000, 100000, 70000, 72000, 75000, 60000, 61000, 250000]
}
df = pd.DataFrame(data)
plt.figure(figsize=(8,6))
sns.boxplot(x='Department', y='Salary', data=df)
plt.title('Salary by Department')
plt.xlabel('Department')
plt.ylabel('Salary')
plt.grid(True)
plt.show

2번. 상관관계 히트맵 그리기 및 해석
여러 변수 간의 상관관계를 계산하고, 히트맵을 통해 시각적으로 해석할 수 있어야 한다.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 샘플 데이터
data = {
'height': [160, 165, 170, 175, 180, 185],
'weight': [50, 55, 65, 70, 75, 85],
'age': [22, 25, 27, 29, 31, 33],
'score': [80, 82, 84, 90, 93, 95]
}
df = pd.DataFrame(data)
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 샘플 데이터
data = {
'height': [160, 165, 170, 175, 180, 185],
'weight': [50, 55, 65, 70, 75, 85],
'age': [22, 25, 27, 29, 31, 33],
'score': [80, 82, 84, 90, 93, 95]
}
df = pd.DataFrame(data)
corr_matrix = df.corr()
plt.figure(figsize=(8,6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt=".2f")
plt.title('Correlation Matrix Heatmap')
plt.show()

그리고 준성튜터님의 세션강의를 들었습니다!
01. 디시전 트리 (Decision Tree)
디시전 트리는 의사결정 과정을 트리 구조로 나타낸 알고리즘입니다. 마치 스무고개처럼 질문을 통해 데이터를 분류하며, 사람이 의사결정하는 방식과 매우 유사합니다.
"만약 승객이 여성이라면? 그리고 1등석 승객이라면?" 이런 식으로 조건을 나누어 최종 결정에 도달합니다.
디시전 트리의 핵심 특징:
- 해석 가능성: 결정 과정을 쉽게 설명할 수 있음
- 비선형 관계: 복잡한 패턴도 포착 가능
- 특성 선택: 중요한 변수를 자동으로 선별
- 데이터 전처리: 스케일링이나 정규화 불필요
디시전 트리 분석의 원리
디시전 트리는 "어떤 질문을 해야 가장 효과적으로 분류할 수 있을까?"를 수학적으로 해결합니다. 핵심은 불순도(Impurity)를 최소화하는 분할점을 찾는 것입니다.
1단계: 불순도 측정 - 지니 불순도(Gini Impurity)
지니 불순도는 데이터가 얼마나 섞여있는지 측정하는 지표입니다. 값이 낮을수록 순수한(잘 분류된) 상태를 의미합니다.
2단계: 정보 획득(Information Gain) 계산
정보 획득은 분할 전후 불순도의 감소량을 측정합니다. 정보 획득이 클수록 좋은 분할입니다.
3단계: 트리 구축 과정
디시전 트리 구축은 탐욕적(Greedy) 알고리즘입니다:
- 최고 정보 획득 찾기: 모든 가능한 분할 중 정보 획득이 최대인 것 선택
- 재귀적 분할: 각 자식 노드에서 1단계 반복
- 종료 조건: 더 이상 분할할 수 없거나 조건을 만족할 때까지
GridSearch를 활용한 모델 최적화
GridSearch는 여러 하이퍼파라미터 조합을 체계적으로 테스트하여 최적의 모델을 찾는 방법입니다. 수동으로 하나씩 테스트하는 대신 자동화된 방식으로 최적 조합을 발견할 수 있습니다.
k-fold 교차 검증이란?
K-fold 교차 검증(K-fold Cross-Validation)은 머신러닝 모델의 성능을 평가하는 데 널리 사용되는 통계적 방법입니다. 이는 모델이 새로운, 보지 못한 데이터에 얼마나 잘 일반화되는지를 평가하기 위해 데이터를 여러 번 나누어 훈련하고 검증하는 방식입니다.
K-fold 교차 검증의 필요성
모델을 훈련시킬 때, 단순히 데이터를 훈련 세트와 테스트 세트로 한 번만 나누는 방식(홀드아웃 방식)은 다음과 같은 문제점을 가질 수 있습니다:
- 데이터 편향: 특정 데이터 분할 방식에 따라 모델 성능이 크게 달라질 수 있습니다. 운이 좋게 쉬운 테스트 세트가 할당되면 성능이 과대평가될 수 있고, 어려운 테스트 세트가 할당되면 과소평가될 수 있습니다.
- 데이터 활용 부족: 특히 데이터셋이 작을 경우, 테스트 세트로 분리된 데이터는 훈련에 사용되지 못하므로 모델이 충분히 학습되지 않을 수 있습니다.
- 과적합 평가: 훈련 세트에만 너무 잘 맞는 모델(과적합된 모델)이더라도 테스트 세트 성능이 우연히 좋게 나올 수 있습니다.
K-겹 교차 검증은 이러한 문제점들을 완화하여 모델 성능에 대한 더 안정적이고 신뢰할 수 있는 추정치를 제공합니다.
02. 랜덤 포레스트 (Random Forest)
랜덤 포레스트는 "집단 지성"의 원리를 활용한 앙상블 알고리즘입니다. 여러 개의 디시전 트리를 독립적으로 학습시키고, 이들의 예측을 종합하여 최종 결정을 내립니다.
- "한 사람의 판단보다 여러 사람의 판단이 더 정확하다"는 아이디어를 머신러닝에 적용한 것입니다.
핵심 아이디어:
- 배깅(Bagging): 부트스트랩 샘플링으로 다양한 훈련 데이터 생성
- 특성 무작위성: 각 분할에서 일부 특성만 고려
- 투표 방식: 여러 트리의 예측을 종합 (분류: 다수결, 회귀: 평균)
랜덤 포레스트 분석의 원리
랜덤 포레스트는 편향-분산 트레이드오프를 해결하는 핵심 원리를 가지고 있습니다. 개별 트리의 높은 분산을 앙상블을 통해 낮추면서도 편향은 유지합니다.
- 1단계: 부트스트랩 샘플링
- 원본 데이터 N개에서 N개를 복원 추출
- 각 트리마다 서로 다른 부트스트랩 샘플 사용
- 각 트리가 약간씩 다른 패턴을 학습
- 과적합 방지 및 일반화 성능 향상
- 부트스트랩 샘플링은 원본 데이터에서 복원 추출로 새로운 데이터셋을 만드는 방법입니다.
- 2단계: 특성 무작위성 (Random Feature Selection)방법:
- 전체 특성 수를 p라고 할 때, 보통 √p 개의 특성만 고려
- 각 분할마다 다른 특성 조합 사용
- 트리 간 상관관계 감소로 앙상블 효과 극대화
- 전체 특성: 9개
- 각 분할에서 고려할 특성: √9 ≈ 3개
- 가능한 조합: C(9,3) = 84가지
- 특성 무작위성은 각 노드 분할 시 전체 특성 중 일부만 랜덤하게 선택하여 고려하는 방법입니다.
- 3단계: 투표 방식 (Votiong Mechanism)
- 앙상블의 최종 예측은 개별 트리들의 예측을 종합하여 결정됩니다.
03. XGBoost - 차세대 부스팅 알고리즘
XGBoost (eXtreme Gradient Boosting)는 그래디언트 부스팅을 극한으로 최적화한 알고리즘입니다. 캐글 대회 우승작의 80% 이상에서 사용될 정도로 실무에서 가장 인기 있는 머신러닝 알고리즘입니다.
XGBoost의 핵심 특징:
- 순차적 학습: 이전 모델의 오류를 다음 모델이 보완
- 정규화: L1, L2 정규화로 과적합 방지
- 병렬 처리: GPU 지원으로 빠른 학습
- 결측치 처리: 자동으로 최적의 결측치 처리 방향 학습
랜덤 포레스트 vs XGBoost:
- 랜덤 포레스트: 독립적인 트리들의 병렬 학습
- XGBoost: 오류를 보완하는 트리들의 순차 학습
아직 머신러닝은 어려운 것 같아요..! 내일도 계속 복습하고 개인과제 시작해야겠어요!
오늘도 수고 많으셨습니다~!~!
'2025 내일배움캠프 QAQC_2기' 카테고리의 다른 글
| 2025 내일배움캠프 QAQC_2기 본캠프 37일차 (0) | 2025.07.03 |
|---|---|
| 2025 내일배움캠프 QAQC_2기 본캠프 36일차 (1) | 2025.07.02 |
| 2025 내일배움캠프 QAQC_2기 본캠프 34일차 (2) | 2025.06.30 |
| 2025 내일배움캠프 QAQC_2기 본캠프 33일차 (0) | 2025.06.27 |
| 2025 내일배움캠프 QAQC_2기 본캠프 32일차 (0) | 2025.06.26 |