| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 프로그래머스lv2
- list comprehension
- 깊은복사
- 다형성
- 기본클래스
- OpenCV
- 제네릭프로그래밍
- 데이터사이언스
- 백준
- 스택
- 코드잇
- 멤버함수로구현
- python
- 람다식
- c++코딩테스트합격자되기
- C++
- 유도클래스
- 코딩테스트
- 주피터
- 얕은복사
- 11382번
- 참조자
- 점프투파이썬
- 동적바인딩
- 연산자오버로딩
- OOP
- 포인터
- STL
- 상속
- 인프런
- Today
- Total
WjExplor Story
위클리 페이퍼 진행_2025.10.20 본문
Q. 지도 학습과 비지도 학습의 차이는 무엇인가요?
발표 자료 :
지도 학습과 비지도 학습의 가장 큰 차이는 '정답의 유무'입니다.
지도 학습은 레이블이 있는 데이터로 학습하여 미지의 정답을 예측하는 방식이고, 비지도 학습은 레이블 없이 데이터 내의 숨겨진 패턴과 구조를 스스로 발견하는 방식입니다.
지도 학습은 명확한 목표(정답 예측)가 있지만, 비지도 학습은 탐색적으로 데이터의 특성을 이해하는 데 초점을 둡니다
=> 지도학습은 다양한 피처(Feature)와 결정 값인 레이블(Label)로 학습 한 뒤, 별도의 테스트 데이터 세트에서 미지의 레이블을 예측합니다.
(* 피처(Feature)는 데이터 세트의 일반 속성이고, 레이블(Label)은 데이터 학습을 위해 주어지는 정답 데이터입니다.)
즉, 지도학습은 명확한 정답이 주어진 데이터를 먼저 학습한 뒤 미지의 정답을 예측하는 방식입니다.
데이터의 패턴을 인식해서 학습 데이터를 만듭니다. 그리고 모델을 생성하고 테스트 데이터를 이용하여 예측합니다.
프로세스는 [데이터 세트 분리] => [모델 학습] => [예측 수행] => [평가]로 진행됩니다.
비지도 학습은 정답이 주어지지 않은 데이터로 학습하기 때문에 데이터 내에 숨겨진 구조, 패턴, 특성을 찾아내는데 중점을 둡니다.
군집화(Clustering) 비슷한 특성을 가진 데이터끼리 그룹으로 묶거나
차원 축소 (Dimensionality Reduction) 데이터의 피처가 너무 많을때, 중요한 특성만 남기고 압축합니다.
프로세스는 [데이터 탐색 및 패턴 인식] => [모델링(군집화 등)] => [결과 해석] 으로 진행됩니다.
Q. 손실 함수(loss function)란 무엇이며, 왜 중요한가요?
발표 자료 :
손실 함수는 모델의 예측이 얼마나 틀렸는지를 수치화하는 '채점 기준'이자, 모델이 어떻게 개선되어야 하는지 방향을 알려주는 '내비게이션'입니다.
경사 하강법을 통해 손실 함수를 미분하여 기울기를 계산하고, 손실이 감소하는 방향으로 가중치를 반복적으로 조정함으로써 모델이 스스로 최적의 상태를 찾아갑니다.
즉, 손실 함수는 단순히 성능을 측정하는 것을 넘어, 학습의 방향성을 제시하는 머신러닝 학습의 핵심 요소입니다
=> 머신러닝 모델이 얼마나 똑똑한지 알아보기 위해서는 '시험'을 보고 '채점'을 해야 합니다.
여기서 손실 함수는 모델의 예측이 실제 정답과 얼마나 다른지를 계산하는 '채점 기준' 또는 '벌점 계산기' 역할을 합니다.
* 예측값과 실제값의 차이가 클수록 손실(Loss), 즉 벌점은 커집니다.
* 반대로 차이가 작을수록 손실(Loss)은 작아집니다.
* 따라서, 머신러닝 학습의 목표는 이 손실(벌점)을 가장 작게 만드는 것입니다.
예를 들어, 집값 예측 모델에서 실제 집값이 5억인데 모델이 6억으로 예측했다면, 그 차이인 1억이 손실을 계산하는 기준이 됩니다.
2. 손실 함수는 왜 중요한가? - "더 똑똑해지기 위한 내비게이션"
손실 함수는 단순히 벌점을 매기는 데서 그치지 않습니다. 모델이 어떻게 하면 더 똑똑해질 수 있는지 '방향'을 알려주는 내비게이션 역할을 하기 때문에 중요합니다.
이 과정을 경사 하강법(Gradient Descent)이라고 부릅니다.
1. 모델이 예측을 한 뒤, 손실 함수를 통해 벌점을 계산합니다.
2. 그다음, "어떻게 하면 이 벌점을 가장 효과적으로 줄일 수 있을까?"라는 질문을 던집니다.
3. 손실 함수를 미분하여 '기울기(Gradient)'를 계산하는데, 이 기울기는 손실이 가장 가파르게 증가하는 방향을 알려줍니다.
4. 모델은 그 반대 방향, 즉 손실이 가장 가파르게 감소하는 방향으로 자신의 파라미터(가중치 w)를 아주 조금씩 수정합니다.
이 과정을 수만, 수백만 번 반복하면서 모델은 손실이 가장 낮은 지점, 즉 가장 정답을 잘 맞히는 최적의 상태를 스스로 찾아갑니다.
3. 딥러닝에서의 손실 함수
딥러닝 모델은 매우 복잡한 함수(f(g(h(x))) 구조)이기 때문에, 손실 함수의 모양이 단순한 그릇 모양(볼록, Convex)이
아닙니다. 마치 험준한 산맥처럼 수많은 언덕과 계곡(지역 최솟값, Local Minima)이 있는 울퉁불퉁한 모양입니다.
* 과거의 고민: "이러면 가장 깊은 계곡(전역 최솟값)을 어떻게 찾아가지?"
* 딥러닝의 해답: 굳이 가장 깊은 단 하나의 계곡을 찾지 않아도 괜찮습니다. 손실 함수가 알려주는 방향을 따라 내려가다 보면,
충분히 깊고 넓은 계곡(좋은 성능을 내는 지점)에 도달할 수 있기 때문입니다.
여기서 활성 함수(Activation Function)는 모델이 직선적인 관계만 학습하는 것을 넘어, 복잡하고 비선형적인 패턴(예: 구불구불한
데이터)을 학습할 수 있게 해주는 역할을 합니다. 이 활성 함수 때문에 손실 함수의 모양이 복잡해지지만, 덕분에 딥러닝은 훨씬
어려운 문제들을 풀 수 있게 됩니다.
(* L1, L2 규제: 이것은 손실 함수에 추가하는 '옵션'입니다. 모델이 훈련 데이터에만 너무 과하게 학습(과적합) 하지 않도록, "가중치(w)를 너무 복잡하게 만들지 마!"라고 제약을 거는 장치입니다.)
Q. 모델 학습 시 발생할 수 있는 편향과 분산에 대해 설명하고, 두 개념의 관계에 대해 설명해 주세요.
발표 자료 :
"편향은 모델이 너무 단순해서 발생하는 '체계적 오류'이고, 분산은 모델이 너무 복잡해서 발생하는 '불안정성'입니다.
두 개념은 모델 복잡도에 따라 시소처럼 움직이는 트레이드오프 관계에 있습니다.
단순한 모델은 높은 편향과 낮은 분산(과소적합)을, 복잡한 모델은 낮은 편향과 높은 분산(과적합)을 보입니다.
따라서 교차 검증과 규제 기법을 활용하여 편향과 분산의 합이 최소가 되는 최적의 균형점을 찾아야 하며, 이것이 바로 모델의 일반화 성능을 높이는 핵심입니다."
=> 모델이 저지르는 오류를 두 가지 유형으로 나누어 볼 수 있습니다. 과녁에 사격을 하는 것으로 비유해 보겠습니다.
편향(Bias)은 '영점 조준' 문제입니다.
* 높은 편향: 총의 영점이 잘못 잡혀서, 아무리 안정적으로 쏴도 과녁의 중심(정답)이 아닌 엉뚱한 곳에 계속 맞는 상황입니다.
* 즉, 모델이 너무 단순해서 데이터의 복잡한 패턴을 제대로 학습하지 못해, 예측값이 체계적으로 정답에서 벗어나는 오류를
의미합니다.
분산(Variance)은 '사수의 흔들림' 문제입니다.
* 높은 분산: 사수가 숨을 고르지 못하고 손을 떨어서, 쏠 때마다 총알이 과녁 여기저기에 흩어지는 상황입니다.
* 즉, 모델이 너무 복잡해서 훈련 데이터의 아주 작은 노이즈까지 전부 학습해버린 결과, 새로운 데이터가 들어올 때마다
예측값이 크게 흔들리는 오류를 의미합니다.
우리의 목표는 영점도 잘 맞고(낮은 편향), 손도 흔들리지 않는(낮은 분산) 사수가 되는 것입니다.
편향과 분산은 모델의 복잡도에 따라 시소처럼 움직이는 트레이드오프(Trade-off) 관계에 있습니다.
단순한 모델 (예: 선형 회귀)
* 높은 편향: 데이터의 복잡한 패턴을 직선 하나로 단순하게 예측하려니, 실제 정답과 차이가 클 수밖에 없습니다.
* 낮은 분산: 어떤 데이터로 학습해도 결과는 거의 비슷한 직선으로 예측되므로, 일관성은 높습니다.
* 이 상태를 과소적합(Underfitting)이라고 합니다.
복잡한 모델 (예: 고차 다항 회귀)
* 낮은 편향: 훈련 데이터의 모든 점을 지나가도록 구불구불하게 모델을 만드니, 훈련 데이터에 대한 예측은 거의 완벽합니다.
* 높은 분산: 훈련 데이터가 조금만 바뀌어도 모델의 모양이 완전히 뒤바뀌므로, 예측이 매우 불안정합니다.
* 이 상태를 과적합(Overfitting)이라고 합니다.
편향과 분산의 합이 가장 낮은 최적의 모델은 어떻게 찾을까요?
1. 교차 검증 (Cross-Validation)
* 훈련 데이터를 다시 훈련용과 검증용으로 나눕니다. 모델을 훈련용 데이터로 학습시킨 뒤, 처음 보는 데이터인 검증용 데이터로 성능을 평가합니다.
* 훈련 에러는 낮은데 검증 에러가 높게 나타나면 '분산이 높다(과적합)'고 판단하고 모델의 복잡도를 낮춥니다.
* 반대로 둘 다 높으면 '편향이 높다(과소적합)'고 판단하고 모델의 복잡도를 높입니다.
* 우리는 이 검증 에러가 가장 낮아지는 지점을 최적의 모델 복잡도로 선택합니다.
2. 규제 (Regularization)
* 복잡한 모델(낮은 편향, 높은 분산)에 '패널티'를 부여하는 기술입니다.
* 손실 함수에 "모델을 너무 복잡하게 만들지 마!"라는 규제 항(L1, L2 등)을 추가하여, 모델이 과도하게 훈련 데이터에 맞춰지는 것을 방지합니다.
* 즉, 의도적으로 편향을 약간 높이는 대신 분산을 크게 낮춰서 전체 오류를 줄이는 효과를 가져옵니다.
Q. K-폴드 교차 검증에서 K의 값을 선택할 때 고려해야 할 점은 무엇인가요?
발표 자료 :
"K-폴드 교차 검증에서 K값 선택은 성능 추정치의 편향과 분산 사이의 트레이드오프입니다.
K가 작으면 추정치는 안정적이지만 성능이 과소평가될 수 있고(높은 편향), K가 크면 실제 성능에 가깝게 측정되지만 추정치가 불안정하고 계산 비용이 큽니다(높은 분산).
따라서 특별한 이유가 없다면, 수많은 실험을 통해 경험적으로 가장 균형이 좋다고 입증된 K=10을 표준으로 사용하며, 데이터 크기나 계산 자원에 따라 K=5를 선택하는 것이 일반적입니다."
=> K-폴드 교차 검증의 목표는 모델의 일반화 성능을 신뢰도 높게 추정하는 것입니다. 어떤 K값을 선택하는지에 따라 이 추정치의
특성이 달라지며, 핵심은 "편향-분산 상충 관계(Bias-Variance Trade-off)"를 이해하는 것입니다.
1. K가 작을 경우 (예: K=3)
훈련 데이터의 양: 각 폴드(fold)에서 훈련에 사용되는 데이터의 양이 전체의 2/3로 줄어듭니다.
* 장점: 낮은 분산 & 빠른 속도
* 검증 세트(test set)가 크기 때문에 성능 평가 결과의 분산이 낮아져 안정적입니다.
* 모델을 K번만 훈련하면 되므로 계산 비용이 적게 듭니다.
* 단점: 높은 편향
* 전체 데이터보다 적은 양으로 훈련하므로, 모델의 성능이 과소평가될 수 있습니다 (편향이 높음). 즉, "모델의 성능이 실제보다
안 좋게 측정될" 가능성이 있습니다.
2. K가 클 경우 (예: K=10 또는 그 이상)
훈련 데이터의 양: 각 폴드에서 훈련 데이터의 양이 전체의 9/10 이상으로, 거의 전체 데이터에 가깝습니다.
* 장점: 낮은 편향
* 거의 전체 데이터로 훈련한 모델의 성능과 유사하게 측정되어, 성능 추정치의 편향이 낮습니다. 즉, "모델의 실제 성능과
가깝게 측정될" 가능성이 높습니다.
* 단점: 높은 분산 & 느린 속도
* 검증 세트가 작아지면서, 특정 데이터에 따라 성능 평가 결과가 크게 흔들릴 수 있습니다 (분산이 높음).
* 모델을 K번 훈련해야 하므로 K가 커질수록 계산 비용이 크게 증가합니다.
* 특히 K=N (데이터 개수)일 경우를 LOOCV(Leave-One-Out Cross-Validation)라고 하며, 편향은 최소화되지만 분산이 매우 커지고 계산 비용이 막대해지는 단점이 있습니다.
현실적인 선택 기준으로는 K=5 또는 K=10 을 사용합니다.
1. 일반적인 추천 (Rule of Thumb):
* 학계와 산업계에서 가장 널리 사용되는 값은 K=5 또는 K=10입니다.
* 이 값들은 수많은 실험을 통해 편향과 분산 사이의 균형을 가장 잘 맞추는 것으로 알려져 있습니다.
2. 데이터셋의 크기:
* 데이터가 매우 클 경우: K를 3이나 5처럼 작게 잡아도 훈련 데이터가 충분하며, 계산 비용을 줄이는 것이 더 중요할 수
있습니다.
* 데이터가 매우 작을 경우: K를 크게 하거나 LOOCV를 사용해 훈련 데이터를 최대한 확보해야 의미 있는 훈련이 가능합니다.
3. 계산 비용 (Computational Cost):
* 딥러닝 모델처럼 한 번 훈련하는 데 몇 시간 또는 며칠이 걸리는 경우, K=10도 부담스러울 수 있습니다. 이때는 K=3 또는 K=5를 선택하는 것이 현실적인 대안입니다.
(* LOOCV는 n개의 데이터에서 1개를 Test Set으로 정하고 나머지 n-1개의 데이터로 모델링을 하는 방법을 의미합니다.)
(* 트레이드 오프 관계는 한 가지를 얻기 위해 다른 하나를 희생해야 하는 상충 관계를 의미합니다.)
'AI 엔지니어 부트캠프 > 파이썬 데이터 분석 기초와 머신 러닝 기초' 카테고리의 다른 글
| 위클리 페이퍼 진행_2025.10.27 (0) | 2025.10.27 |
|---|---|
| 1-8. 머신러닝 기본기(2)_2025.10.15 (0) | 2025.10.15 |
| 1-8. 머신러닝 기본기_2025.10.14 (1) | 2025.10.14 |
| 위클리 페이퍼 진행_2025.10.13 (0) | 2025.10.13 |
| 펭귄 데이터셋 EDA_데이터분석.ipynb (0) | 2025.10.02 |