오늘 순서 ① 숫자 맞히기 🟢 빈칸(선생님과 함께) → 🟡 따라 적기 → ② 종류 맞히기 🟢 빈칸 → 🟡 따라 적기 → ✏️ 정리 퀴즈 · 칸을 다 채우면 아래에 다음 단계 안내가 떠요 · 막히면 📘 설명 · 🔍 한 줄씩 풀이 · 왼쪽 위젯을 보세요 · 마지막에 견주어 보기에 내 오렌지3 점수 적기
견주어 보기 — 블록과 코드, 점수가 같을까?
📏 모델 평가 지표 — 무엇을 재고, 어떻게 계산하나 교과서 106~112쪽 · 오렌지3 Test and Score 표 읽기
모든 지표는 시험용(테스트) 데이터에서 진짜 정답 y 와 모델의 예측 ŷ(와이 햇)을 견주어 냅니다. 학습에 쓴 데이터로 재면 «외운 문제로 본 시험»이라 점수가 부풀려져요. 예측(숫자) 모델과 분류(무엇인지) 모델은 쓰는 지표가 다릅니다.
⓪ 약자 풀이 — 왜 이런 이름일까? 풀 영어를 쪼개 보면 계산 방법이 보여요
🔢 숫자 맞히기(예측 · 회귀) 모델
| 약자 | 풀 영어 | 쪼개 읽기 — 왜 이런 이름? | 한마디 | 좋은 방향 |
|---|---|---|---|---|
| MSE | Mean Squared Error 평균 제곱 오차 | Error 오차(진짜 − 예측) → Squared 제곱(± 부호를 없애고 크게 틀린 것에 벌을 더) → Mean 평균 | 틀린 만큼을 제곱해서 평균 | ↓ 0에 가깝게 |
| RMSE | Root Mean Squared Error 평균 제곱근 오차 | MSE 에 Root(√ 루트)를 씌움 → 제곱했던 단위가 원래대로(명² → 명) | «평균 약 ○명 빗나간다» | ↓ |
| MAE | Mean Absolute Error 평균 절대 오차 | Absolute 절댓값 — 부호만 떼고 틀린 크기 그대로 → 평균 | 틀린 크기의 평균(말하기 가장 쉬움) | ↓ |
| MAPE | Mean Absolute Percentage Error 평균 절대 백분율 오차 | Percentage 백분율 — 틀린 크기를 진짜 값으로 나눠 %로 | «평균 ○% 빗나간다» | ↓ |
| R² (R2) | R-squared 결정계수 · Coefficient of Determination | R = 상관계수 r(두 값이 함께 움직이는 정도, Relation)을 ² 제곱한 값 · Determination 결정 = 정답이 달라지는 이유를 얼마나 «정해 주나(설명하나)» | 값이 다른 이유를 몇 % 설명? 0.64 = 64% 설명(64% 맞힘 아님!) | ↑ 1에 가깝게 |
| CVRMSE | Coefficient of Variation of RMSE 변동계수 RMSE | RMSE 를 평균으로 나눈 비율(Coefficient of Variation = 평균에 견준 흩어짐) | «평균의 ○% 정도 빗나감» | ↓ |
🏷️ 종류 맞히기(분류) 모델
| 약자 | 풀 영어 | 쪼개 읽기 — 왜 이런 이름? | 한마디 | 좋은 방향 |
|---|---|---|---|---|
| CA | Classification Accuracy 분류 정확도 | Classification 분류 + Accuracy 정확도 → «분류를 얼마나 정확히 했나» | 전체 중 맞힌 비율 | ↑ 1에 가깝게 |
| Prec | Precision 정밀도 | Precise = 딱 맞는, 정밀한 🎯 — 과녁에 쏜 화살이 딱 맞았나 | «○이야!» 한 것 중 진짜 ○ 헛방(헛경보)이 없나 · 스팸 거르기 | ↑ |
| Recall | Recall 재현율 · 민감도(Sensitivity) | Re-call = 다시 불러내다, 기억해 내다 📣 — 진짜 ○들을 빠짐없이 불러냈나 | 진짜 ○ 중 찾아낸 것 놓친 게 없나 · 병 찾기 | ↑ |
| Spec | Specificity 특이도 | Specific = 특정한 — 음성(아닌 것)을 콕 집어 아니라고 하나 | 진짜 음성 중 음성이라 한 것 | ↑ |
| F1 | F1 score F1 점수 | F = F-measure(측정값) 이름에서, 1 = 정밀도와 재현율을 1 : 1로 똑같이 중요하게 봄 | 정밀도 · 재현율을 합친 점수 둘 다 높아야 높음 | ↑ 1이 만점 |
| MCC | Matthews Correlation Coefficient 매튜스 상관계수 | 만든 사람(Matthews) 이름 + Correlation Coefficient 상관계수 = 예측과 정답이 함께 맞아떨어지는 정도 | 네 칸(TP · FN · FP · TN)을 모두 본 점수 | ↑ −1 ~ 1 |
| AUC | Area Under the Curve 곡선 아래 넓이 | ROC Curve(곡선) Under(아래) Area(넓이) — 그래프 아래가 넓을수록 잘 가름 | 기준을 어떻게 잡아도 잘 가르나 0.5 = 찍기, 1 = 완벽 | ↑ |
| LogLoss | Logarithmic Loss 로그 손실 | Log(로그)로 계산한 Loss(잃은 점수) — 틀린 답에 큰 확신을 주면 크게 깎임 | 정답을 얼마나 자신 있게 맞혔나 | ↓ 0에 가깝게 |
진한 줄(MSE · R² · CA · Prec · Recall)이 오늘 꼭 알아야 할 다섯 개예요. 나머지는 오렌지3 Test and Score 표에서 볼 수 있는 약자예요.
① 예측(회귀) 모델 — 숫자를 얼마나 가깝게 맞혔나 청년 인구 · 선형 회귀
| 오렌지3 열 | 이름 | 계산식 | 좋은 방향 | 이렇게 말해요 |
|---|---|---|---|---|
| MSE | 평균제곱오차 | MSE = Σ (y − ŷ)²n | 0에 가깝게 ↓ | 오차를 제곱해 평균 — 큰 실수에 벌을 크게 줌. 단위가 «명²»이라 혼자서는 크기를 느끼기 어렵고 모델끼리 견줄 때 씀 |
| RMSE | 평균제곱근오차 | RMSE = √MSE | 0에 가깝게 ↓ | MSE 에 루트 → 단위가 정답과 같아짐(명). «평균 약 ○명 빗나간다» |
| MAE | 평균절대오차 | MAE = Σ |y − ŷ|n | 0에 가깝게 ↓ | 오차의 크기만 평균 — 가장 말하기 쉬움. «평균 ○명 빗나간다». 큰 실수에 덜 민감 |
| MAPE | 평균절대백분율오차 | MAPE = 100n × Σ |y − ŷ||y| (%) | 0에 가깝게 ↓ | «실제 값의 평균 ○% 만큼 빗나간다» — 값의 크기가 서로 다른 데이터끼리 견줄 때. 실제 값이 0이면 못 씀 |
| R2 | 결정계수 R² | R² = 1 − Σ (y − ŷ)²Σ (y − ȳ)² | 1에 가깝게 ↑ | 정답이 달라지는 정도(평균 ȳ 에서 흩어진 정도)를 모델이 몇 % 설명하나. 1 = 완벽, 0 = 평균만 찍은 것과 같음, 0보다 작으면 평균 찍기보다 못함. «64%를 맞혔다»가 아님! |
| CVRMSE | 변동계수 RMSE | CVRMSE = RMSEȳ × 100 (%) | 0에 가깝게 ↓ | RMSE 를 평균 크기로 나눔 — «평균의 ○% 정도 빗나간다». 오렌지3 표에서 켜서 볼 수 있음 |
🧮 직접 계산해 보기 — 숫자를 바꿔 보세요
② 분류 모델 — 맞았나, 틀렸나 혼동 행렬(오분류표)에서 모두 나옴
confusion_matrix · 오렌지3 Confusion Matrix 와 같은 방향).
⚠ 교과서 111쪽 예제 2 표는 반대(행 = 예측, 열 = 실제)라 머리글부터 확인!| 오렌지3 열 | 이름 | 계산식 | 묻는 것 | 언제 중요한가 |
|---|---|---|---|---|
| CA | 정확도(Classification Accuracy) | TP + TNTP + TN + FP + FN | 전체 중 맞힌 비율 | 양성 · 음성 개수가 비슷할 때. 한쪽이 아주 적으면 속음(아래 «함정») |
| Prec | 정밀도(Precision) | TPTP + FP | «양성이라고 한 것 중 진짜 양성은?» | 헛경보가 곤란할 때 — 스팸 분류(정상 메일을 스팸함에 넣으면 못 봄) |
| Recall | 재현율(Recall) · 민감도 | TPTP + FN | «진짜 양성 중 찾아낸 것은?» | 놓치면 안 될 때 — 암 진단 · 부적합 수질 · 화재 경보 |
| Spec | 특이도(Specificity) | TNTN + FP | «진짜 음성 중 음성이라 한 것은?» | 정상인 것을 정상이라 잘 거르는지(재현율의 음성 쪽 짝) |
| F1 | F1 점수 | 2 × 정밀도 × 재현율정밀도 + 재현율 | 정밀도와 재현율의 조화 평균 | 둘 중 하나만 높은 «반쪽 모델»을 걸러 냄 — 둘 다 높아야 높음 |
| MCC | 매튜스 상관계수 | TP·TN − FP·FN√((TP+FP)(TP+FN)(TN+FP)(TN+FN)) | 네 칸을 모두 반영한 «예측과 정답의 상관» | −1 ~ 1. 1 = 완벽, 0 = 찍기 수준, 음수 = 거꾸로. 한쪽이 적은 데이터에서도 믿을 만함 |
| AUC | ROC 곡선 아래 넓이 | 확률 순으로 줄 세웠을 때 진짜 양성이 음성보다 위에 올 확률 | «기준선을 어떻게 잡든 얼마나 잘 가르나» | 0.5 = 찍기, 1 = 완벽. 모델이 내는 확률로 계산(predict_proba) — 기준(0.5)을 바꿔도 덜 흔들리는 평가 |
| LogLoss | 로그 손실 | − 1n Σ log(정답에 준 확률) | «정답을 얼마나 자신 있게 맞혔나» | 0에 가까울수록 좋음. 틀린 답에 큰 확신을 주면 크게 깎임 |
🧮 직접 계산해 보기 — 네 칸에 숫자를 넣어 보세요
③ 종류가 셋 이상이면 — 붓꽃 세 종류 종마다 따로 → 평균
average=None). 오렌지3 표의 Prec · Recall · F1 은 이것을 종마다 실제 개수(support)로 가중 평균한 한 숫자예요(Target class: Average over classes).④ 오렌지3 Test and Score 표 한눈에
| 보이는 곳 | 뜻 |
|---|---|
| Model | 꽂은 학습 위젯(Linear Regression · kNN · Tree …) — 여러 개를 꽂으면 줄이 늘어 한 표에서 견줌 |
| 예측 모델일 때 | MSE · RMSE · MAE · R2 (설정에 따라 MAPE · CVRMSE 도). 표 머리글을 오른쪽 클릭하면 보일 열을 고를 수 있어요 |
| 분류 모델일 때 | AUC · CA · F1 · Prec · Recall · MCC (설정에 따라 Spec · LogLoss 도). 오렌지3 버전에 따라 기본으로 보이는 열이 조금 달라요 |
| Target class | Average over classes = 종마다 낸 값을 실제 개수로 가중 평균 · 특정 종을 고르면 «그 종 = 양성»으로 계산 |
| Test on test data | Data Sampler 의 Remaining Data(시험용)로 채점 — 코드의 x_test · y_test |
| Cross validation | 교차 검증 — 데이터를 k 조각으로 나눠 돌아가며 한 조각씩 시험지로 쓰고 점수를 평균. 시험지 운에 덜 흔들림(Number of folds = 조각 수) |
| Test on train data | 공부한 문제로 시험 — 점수가 부풀려지니 평가로 쓰면 안 됨(과적합 확인용) |
| 훈련 점수 vs 테스트 점수 | 훈련 0.99 · 테스트 0.75 → 과적합(외웠다) · 둘 다 낮음 → 과소적합(배울 것을 못 배움) · 둘 다 높고 비슷 → 잘 일반화 |
⑤ 어떤 지표를 볼까
숫자를 맞히는 모델 → 모델끼리 견줄 때 MSE · RMSE, 사람에게 설명할 때 MAE · RMSE(«평균 ○명 빗나감»), 얼마나 설명하는지 R².
무엇인지 가려내는 모델 → 양쪽 개수가 비슷하면 정확도, 놓치면 큰일이면 재현율, 헛경보가 곤란하면 정밀도, 둘 다 중요하면 F1, 한쪽이 아주 적으면 MCC · F1.
지표 하나만 보지 않기 — 정확도 99.9%여도 환자를 한 명도 못 찾을 수 있어요. 그리고 모델끼리는 같은 데이터 · 같은 나누기 · 같은 지표로 견줍니다.
🧭 구현 아홉 걸음 · 예측 읽기 · 평가 해석 교과서 100~112쪽을 자세히
① ② 탭에서 만든 모델을 처음부터 끝까지 아홉 걸음으로 다시 봅니다. 걸음마다 코랩 코드 · 오렌지3 위젯 · 자주 막히는 곳을 짝지었어요. 그다음 모델이 내놓은 예측을 읽는 법과, 점수를 «그래서 좋은 모델인가?»로 바꿔 말하는 해석법을 연습합니다.
① 구현 아홉 걸음 교과서 100~103쪽 순서를 자세히
5~8걸음이 Ⅳ단원 수행평가 ② 노트북의 «나누기 · 모델 정의 · 학습 · 점수»와 같아요. 코랩 칸마다 오렌지3 위젯 이름을 주석(#)으로 적는 연습을 지금부터!
② 글자(범주)를 숫자로 — 레이블 인코딩 vs 원-핫 인코딩 전처리 · 프로젝트 필수
원래 표
| 이름 | 성별 | 탑승 항구 |
|---|---|---|
| 김 | 남 | S |
| 이 | 여 | C |
| 박 | 여 | Q |
| 최 | 남 | S |
레이블 인코딩
| 이름 | 성별 | 항구 |
|---|---|---|
| 김 | 0 | 2 |
| 이 | 1 | 0 |
| 박 | 1 | 1 |
| 최 | 0 | 2 |
범주마다 번호 하나(C→0, Q→1, S→2). 열이 늘지 않아 간단하지만 «S(2)가 C(0)보다 크다»는 없는 순서를 배울 수 있어요. 순서가 진짜 있는 범주(낮음 · 보통 · 높음)나 정답 열에 알맞아요.df['성별'].map({'남':0, '여':1}) · LabelEncoder()(교과서 126쪽 독버섯)
원-핫 인코딩
| 이름 | 성별_남 | 항구_C | 항구_Q | 항구_S |
|---|---|---|---|---|
| 김 | 1 | 0 | 0 | 1 |
| 이 | 0 | 1 | 0 | 0 |
| 박 | 0 | 0 | 1 | 0 |
| 최 | 1 | 0 | 0 | 1 |
범주마다 열을 하나씩 만들어 해당하면 1, 아니면 0. 순서가 생기지 않아 순서 없는 특성(항구 · 지역 · 혈액형)에 알맞아요. 범주가 아주 많으면 열이 폭발.pd.get_dummies(df, columns=['항구']) · 오렌지3는 Continuize 위젯이 자동으로
③ 예측 읽기
분류 — 답 하나 vs 확률
predict() 는 집단 이름 하나, predict_proba() 는 집단마다 확률을 줍니다.
pred = ['virginica'] proba = [0.02, 0.41, 0.57] # setosa · versicolor · virginica
가장 큰 0.57을 골랐지만 0.41과 차이가 작아요 — «자신 없는 예측». 이런 행이 모인 곳이 두 집단의 경계이고, 틀린 예측도 대개 여기서 나옵니다. kNN 이라면 이웃 5개 중 virginica 3개 · versicolor 2개처럼 표가 갈린 경우예요. (AUC · LogLoss 는 이 확률로 계산 → 📏 평가 지표 탭)
숫자 — 잔차 읽기
예측값과 실제값의 차이를 잔차(실제 − 예측)라고 합니다.
실제 120 · 예측 112 → 잔차 +8 (덜 맞힘) 실제 95 · 예측 104 → 잔차 −9 (더 맞힘)
잔차가 + − 고루 섞여야 좋아요. 큰 값에서만 계속 + 라면 모델이 놓친 패턴(직선이 아닌 관계)이 있다는 뜻. 새 데이터를 넣을 때는 학습 때와 같은 전처리 · 같은 열 순서로!
④ 이 결과, 어떻게 해석할까? — 함정 여섯 가장 알맞은 해석 고르기
⑤ 평가 해석 문장 틀 계획서 · 보고서에 그대로
예) 우리 모델(kNN, k = 5)은 테스트 데이터 30개에서 정확도가 0.967이다. 기준선(0.433)보다 0.53 만큼 낫다. 다만 versicolor · virginica 경계에서 틀리므로 다음에는 k 를 바꿔 보겠다.
✏️ 정리 퀴즈 — 위젯 ↔ 코드
A 빈칸은 알맞은 말을 쓰고 Enter · B 코드 → 위젯은 골라요 · C 한 줄 스스로 적기는 위젯이 하는 일을 코드 한 줄로 써서 ✓ 확인. 막히면 ① ② 탭에서 위젯을 눌러 짝이 되는 코드를 찾아보세요.