본문 바로가기
C.W.K.
Stream
Lesson 05 of 10 · published

Feature, Label, Example, Dataset

~30 min · features, labels, tabular-data

Level 0Scout
0 XP0/48 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

학습 자료는 그냥 표가 아니야

지도 학습 자료의 한 행은 하나의 사례고, 각 열은 그 사례를 바라보는 서로 다른 창이야. 어떤 열은 예측에 쓸 정보고, 어떤 열은 맞혀야 할 정답이며, 어떤 열은 사례를 구별하기 위한 식별자일 뿐이야. 이 역할을 섞으면 모델은 우리가 의도한 관계가 아니라 우연히 열린 뒷문을 배워. 자료 설계에서 어려운 일은 열을 많이 모으는 게 아니라 각 열의 책임을 정직하게 정하는 거야.

모든 열에 세 가지를 물어봐

  1. 이 값은 현실에서 무엇을 뜻해? 한 문장으로 설명할 수 없다면 아직 사용할 준비가 안 된 열이야. 이름만 보고 추측하면 몇 달 뒤 다른 뜻으로 쓰인 값을 발견하게 돼.
  2. 이 값은 언제 생겨? 예측한 뒤에야 생기는 값이라면 아무리 높은 성능을 내도 사용할 수 없어. 시간표를 그려서 예측 시점보다 앞에 있는지 확인해야 해.
  3. 정답을 몰래 품고 있지 않아? 해시된 식별자, 사건 뒤 상태값, 환불액, 취소 사유처럼 정답과 거의 같은 정보를 다른 이름으로 담은 열이 흔해.

식별자는 정보처럼 보여서 더 위험해

고객 번호나 상품 번호는 숫자로 되어 있어도 크기에 뜻이 없는 경우가 많아. 모델이 특정 번호를 외우면 검증 자료에서는 잘 맞을 수 있지만 새 고객에게는 아무 힘도 없어. 식별자를 특성으로 쓸지 말지는 자료가 나뉘는 방식과 함께 판단해야 해. 같은 고객의 행이 학습과 검증에 동시에 들어가면 번호 하나만으로도 사람을 알아볼 수 있거든.

열 감사표를 살아 있는 계약으로 만들어

열마다 의미, 역할, 생성 시점, 사용 여부, 누출 위험을 적은 작은 표를 만들어봐. 새 열이 들어올 때 이 칸을 채우지 않으면 학습 흐름에 들어가지 못하게 하는 거야. 이렇게 하면 열 감사표가 설명 문서에서 끝나지 않고 입력 스키마 역할을 해. 변경 전후를 비교하면 어떤 새 정보가 모델의 판단을 바꿨는지도 추적할 수 있어.

자료의 모양은 제품의 모양을 드러내

목표값을 만들기 위해 복잡한 사후 처리가 필요하거나, 대부분의 특성이 예측 뒤에 생긴다면 모델 문제가 아니라 제품 흐름이 아직 정리되지 않은 거야. 어떤 객체가 어느 순간 어떤 상태를 아는지 그려보면 경계가 보여. 머신러닝 자료도 결국 객체와 사건의 기록이야. 시간과 소유권을 무시한 열은 좋은 특성이 아니라 잘못된 상속이야. 모델 성능표보다 먼저 이 구조를 바로잡아야 해. 그래야 새 자료에도 버티는 모델이 돼.

Code

해지 데이터셋의 열 감사표·python
import pandas as pd

audit = pd.DataFrame([
    {"column": "customer_id", "role": "identifier", "known_at_prediction": True, "use": False},
    {"column": "plan_tier", "role": "feature", "known_at_prediction": True, "use": True},
    {"column": "tickets_last_30d", "role": "feature", "known_at_prediction": True, "use": True},
    {"column": "days_since_signup", "role": "feature", "known_at_prediction": True, "use": True},
    {"column": "cancel_reason_text", "role": "post_event", "known_at_prediction": False, "use": False},
    {"column": "refund_amount", "role": "post_event", "known_at_prediction": False, "use": False},
    {"column": "churned", "role": "label", "known_at_prediction": False, "use": "target"},
])
feature_cols = audit.loc[audit["use"] == True, "column"].tolist()
열 감사를 모델 입력의 유일한 길로 만들기·python
X = df[feature_cols].copy()
y = df["churned"]
assert "cancel_reason_text" not in X.columns, "leakage column slipped through"

External links

Exercise

실제 또는 가상의 해지·사기 탐지 자료를 골라 열 감사표를 만들어. 모든 열을 특성, 정답, 식별자, 사건 뒤 정보, 누출 위험으로 나누고 생성 시점도 적어. column_audit.csv로 저장한 뒤 학습 코드가 이 표에서 허용한 특성만 읽게 만들어.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.