표(tabular)를 데이터로 볼 때 보이는 특징들
-heterogeneous feature types
각각의 column들이 여러 타입으로 이뤄짐.(numerical, cartegorical, binary, datetime, text, others(image, video...))
-no inherent spatial or sequential structure (image에서 pixel들은 가까운 pixel끼리 상관관계 있음 -> convolution 등으로 이용함, text에서 단어 순서 관계성 -> 재귀/attetion 모델 이용, 순차 구조)
tabular data는 이런 특징 없음! 모델 디자인할 때 column 순서 상관없이 데이터 들어와도 똑같은 예측하도록 디자인 해야함.
이미지나 텍스트 데이터는 많은 양의 데이터 포함함.
그러나 tabular datasets은 어느정도의 열과 행 데이터뿐임 (각 열, 행의 피처 종류도 많지않음)
-> tabular 데이터를 기반으로 하는 모델 만드려면 1. 데이터 효율적 2. 과적합 피하기 3.제한되고 이질적인 데이터로부터 일반화해야함.
어떤 관측 값 없을 수 있다. 모델은 불완전한 데이터도 잘 다뤄야함. 불완전한 데이터 있어도 똑같은 output을 내는 robust한 성질이 있어야함.
데이터 label이나 데이터가 noisy한 경우도 있음. 데이터 수집과정에서 noise 섞일 수 있음(다양한 이유로)
레이블 같은 경우 feature들이 수집된 후 관측되어서 더 noisy할 수 있음.
레이블들이 noisy하거나 imperfect한 경우 leakage를 유발할 수 있음.
ex: A 레이블이 먼저 관측된 후 그 레이블을 기반해서 어떤 Feature가 관측된다고 하면, 그 feature는 레이블에 관련된 정보를 포함하고 있기 때문에 그 feature를 이용해서 레이블을 예측하는 문제를 풀게 되면 안됨. 데이터 leakage 문제도 있을 수 있음.
그래서 모델들은 이런 레이블 수집에 주의, 학습에 주의, 데이터 leakage없는 환경에서 학습되어야함
[class imbalance]
어떤 사기나 스미싱 문자 탐지 같은 걸 한다고 할 때, 정상 데이터(문자)가 다수고 비정상 데이터는 소수.
그래서 class distribution이 매우 불균형한 경우가 많음. 추가 예시로 질병 탐지 같은 것도 동일함.
이렇게 정상 데이터가 대다수이면 tabular 데이터를 다루는 모델은 majority class만 예측을 잘 해도 높은 성능치가 나옴. 이렇게 majority class에 편향되지 않도록 모델 학습해야하고 적지만 중요한 케이스를 잘 감지해야함.
[tabular data 관측환경이 다양하고 제한적일 수 있음]
예로 금융, 제조 데이터 각각 domain 지식이 없으면 뭐가 중요하고 안 중요한지 파악 불가 -> 모델 설계 어려움
데이터 피처와의 관계 파악 잘해야함.
머신러닝이 이미지, 텍스트 데이터를 잘 다루지만 어쩌면 실생활에 더 중요한건 tabular 데이터일 수도 있다. 앞의 여러 tabular data 특징들이 이미지나 언어 모델과 다르게 만드는 점이고 tabular data를 다룰 수 있는 모델을 만드는데 어렵게 만드는 특징이기도 함.
tabular data로 어떤 task 수행하는가?
- prediction
-anomaly detection(비지도, 이상치 매우적음)
-데이터들의 관계 파악
-clustering (비슷한 데이터 묶기)
-question answering (자연어 형태 질문과 테이블 주어짐 -> 테이블에서 어떤 정보가 중요하고 왜 이 질문과 관련 있는지
reasoning하는 단계 필요하게 됨. llm으로 실현가능)
-데이터 생성 (공개하기 어려울 때 데이터와 유사한 데이터 만들어서 공유나 연구 진행함) 데이터가 적은 경우 어떤 데이터를 만들어냄. 그걸로 학습에 쓰기도함.)
*어떻게 실제 tabular 문제에 머신러닝 사용할 것인지, 실제 사상황에서도 신뢰도가 높은 모델을 어떻게 만들어낼지?
에 대해 얘기하는 강의

- Data collection
믿을만한데에서 관련 데이터 모으기, 여러 테이블들에서 정보 모으기, 외부 소스에서 유용한 데이터 통합하기, 재생산성 보장해야함.

- Exploratory Data Analysis (EDA)

모델링 전에 데이터를 이해하는 단계다. 평균, 중앙값, 사분위수, 표준편차 + 결측값 패턴파악 + 분포도 + 피처들,타겟 간의 상관관계 분석 + 잠재적 이상치와 클래스 불균형 파악
-Preprocessing
raw data를 모델이 잘 이해하고 학습할 수 있는 형태로 변환하는 단계.
-Modeling
모델 고르고 모델 학습시킴
- evauluation

평가, 검증을 위해 test set을 만들어놓는다. 이용가능한 데이터셋이 제한적일 때 cross-validation 사용함.
하이퍼파라미터 특정 세팅에 편향되지 않도록 진행해야함. 풀고자하는 task와 관련된 metric을 잘 정의해서 그걸로 평가하는게 중요. (ex: 클래스가 imbalanced 한 경우 단순히 정확도를 측정하는게 유의미하지 않을 수 있음. imbalanced setting에서도 잘 동작하는 데이터들을 사용하는게 좋음.) 회귀 같은 경우 mae나 rmse 가 잘 맞음
- deployment & monitoring
preprocessing 중요한 이유 - 가진 tabular data의 특징들이 다 다르기 때문에 일관된 형태로 표현할 수 있어야 함.
-> 일관된 형태로 표현하도록 해야함.
머신러닝 사용하기 전 고려해야할 부분들 :
결측치 다루기 / 범주형 변수들 인코딩 / 숫자형 피처 변환 / 피처 엔지니어링
결측치 다룰 때 => 삭제/고정값으로 채우기 / 평균,중앙값 등등으로 채우기/ 결측치 채우는 모델을 따로 두기 / tree based 모델이나 LLM 같은 경우 자연스럽게 가능
범주형 변수는 숫자로 인코딩해야함...(4가지 방법 - 원핫인코딩 등등..)
숫자들도 바로 모델에 넣을 수 있지만 보통 많은 모델들이 이런 숫자들의 scale에 민감함.
그래서 숫자들이 다 비슷한 값 가지도록 표준화하거나 평균을 빼고 분산으로 나누면 평균이 0되고 분산이 1되는 정규분포 따름.. min-max scaling 등도 있음. 몇몇 모델들은 scale에 영향을 안받아서 안해도 됨(ex: tree based model)
스케일링하면 의미를 잃어버리는 경우도 있음. 스케일링할 때 정보 안 잃도록 주의.
분포 변환 -> 분포를 로그 씌워서 평탄화 하기도 함.
quantile(백분위) 을 이용해서 숫자들 다루면 모델들이 분포 더 잘 파악하여 다룰 수 있다.
연속된 숫자를 이산화하면 비선형을 더 잘 다룰 수도 있다.
숫자들을 어떻게 잘 변환해서 쓰는지도 중요함
하이퍼파라미터에 민감 (tabular ML)
잘 평가하는 것이 모델을 고르는 것만큼 중요하다.
Cross validation과 하이퍼파라미터 최적화를 많이 진행함.
다양한 validation set에서 동작하는 하이퍼파라미터를 고르는 식으로 하는게 좋음.
회귀에서 평가 metrics 다양!
이진 분류에서 metrics 다양!
threshold-independent metrics: AUC-ROC, AUC-PR 등등 있음. PR이 Precision Recall Curve가 좀 더 robust하다는 특징있음.(데이터가 imbalanced해도) 문제에 맞는 metric 선정하는 것 중요함.
왜 그 모델이 그런 예측을 했는가 파악하는 것도 중요.

어느 피처가 모델에 많은 영향 주는지? 지역적으로는 이 샘플에 대해 왜 이런 예측을 했는지?
permutation importance라는 기술!! 특정 피처값 뒤섞어서 성능 drop을 관찰하는 것. 성능 drop이 많이 없다??
그럼 그 피처는 별로 안 중요한 피처...
SHAP value는 실제 예측에 각각의 value들이 얼마나 기여하는지 확인할 수 있는 기법임