본문 바로가기

Codestates AI 부트캠프/2. Machine Learning

(12)
[머신러닝] 3-4 Class Imbalance 타겟값에서 클래스의 비율이 다를 때 학습에 문제가 생길 수 있다. 예를 들어 0과 1의 비율이 2:8이라면, 모델은 class1은 충분히 학습하지만 class0에 대한 학습은 놓친다. 그래서 precision이나 recall 값이 클래스 별로 차이가 생길 수 있다. 그래서 이 비율을 해결하여 학습하는 것이 중요하다. 해결 방안에는 물리적으로 데이터 수를 맞추는 Resamping과 계산적으로 가중치를 부여하는 Class Weight 조절법이 있다. 1. Resampling ① Down Sampling 다수 class를 줄여 데이터 수를 맞추는 방법. 다수 class에서 랜덤으로 데이터를 뽑아 데이터 수를 줄임. 데이터 손실 위험 ② Over Sampling 소수 class를 늘려 데이터 수를 맞추는 방법...
[머신러닝] 3-3 ML Problem Framing 1. 문제 정의 ML을 통해 해결하고자 하는 비즈니스 문제가 무엇인가? target 설정 target을 설명하는 feature 확보 적절한 데이터 양 확보 2. target 설정 문제 해결을 위해 어떻게 target을 설정할 것인가 (회귀인가 분류인가) 3. Data Leakage 문제 별다른 작업 없이도 100%에 가까운 성능을 얻는 경우 '데이터 누수'를 의심해보아야 한다. 2가지의 경우로 나눌 수 있다. ① 학습 시 사용하면 안되는 feature 포함 ex) 주식의 종가를 예측하는 데이터에 하루치 거래량이 있는 건 말이 안된다. 왜냐하면 내일의 거래량을 모르는 상태에서 내일의 종가를 예측해야하기 때문이다 ② 학습 과정에서 평가 데이터의 정보가 활용된 경우 모델로 하여금 test set을 학습하도록 ..
[머신러닝] 3-2 모델 해석 (분석 단위 기준) 이전 시간에는 특성을 기준으로 모델을 해석했다. 이번에는 한 케이스에 대한 정보만을 포함하는 행(분석단위, 데이터포인트)을 기준으로 본다. 1. Individual Conditional Expectation(ICE) plot 특정 분석단위에서 하나의 특정 특성이 변하면 예측값은 어떻게 달라질까? 그 양상을 확인하는 것이 ICE plot이다. 예를 들어 한 사람의 나이, 학력, 국가, 직업에 대한 특성이 있고 그 사람의 연봉을 기록한 타겟이 있다. 이때 나이가 적어지거나 많아지면 연봉의 예측값이 달라질 것이다. # 확인하고자 하는 분석단위 가져오기 one_datapoint = X_val_encoded.iloc[[3]].copy() # age 변화 범위 정하기 age_test_range = range(X_v..
[머신러닝] 3-1 모델 해석 (특성 기준) 0. 모델 해석이란? 이번주는 모델을 완성한 뒤, 클라이언트에게 모델을 설명하는 방법에 대해 배운다. 실무에 사용하도록 모델에 신뢰도를 부여하는 작업이다. 또 모델이 어떤 과정을 통해 예측값을 반환하는 지 설명한다. 해석 내용 모델의 의사결정에 대한 이유 제시 모델이 주요하게 학습한 규칙 및 특성 제시 모델 해석이 왜 중요한가 검증지표만으로 모델을 신뢰할 수 없다 모델 해석을 통해 개선사항을 확인할 수 있다 어떤 경우에는 모델이 왜 이런 결정을 내렸는지 설명해야할 때도 있다 1. Feature Importance 트리 기반 모델에서 특성이 불순도를 감소시키는 정도를 수치로 나타낸 것이다. 이때 불순도를 크게 감소시킬수록 중요한 특성으로 판단한다. 카디널리티가 높은 특성에 feature importance..
[머신러닝] 2-4 Model Tuning 1. 모델 하이퍼파라미터 튜닝 모델 내 하이퍼파라미터를 조정하여 모델의 성능을 끌어올리는 작업이다. A. 직접 튜닝 최적의 하이퍼파라미터를 찾아주는 함수들이 있지만, 튜닝 과정을 전적으로 일임하는 것은 옳지 않다. 엔지니어가 직접 여러 값을 넣어보며 조정하는 과정이 꼭 필요하다. 이를 통해 모델에 대한 통찰을 얻고 효율적으로 시간을 쓸 수 있다. 모델별로 중요한 하이퍼파라미터 트리 기반 - max_depth 부스팅 - max_depth, learning_rate 회귀 - alpah, C B. Grid Search 검증하고자 하는 하이퍼파라미터 범위 내에서 모든 조합에 대해 모델을 학습하고 그 중 가장 좋은 조합을 선택한다. 튜닝할 파라미터 수가 많으면 시간이 오래 걸려 효율적이지 못하다. from skl..
[머신러닝] 2-3 전처리 (Preprocessing) 실무에서는 전처리 시간이 80%를 차지한다고 한다. 그만큼 모델의 성능을 좌우하는 중요 작업으로 꼽힌다. 1. 모델 유형별 전처리 요구사항 A. Regression (Linear, Polimial, Rogistic, etc..) 값 자체가 실제 대수적 연산에 사용 이는 값들의 대소관계, 분포, 크기, 범위가 모델 성능에 직접적 영향을 미친다는 뜻이다. 그러므로 표준화, scaling 등 여러 변환 방법으로 모델의 성능을 높여야 한다. 결측치 해결 결측치가 존재할 시에 연산과 학습이 어렵기 때문이다. 따라서 모든 값을 수치형으로 변환하고 결측치를 해결해야한다. 특성-타겟 간 선형적 관계를 위한 전처리 선형회귀는 선형적 관계를 가정하는 알고리즘이다. 그래서 최대한 선형적 관계가 잘 보이도록 전처리를 해주는 ..
[머신러닝] 2-2 Boosting 1. Bagging과 Boosting 앞서 배운 RandomForest 모델에서는 앙상블 기법 중 하나인 Bagging을 이용한다. Bagging은 샘플 데이터를 무작위로 뽑아 각각의 모델이 독립적으로 학습한다. 독립적인 모델들이 내놓은 결과를 토대로 최종 결과를 낸다. 하지만 Boosting은 앞서 학습한 모델의 영향을 받는다. 이전 모델의 오류를 고려하여 다음 모델을 학습시키는 것이다. 그래서 앞서 학습된 모델보다 발전적인 방향을 학습을 할 수 있으나 갈수록 복잡도가 상승하고 과소적합이 해소된다. 1. XGBoost A. 모델 생성 및 학습 from xgboost import XGBClassifier xgb = XGBClassifier( objective = 'binary:logistic', # 이진..
[머신러닝] 2-1 Tree Based Model 오늘의 주제는 tree 기반 모델로 Decision Tree와 Random Forest를 데이터에 적용해본다. 1. Decision Tree 질문을 던져 yes or no로 데이터를 분할하는 알고리즘. 나무가 가지를 뻗어나가는 모양과 비슷해 Tree라는 이름이 붙었다. 질문이나 정답을 담고있는 node와 연결선 edge로 구성된다. 위 그림으로 볼 때 node는 박스, edge는 선으로 생각하면 된다. 회귀와 분류 문제 모두에서 쓰일 수 있다. 분류 문제에서의 결정 트리 - 불순도를 최소화하는 방향으로 데이터 분할. 불순도에는 지니 불순도와 엔트로피가 있다. - 마지막 노드에 있는 타겟값들의 최빈값을 예측값으로 반환 회귀 문제에서의 결정 트리 - MSE를 최소화하는 방향으로 데이터 분할 - 마지막 노드에..