GBT
한국외국어대학교Global Business & Technology
실습 5 · 자기 데이터 워크숍
목차 강의 홈 ↗
대학원 딥러닝 · 실습 5

자기 데이터
워크숍

네 회차의 템플릿을 각자의 논문 데이터에 올린다. 데이터 타입을 판별하고, 노트북의 ① 블록을 바꾸고, 베이스라인까지 돌린다. 막히는 지점을 함께 풀고, 기말 과제의 보고 규격을 확정한다.

워크숍 90분타입 판별 가이드표 데이터 템플릿제출 체크리스트
0
네 번의 실습이 끝난 다음 주

템플릿은 남의 데이터에서만 돌았다

지하철·뉴스·위성영상에서는 잘 돌던 노트북이 내 데이터 앞에서 첫 셀부터 멈춘다. 멈추는 이유는 대개 세 가지뿐이다.

도입 · 한 장면

첫 셀에서 멈추는 세 가지 이유

한 학생이 연구실에서 자기 패널 데이터를 연다. 기업 300개 × 분기 40개, 열은 재무 지표 20개와 공시 텍스트 한 열. 실습 1 노트북을 열어 ① 블록에 파일 경로를 넣는다. 다음 셀에서 make_windows 가 길이 오류를 낸다.

이 데이터는 시계열이면서 표이면서 텍스트다. 어느 템플릿도 그대로 맞지 않는다. 그런데 이것이 대학원생 데이터의 보통 모습이다. 이 회차는 그 보통의 데이터를 네 템플릿 중 하나(또는 둘)에 맞게 쪼개는 절차를 다룬다. 멈추는 이유는 세 가지로 좁혀진다. 타입을 잘못 골랐거나, 입력 규격(열 이름·인덱스·단위)이 어긋났거나, 한 데이터에 두 타입이 섞여 있다.

타입 판별다섯 질문에 답하면 회차가 정해진다. 섞인 데이터는 분리한다
① 블록 교체회차마다 ① 이 기대하는 열 이름·인덱스·단위가 있다. 그 규격표대로 맞춘다
보고 규격베이스라인·seed 반복·절제·재현성 표. 기말 과제에서 요구하는 그대로
더 읽기

장면의 학생 데이터는 이렇게 쪼갠다. 재무 지표 20개는 (§4 의 GBDT·MLP 템플릿)이고, 분기별 매출 예측이 목적이면 기업별 시계열(실습 1, 단 계절 주기 4)이며, 공시 텍스트는 실습 2 의 임베딩으로 숫자 열이 되어 표에 합류한다. 세 템플릿의 출력이 마지막에 하나의 표로 모이고, 그 표에서 회귀나 인과 분석(실습 4)이 시작된다.

생각해 볼 질문

내 데이터에서 "한 행"은 무엇인가. 기업인가, 기업×분기인가, 문서 하나인가. 이 답이 분할 방식(무작위·시간순·집단별)을 정하고, 분할 방식이 회차를 정한다.

1
다섯 질문 → 회차

타입 판별

형태보다 "행이 무엇인가"와 "무엇이 새면 안 되는가"가 회차를 정한다.

§1 · 판별표

다섯 질문

위에서부터 순서대로 답한다. 첫 "예"에서 멈추지 말고 끝까지 가서, 둘 이상 해당하면 데이터를 그 수만큼 쪼갠다.

질문예라면주의
1. 행에 날짜가 있고, 순서를 섞으면 안 되는가실습 1 · 시계열단위가 여럿(기업×분기)이면 단위별로 시계열을 만들거나 패널로 취급(§4)
2. 열 하나가 자유 텍스트인가실습 2 · 텍스트 → 임베딩·라벨을 숫자 열로 바꿔 표에 합류텍스트가 처치·결과에 영향을 받으면 인과 설계에서 자리를 먼저 정한다(9장)
3. 이미지 파일이 있는가실습 3 · 이미지 → 라벨·임베딩·스칼라를 숫자 열로이미지 → 스칼라 → 회귀의 2단계. 측정오차를 같이 보고
4. 처치·개입이 있고 그 효과가 질문인가실습 4 · 인과추론예측 성능이 아니라 식별 전략이 먼저. 1·2·3 의 출력은 조정 변수나 반사실 예측기로 쓴다
5. 위 어디에도 해당 없이 행이 독립인 표인가§4 · 표 데이터(GBDT · MLP)GBDT 가 대개 이긴다. 이기지 못하면 그대로 보고
흔한 오해

"패널 데이터는 시계열이니 실습 1 로 간다." 기업 300개 × 분기 40개는 행이 기업×분기이고, 질문이 "다음 분기 예측"이면 시계열, "기업 특성이 성과에 미치는 영향"이면 표, "정책 도입 효과"면 인과다. 같은 파일이 세 회차로 갈 수 있고, 분할 방식(시간순 / 무작위 / 집단별)이 그 차이를 결정한다. 집단별 분할(기업 단위로 학습·평가를 나눔)은 §4 에서 다룬다.

2
회차별 입력 규격

① 블록 교체

각 노트북의 ① 이 기대하는 형태는 한 줄로 적을 만큼 단순하다. 그 한 줄을 맞추면 나머지 셀은 그대로 돈다.

§2 · 입력 규격

네 노트북이 기대하는 것

회차① 이 만들어야 하는 객체바꿀 상수확인할 것
1 시계열df: date(datetime, 연속), board(수치) 두 열H, L(지평·창), naive 주기 7, folds 날짜결측 날짜 0, 계절 주기, 평가 구간에 개입 없음
2 텍스트tr, va: text, label(정수) 두 열. 라벨 없으면 label=-1라벨 이름 목록(제로샷 프롬프트), 샘플 수텍스트 길이(bge-m3 8k 토큰), 클래스 불균형, 언어
3 이미지items: path(이미지 파일), label, 선택 text클래스 이름 목록(CLIP 프롬프트), 프롬프트 문구해상도(64px 이하면 제로샷 약함), 이미지당 비용
4 인과DiD: unit, time, treat, post, y · 합성통제: 단위×시점 행렬 · 반사실: 실습 1 의 df + 개입일개입 시점, 처치 단위, 공변량 목록식별 가정(평행추세·사전 적합·무교란)을 먼저 적는다
LAB · 코드형

① 블록의 최소 형태 (실습 1·2 예)

# 실습 1: 월별 매출 → date, board 두 열. 결측 월을 채우고 주기를 12 로
raw = pd.read_excel('내_매출.xlsx')                                # 열: 연월, 매출액
df = (raw.assign(date=pd.to_datetime(raw['연월'], format='%Y%m'))
         .rename(columns={'매출액': 'board'})[['date', 'board']]
         .set_index('date').asfreq('MS').interpolate().reset_index())
H, L = 12, 36                                                    # 지평 12개월, 창 36개월; naive 의 7 → 12

# 실습 2: 공시 텍스트 → text, label. 라벨이 없으면 -1 로 두고 제로샷·군집 셀만 돈다
docs = pd.read_csv('공시.csv')
tr = docs.rename(columns={'본문': 'text'}).assign(label=-1)[['text', 'label']]

조작 안내 — 자기 파일로 위 두 셀 중 하나를 완성하고, 다음 셀(② 분할)이 오류 없이 지나가는지 본다.
관찰 포인트 — ② 가 통과하면 ③ 베이스라인 표가 나온다. 그 표의 숫자가 상식적인지(MASE 분모가 0 에 가깝지 않은지, 클래스 비율이 예상과 맞는지)가 첫 점검이다.

3
90분 · 세 단계

워크숍 진행

목표는 완성이 아니라 베이스라인이다. 베이스라인 표 한 장이 나오면 나머지는 과제로 이어진다.

§3 · 순서

판별 20분 · 교체 40분 · 공유 30분

  1. 판별(20분). §1 표로 자기 데이터의 회차를 정하고 한 줄로 적는다. "행 = ___, 새면 안 되는 것 = ___, 회차 = ___". 둘 이상이면 쪼개는 순서를 정한다.
  2. 교체(40분). 해당 노트북을 열고 ① 을 §2 규격에 맞춘다. ② 분할 → ③ 베이스라인까지 돌린다. 막히면 오류 메시지 첫 줄과 ① 의 df.head() 를 캡처해 둔다.
  3. 공유(30분). 베이스라인 표 또는 막힌 지점을 한 사람 3분씩 공유한다. 같은 오류가 반복되면 그 자리에서 규격표를 고친다.
자주 막히는 지점날짜 파싱(연월 문자열) · 인코딩(cp949) · 결측 날짜 · 라벨이 문자열 · 이미지 경로가 상대경로 · Cloudflare 토큰 권한(Workers AI 읽기·실행)
이 시간에 하지 않는 것모델 튜닝 · 성능 올리기 · 그림 꾸미기. 베이스라인이 나오기 전의 튜닝은 무엇을 개선했는지 알 수 없다
4
행이 독립인 표 · GBDT 가 기준선

표 데이터

표 데이터에서는 그래디언트 부스팅(LightGBM)이 MLP 와 같거나 대개 낫다. 그래서 정규 회차에서 뺐고, 여기서 템플릿만 준다. 이기지 못하면 그대로 보고한다.

§4 · 템플릿

GBDT 를 먼저, MLP 는 비교로

표 데이터의 베이스라인은 로지스틱·선형 회귀이고, 강한 기준선은 LightGBM 이다. MLP 는 범주형 임베딩을 쓰면 따라붙지만, 행 수가 수만 이하면 보통 GBDT 가 이긴다.

LAB · 코드형

표 데이터 최소 파이프라인

from sklearn.model_selection import train_test_split, GroupKFold
from sklearn.linear_model import LogisticRegression
import lightgbm as lgb
X, y = df.drop(columns=['target']), df['target']
# 분할: 행이 독립이면 무작위, 같은 기업이 여러 행이면 GroupKFold(groups=df['firm'])
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=.2, stratify=y, random_state=0)
base = LogisticRegression(max_iter=2000).fit(pd.get_dummies(Xtr), ytr)
gbdt = lgb.LGBMClassifier(n_estimators=500, learning_rate=.03).fit(Xtr, ytr, categorical_feature='auto')
# MLP 는 실습 1 의 MLP 클래스에 범주형 nn.Embedding 을 붙여 같은 분할로 비교한다
# 보고: macro-F1 / AUC, seed 5회, permutation importance 상위 10

조작 안내 — 자기 표 데이터에서 로지스틱 → LightGBM 두 행만 먼저 채운다.
관찰 포인트 — 두 행의 차이가 seed 표준편차 안이면 변수가 선형에 가깝다는 뜻이고, 그때 MLP 를 더해도 얻을 것이 거의 없다. 같은 기업의 행이 학습과 평가에 나뉘어 들어가면(집단 누수) 성능이 부풀려진다. GroupKFold 로 다시 재서 얼마나 떨어지는지 본다.

더 읽기

"표 데이터에서 딥러닝이 GBDT 를 이기는가"는 2020년대 초 여러 벤치마크 논문의 주제였다. Grinsztajn 외(2022)는 중간 규모(1만~5만 행) 표 데이터 45개에서 트리 기반 방법이 신경망을 일관되게 앞선다고 보고했고, 그 이유로 불규칙한 함수 형태, 정보 없는 특징에 대한 강건성, 회전 불변성의 부재를 들었다. Shwartz-Ziv & Armon(2022)도 같은 결론에 도달했다. 이 결과는 "딥러닝을 쓰지 말라"가 아니라 "표 데이터에서는 GBDT 를 이겨야 딥러닝을 쓸 이유가 생긴다"로 읽는다.

출처 Grinsztajn, Oyallon & Varoquaux, "Why do tree-based models still outperform deep learning on typical tabular data?", NeurIPS 2022, arxiv.org/abs/2207.08815 · Shwartz-Ziv & Armon, "Tabular data: Deep learning is not all you need", Information Fusion 81, 2022, arxiv.org/abs/2106.03253

5
기말 과제 요구 사항

보고 규격

네 회차에서 반복한 규칙을 기말 과제의 요구 사항으로 고정한다. 인과추론 11장의 과제 형식과 함께 쓴다.

§5 · 요구 사항

본문 한 표, 부록 한 표, 그림 한 장

항목요구회차 근거
분할방식(무작위·시간순·집단별)과 크기를 명시. 시계열은 시간순만실습 1 §2
베이스라인비딥러닝 기준 모델 1개 이상을 성능표 첫 행에실습 1·2·3 §2
반복seed 3회 이상, 평균 ± 표준편차. 표준편차의 출처(seed·fold) 명시실습 1 §6
절제주요 특징 하나를 뺀 결과 1행 이상실습 1 §4
측정오차텍스트·이미지를 변수로 쓰면 그 변수의 정확도·라벨 흔들림을 함께실습 2·3 §6
군집쓴다면 k 선택 근거, seed ARI, 대표 샘플 표, 지도는 원 공간 군집의 그림으로만실습 1·2·3 §5
인과식별 가정 → 추정 → 반박검정(위약·순열) 순서. 11장 체크리스트 채움실습 4 §6
재현성부록 표: 데이터 출처·날짜, 전처리, 모델 ID·설정, seed, 환경, 코드 링크모든 회차 §6
더 읽기

이 규격은 심사자의 질문을 미리 답하는 순서로 짜여 있다. 심사자는 먼저 "무엇과 비교했는가"(베이스라인), 다음 "우연이 아닌가"(반복), 그다음 "무엇이 그 차이를 만들었는가"(절제), 마지막으로 "내가 다시 돌릴 수 있는가"(재현성)를 묻는다. 네 질문에 표로 답해 두면 심사평은 방법이 아니라 연구 질문으로 옮겨 간다. 그것이 이 시리즈의 목적이다.

6
제출 전

체크리스트

열 항목 중 하나라도 "아니오"면 그 항목이 심사 질문이 된다.

제출 전 열 가지

체크리스트

  • 행이 무엇인지 한 문장으로 적었는가
  • 분할 방식이 "새면 안 되는 것"과 맞는가 (시계열=시간순, 같은 개체 다중 행=집단별)
  • 정규화·토크나이저·임베딩 통계가 학습 구간에서만 계산됐는가
  • 성능표 첫 행이 비딥러닝 베이스라인인가
  • 모든 성능이 평균 ± 표준편차이고 seed 수가 적혀 있는가
  • 절제 결과가 최소 한 행 있는가
  • 텍스트·이미지 변수의 측정오차가 보고됐는가
  • 군집을 썼다면 원 공간에서 했고 k 선택 근거가 있는가
  • 인과 주장이 있다면 식별 가정과 반박검정이 있는가
  • 부록 재현성 표와 코드 링크가 있는가
핵심 정리

하나. 회차를 정하는 것은 데이터 형태가 아니라 "행이 무엇인가"와 "무엇이 새면 안 되는가"다. 섞인 데이터는 쪼갠다.

둘. ① 블록만 규격에 맞추면 나머지는 돈다. 워크숍의 목표는 베이스라인 표 한 장이다.

셋. 보고 규격은 심사자의 질문 순서다. 비교·반복·절제·재현성 네 표가 있으면 심사는 방법이 아니라 질문으로 옮겨 간다.

7
보고 규격의 근거

참고문헌

연도는 출간 기준.

표 데이터와 벤치마크

  1. Grinsztajn, L., Oyallon, E., & Varoquaux, G. (2022). Why do tree-based models still outperform deep learning on typical tabular data? NeurIPS Datasets and Benchmarks. arxiv.org/abs/2207.08815
  2. Shwartz-Ziv, R., & Armon, A. (2022). Tabular data: Deep learning is not all you need. Information Fusion, 81, 84–90. arxiv.org/abs/2106.03253
  3. Ke, G., et al. (2017). LightGBM: A Highly Efficient Gradient Boosting Decision Tree. NeurIPS. github.com/microsoft/LightGBM

보고와 재현성

  1. Pineau, J., et al. (2021). Improving Reproducibility in Machine Learning Research: A Report from the NeurIPS 2019 Reproducibility Program. JMLR, 22(164). arxiv.org/abs/2003.12206
  2. Kapoor, S., & Narayanan, A. (2023). Leakage and the reproducibility crisis in machine-learning-based science. Patterns, 4(9). arxiv.org/abs/2207.07048
  3. Mitchell, M., et al. (2019). Model Cards for Model Reporting. FAT*. arxiv.org/abs/1810.03993
한국외국어대학교 Global Business & Technology · 대학원 딥러닝 세미나 · 실습 5.
이 자료는 단일 HTML 파일로 배포된다. 기말 과제 형식은 인과추론 11장 §5 와 함께 적용한다.