kyejin0412 님의 블로그
Week 8-5 머신러닝 지도학습 - 분류 본문
오늘은 머신러닝 라이브세션에서 분류를 학습했다.
소현튜터님 그저 빛.. 설명을 쉽게 잘 해주셔서 혼자 했으면 어려웠을 내용도 금방 이해가 됐다. 적용은 다른 문제지만..ㅎㅎ
코드카타는 문제 하나를 풀다 말았는데 왜 틀렸는지 모르겠어서 다른 날 다시 봐보려고 한다. 벌써 프로그래머스에서 3문제 밖에 안남았다!!! 뿌듯하기도 하고 시간의 흐름도 느껴졌다. 이번 주말은 슬렁슬렁 통계를 복습하려고 한다. 으으 통계 싫다 ㅜㅜ
머신러닝 기타 지식
- 머신러닝 할 때 고유값( 이름, 아이디) 은 빼고 해야 함. 모델이 망가짐. 이름은 의미가 없음.
- 공통적인 특성, 패턴을 찾아야 하기 때문이다.
- 인코딩 : 범주형 변수를 숫자로 바꿔주는 것
- 원핫 인코딩? 001, 010, 100 처럼 0과 1로 된 조합으로 바꿔주는것. - 과적합 조심! 컬럼 개수만큼 늘어남.
- 컬럼 5개? 00001, 00010, 00100, 01000, 10000
- pd.get_dummies()
- 컬럼이 너무 많다면 과적합 위험이 있음. 너무 자잘해짐. 이럴 땐 카테고리화해서 데이터를 나눠서 하는 걸 추천!
-
한국 0 0 0 0 1 중국 0 0 0 1 0 일본 0 0 1 0 0 베트남 0 1 0 0 0 호주 1 0 0 0 0
- 라벨 인코딩? 1,2,3,4,5 등 라벨로 바꿔주는 것.
- sklearn.LabelEncoder().fit_transform()
- 이상치(=노이즈) 처리: 혼자 동떨어져 있는 것. unnormality detection(이상치 감지)
- 모든 분류 머신러닝에 적용할 수 있는, 평가하는 중요부분!!
- precision(정밀도) : 예측 중에 실제로 몇 개 맞췄는가? 예측을 얼마나 잘했나? ex) 제조 도메인
- recall(재현율) : 실제 중에 예측이 얼마나 맞았는가? ex) 의료 도메인
- 둘 중에 뭐가 더 중요한지는 도메인에 따라 다르다.
"분류" 란?
독립변수를 통해 종속변수의 범주를 예측하는 것.
(예/아니오, 이탈/잔존, 정상/비정상) -> 로지스틱 회귀는 사실은 "분류"이다!
- 특징 및 목적
- 1️⃣ 종속변수가 범주형 변수 → 어떠한 그룹(클래스)에 속하는 지 확인할 수 있다.
- 2️⃣ 특정 그룹에 속할 확률을 함께 확인 할 수 있음 → 전체를 기준에 따라 나눠줌으로써, 단순 수치 외 전체 데이터 중 그룹에 소속되게 될 확률 확인가능
- 3️⃣ 분류기준(결정 경계)를 통해 분리 → 그룹을 나누기 위해서는 기준이 존재해야 함.
- 최적의 기준을 찾는 것 = 분류분석의 거시적인 목적!!
로지스틱 회귀 (Logistic Regression)

- 로지스틱 회귀는 정확히 말하면 "분류"이다.
- 분류는 그룹을 나누는 기준선 (=분류선) 또는 면을 찾는 것이다. 회귀는 추세선!
- 독립변수를 통해, 종속변수를 예측하기 위한 선형 결합을 함수에 적용하여 확률을 추정하는 분류 머신러닝 모델
- Yes 아니면 No일 확률을 예측한 다음, 기준(=임계값, threshold) 보다 그 확률이 높으면 1(YES), 낮으면 0(NO)으로 분류
- 한줄정리: 범주를 0/1로 매핑 → X값들의 선형 조합 → 이 값을 확률(0~1)로 바꿔줌 (시그모이드 함수) → 분류
- 로지스틱 회귀의 프로세스 중 "시그모이드 함수" 적용이 있다. 필수!
- 시그모이드 함수 (Sigmoid function) : 어떠한 숫자도 0~1 사이 확률로 바꿔줌
- 임계값 (=p, threshold) : 기준. 보통 0.5. 임계값에 따라 분류한다.
- 하이퍼 파라미터 조정 : 임계값을 노가다로 조정하는 것... 일일이 0~1 사이 숫자 중에 적절한 값을 찾기 위해 넣어본다. 기본은 0.5이다.
- 머신러닝에 정답은 없다. 반복학습이다!
- 내 생각과 머신러닝 결과가 모두 만족해야 한다. 둘 중 하나만 믿지 말자!
- 머신러닝을 몇 개 쓰냐가 중요한게 아니라 왜 이 모델을 선택했는지, 어떤 평가기준을 선택해서 봤는지, 어떤 인사이트를 얻었는지 --> 해석하는 것과 스토리라인 짜는 것이 제일 중요하다!
- 검증: G검정을 한다, -> p-value 확인 : 통계적으로 유의한가?
KNN (K-Nearest Neighbors)

- K-최근접 이웃이라고 부르며, 머신러닝에서 사용되는 분류 머신러닝 모델
- 유사한 특성을 가진 데이터는 유사한 범주에 속하는 경향이 있다는 가정하에 사용
- 거리를 기반으로 유사한 경향을 보이는 각 데이터포인트를 묶어 분류(이를 기반으로 이상치 처리에 활용할 수 있음)
- 데이터포인트들 간의 거리가 가까운 경우 묶임
- 거리는 상대적인 개념이며, 거리 측정 방식에는 2가지가 존재
- 유클리드 거리(Euclidean Distance): K-NN 알고리즘에서 가장 일반적으로 사용하는 거리측정 방식 (절대거리 측정)
- 맨해튼 거리(Manhattan Distance): 2차원 평면 공간에서 두 점 p와 q 사이의 거리를 측정하는 방법 중 하나로, 두 점 사이의 수평 및 수직 이동 거리의 합으로 정의
- K-NN 알고리즘은 ‘거리’ 기반이므로 → 해당 거리의 기준을 맞춰주는 정규화 또는 표준화 과정이 필수!!!

Decision Tree & Random Forest
- Decision Tree : 데이터를 조건문(if-else)으로 쪼개서 예측하는 분류 머신러닝 모델 (주의: 회귀도 가능)
- 가장 잘 데이터를 구분할 수 있는 기준을 찾아 순서대로 나눔

- Random Forest : 여러 개의 Decision Tree를 랜덤하게 만들어 그 결과를 투표(Voting)해서 최종 예측하는 앙상블 분류 머신러닝 모델 (현업에서 자주 쓰임)
- 결과들의 최빈값 → Random Forest 결과
- 앙상블이란? : 여러 개의 모델을 함께 사용하여 더 좋은 예측값을 도출하는 방식 (나 혼자 생각하는 것보다 팀원들과 함께 생각하여 결과도출을 하는 것이 정확하다)
- 1️⃣ Bootstrap: 전체 데이터 중 일부만 랜덤하게 뽑아 학습
- 2️⃣ Feature Randomness: 일부 변수만 랜덤하게 선택하여 분기 기준을 고름
- 3️⃣ Voting: 결과값을 다수결로 투표
- 0개의 나무 중 7개는 YES / 3개는 NO → 최종 예측: YES
- Random Forest 가 Decision Tree 보다 좋은 이유
- 과적합 방지(과적합이란, 훈련데이터셋의 정확도는 높은데, 테스트데이터에서 성능이 떨어지는 현상을 의미, 훈련데이터의 이상치(노이즈)까지 학습한 결과)
- Decision Tree는 모든 데이터를 끝까지 분류하려고 함, 이상치 데이터까지 분류! → 노이즈 학습 가능성 UP
- Random Forest는 이러한 트리들을 평균내는 원리를 가지고 있음 → 노이즈 상쇄

XGBoost, LightGBM
- XGBoost(Extreme Gradient Boosting) - 현업에서 자주 쓰임
- XGBoost는 여러 개의 약한 결정나무(weak trees) 를 순차적으로 학습시키되, 앞 트리의 오류를 다음 트리가 보완하도록 만드는 분류 머신러닝 모델
- 첫번째 트리가 예측(학습)을 함 → 오차 생김
- 두번째 트리가 첫번째 트리의 오차를 보정하려고 학습
- 세번째 트리가 두번째 트리의 오차를 보정하려고 학습
- … → 최종 예측: 여러 트리의 결과를 더한 값(마치 SQL 에서 AND 조건이 계속 붙는 식으로 정확도가 높아짐)
- 성능이 좋고 안정적이지만 속도 느림

- XGBoost는 여러 개의 약한 결정나무(weak trees) 를 순차적으로 학습시키되, 앞 트리의 오류를 다음 트리가 보완하도록 만드는 분류 머신러닝 모델
- LightGBM(Light Gradient Boosting Machine)
- Microsoft 에서 만든 모델로, 속도·메모리 효율·대용량 데이터 처리에 최적화된 분류 머신러닝 모델
- 가장 손실 감소량이 큰 leaf 노드만 선택해서 확장
- XGBoost 보다 빠르지만 과적합 위험 있음(과적합이란, 훈련데이터셋의 정확도는 높은데, 테스트데이터에서 성능이 떨어지는 현상을 의미, 훈련데이터의 이상치(노이즈)까지 학습한 결과)
- 과적합이 높은 이유: 손실 감소량이 높은 애들만 학습해서!
- Microsoft 에서 만든 모델로, 속도·메모리 효율·대용량 데이터 처리에 최적화된 분류 머신러닝 모델

'내일배움캠프-데이터분석' 카테고리의 다른 글
| Week 9-2 파이썬, SQL, 데이터 전처리 및 시각화 전체 복습 (1) | 2025.12.16 |
|---|---|
| Week 9-1 머신러닝 비지도학습 - 클러스터링 (1) | 2025.12.15 |
| Week 8-4 머신러닝과 통계의 관계, 지도학습 - 회귀 (1) | 2025.12.11 |
| [TIL] Week 8-1 Feature Scaling - 표준화, 정규화, 로그 변환 (0) | 2025.12.08 |
| [TIL] Week 7-5 통계 - 분포 종류, 검정과 오류 (0) | 2025.12.05 |