
프로그래밍 방식은 사람이 규칙을 정의함
예: 고양이 vs 강아지 이미지 분류
def prediction(image):
# 어떻게 구분할까? 규칙을 정의하기 어렵다
return result
조명, 각도, 배경 등 수많은 변수로 인해 하드코딩 방식은 불가능
실제론 사람이 규칙을 정의하지 않고, 기계가 규칙을 학습하도록 함 → 머신러닝
Train (훈련 데이터)*: 모델이 학습하는 데이터
Validation (검증 데이터)*: 하이퍼파라미터 튜닝 / 과적합 방지
Test (테스트 데이터)*: 성능 평가용 데이터 (실제 서비스에 가까움)
| 구분 | 설명 | 예시 |
|---|---|---|
| 매개변수 (parameter) | 학습으로 자동 결정됨 | 가중치 , 편향 |
| 하이퍼파라미터 | 사용자가 설정해야 함 | 학습률 , 에포크 수, 레이어 수 등 |
이진 분류*: 0 또는 1, 스팸 or 정상
다중 클래스 분류*: 과학, 영어, 수학 등 3개 이상 분류
| 학습 방식 | 설명 | 예시 |
|---|---|---|
| 지도 학습 (Supervised) | 정답 라벨 존재 | 스팸 분류, 감성 분류 |
| 비지도 학습 (Unsupervised) | 정답 없음 | 클러스터링, 토픽 모델링 |
| 자기지도 학습 (Self-Supervised) | 라벨을 스스로 생성 | Word2Vec, BERT |
샘플(Sample): 하나의 데이터 (벡터 한 줄)
특성(Feature): 입력의 각 변수 (열 단위)
예 : ➡️특성3개, 샘플 1개
| 예측 Positive | 예측 Negative | |
|---|---|---|
| 실제 Positive | TP | FN |
| 실제 Negative | FP | TN |
⚠️ 정확도는 클래스 불균형일 때 신뢰할 수 없음
| 개념 | 설명 | 문제점 |
|---|---|---|
| 과적합 (Overfitting) | 훈련 데이터만 지나치게 학습 | 테스트 데이터에서 성능 저하 |
| 과소적합 (Underfitting) | 학습 부족 | 훈련 데이터조차 성능 저조 |
EarlyStopping으로 과적합 방지 가능
: 기울기 (가중치)
: 절편 (편향)
: 학습률 (learning rate)
너무 크면 발산, 너무 작으면 학습 느림
- 결과가 이상이면 1로 분류, 미만이면 0으로 분류
- 출력은 확률 값으로 해석됨