Machine Learning 43

부스팅(Boosting) - XGBoost, LightGBM

이번 글에서는 부스팅(Boosting)과 대표적인 부스팅 알고리즘인 XGBoost, LightGBM에 대해 소개한다. Boosting 부스팅은 여러 개의 약한 학습기(weak learner)를 순차적으로 학습-예측하면서 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가며 학습하는 방식이다. 위의 그림은 부스팅의 기본 알고리즘을 그림으로 나타낸 것이다. 부스팅은 다음과 같은 순서로 진행된다. 첫 번째 분류기 이용하여 데이터셋을 분리한다(Box 1). 세 개의 Positive 데이터가 잘못 분류된 것을 확인할 수 있다. Box 1에서 잘못 분류된 데이터에 가중치를 두어 옳게 분류할 수 있도록 두 번째 분류기를 생성한다. 그 결과 Negative 데이터 3개가 잘못 분류된 것을 확인할 수 있다. 설..

배깅(Bagging) - 랜덤 포레스트(Random Forest)

이번 글에서는 앙상블 학습 유형 중 하나인 배깅에 대해 소개한다. 보팅(Voting) 배깅(Bagging) 부스팅(Boosting) Bagging Bagging은 이전 글에서 소개한 Voting과는 달리 같은 알고리즘으로 여러개의 분류기를 만들고, 보팅으로 최종 결정하는 알고리즘이다. 대표적으로는 랜덤 포레스트(Random Forest) 알고리즘이 있다. 랜덤 포레스트는 결정 트리(Dicision Tree)를 기반 알고리즘으로 사용한다. 랜덤 포레스트는 앙상블 알고리즘 중 비교적 빠른 속도를 가지고 있고, 다양한 영역에서 높은 예측 성능을 보인다. Bagging이 Voting과 다른 점은 크게 두 가지이다. 보팅은 여러가지 종류의 Classifier를 사용하지만, 배깅은 한 종류의 Classifier를 ..

Ensemble Learning - Voting(보팅)

Ensemble Learning(앙상블 학습)은 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합하여 보다 정확학 최종 예측을 도출하는 기법이다. 이미지, 영상, 음성 등의 비정형 데이터의 분류는 딥러닝이 앙상블보다 뛰어난 성능을 보이고 있지만 정형 데이터 분류에 있어서는 앙상블이 더 뛰어난 성능을 나타내고 있다. 대표적인 앙상블 학습 유형은 3가지가 있다. 보팅(Voting) 배깅(Bagging) 부스팅(Boosting) 이번 글에서는 앙상블 학습 유형 중 하나인 보팅(Voting)에 대해 소개한다. Voting Voting은 일반적으로 서로 다른 알고리즘을 가진 분류기를 결합한다. 위의 그림은 Voting 방식을 도식화한 것이다. 동일한 데이터 셋에 대하여 Decision Tree, ..

결정 트리(Decision Tree)

이번 글에서는 머신러닝 분류(Classification)의 기본이 되는 결정트리에 대해 소개한다. 결정트리(Decision Tree) 결정 트리는 트리 기반의 분류 규칙을 만드는 것이다. 분류 알고리즘은 feature를 이용하여 label을 예측하는 형식으로 이루어 지는데, 결정트리는 feature의 값을 특정 기준으로 나누며 label을 분류한다.유전자의 발현량을 feature로 이용하여 방광암 환자와 정상인을 분류하는 분류기를 가정해보자. CALD1,JAZF1 유전자는 방광암 발병 환자에게서 높은 발현량을 가지는 것으로 알려져 있다. 이를 이용하여 다음과 같은 결정 트리를 생성할 수 있다.먼저 CALD1의 발현량을 기준으로 나눈다. CALD1의 발현량이 8 이하일 경우 0(Neagtive)로 분류하였..

피마 인디언 당뇨병 예측

이번 글에서는 kaggle에서 제공하는 피마 인디언 당뇨병 데이터셋을 이용하여 당뇨병 여부를 판단하는 예측 모델 수립, 여러가지 성능 지표를 이용하여 모델의 성능을 평가한다. 피마 인디언 당뇨병 데이터 세트는 다음 피처로 구성된다.Pregnancies: 임신 횟수Glucose: 포도당 부하 검사 수치BloodPressure: 혈압SkinThickness: 팔 삼두근 뒤쪽 피하지방 측정값Insulin: 혈청 인슐린BMI: 체질량지수DiabetesPedigreeFunction: 당뇨 내력 가중치 값Age: 나이Outcome: 클래스 결정 값(0또는 1)먼저 모델 구현 및 성능 평가를 위한 라이브러리를 import하고, 데이터를 불러와 확인한다. 레이블이 불균등하게 분포하므로 Stratify를 이용하여 학습셋..

F1 score, ROC, AUC

이번 글에서는 F1 score, ROC, AUC를 소개하며 성능 평가 지표를 마무리한다. -F1 score F1 score는 정밀도와 재현율을 결합한 지표이다. 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 가질 때 상대적으로 높은 값을 가진다.※무조건적으로 비슷할 때 가장 높은 값을 가지는 것은 아니다. 어느 한쪽으로 치우쳐 있더라도, 두 값이 각각 높은 수치를 가진다면 비슷할 때보다 F1 score가 높게 나타날 수 있다. 상대적으로 높은 값을 가진다는 뜻은 정밀도와 재현율의 합이 같다고 가정할 때, 두 값이 비슷한 경우가 한쪽으로 치우친 것보다 더 높은 값을 가진다는 뜻이다.사이킷런은 F1 score를 구하기 위한 f1_score()메서드를 제공한다. 여느 성능 평가지표 메서드들과 마찬가지로..

정밀도와 재현율

이전 장에서 정확도와 오차행렬에 대해 다루었다. 정확도는 가장 직관적인 성능 지표이지만 불균등한 label을 가진 데이터셋에서 성능을 왜곡할 수 있다. 정확도는 '정확히 예측한 건 수'에 초점을 맞춘다면, 정밀도와 재현율은 Positive 데이터셋(양성)에 초점을 맞춘 평가 지표이다. 정밀도, 재현율의 정의 정밀도 = TP / (FP + TP)재현율 = TP / (FN + TP)정밀도는 Positive로 예측한 대상 중 실제로 Positive로 일치한 데이터의 비율이고,재현율은 실제 값이 Positive인 데이터 중 예측 값이 Positive로 일치한 데이터의 비율이다. 정밀도, 재현율의 상호 보완 관계 정밀도와 재현율은 상호 보완적인 지표이기 때문에 한 쪽이 높아지면 한 쪽은 낮아지기 쉽다.이를 오차행..

정확도(accuracy), 오차 행렬(confusion matrix)

모델을 설계했다면 설계한 모델이 얼마나 정확한 모델인지 평가해야한다. 이번 글에서는 모델을 평가하는 성능평가 지표 중 하나인 정확도와, 여러 성능 평가 지표를 생성할 수 있는 오차 행렬에 대해 소개한다. 정확도(Accuracy) 정확도: 실제 데이터에서 예측 데이터가 얼마나 같은지 판단하는 지표정확도(Accuracy) = 예측 성공한 데이터 건수 / 전체 예측 데이터 건수정확도는 가장 직관적으로 모델 예측 성능을 나타내는 평가 지표이다. 하지만 특정 데이터셋에서는 성능을 왜곡할 수 있다. 이진 분류 문제에서 label이 0인 데이터가 전체 데이터셋의 90%, 1인 데이터가 전체 데이터셋의 10%라고 하자. 그리고 모델은 어떠한 input이 들어오든 0으로 예측한다고 하자. 정확도로 해당 모델을 평가하면 ..

타이타닉 생존자 예측

이번 글에서는 Kaggle의 유명한 competition중 하나인 타이타닉 생존자 예측 문제에 대한 [파이썬 머신러닝 완벽가이드]의 코드를 리뷰한다(import문은 생략한다). 타이타닉 생존자 예측 문제의 데이터셋 설명은 Kaggle 홈페이지에서 확인할 수 있다. 여기서는 전체 코드를 리뷰하는 것이 아닌 중요 코드만 발췌하여 리뷰한다. 전처리 타이타닉 데이터셋의 변수 정보이다. label은 'Survived'이며, feature는 'Survived'를 제외한 나머지이다. 전처리가 필요한 부분은 다음과 같다.null값을 적절한 값으로 채우기학습에 필요하지 않은 feature 제거하기object자료형을 가지는 변수 인코딩하여 int로 바꾸기fillna()함수를 이용하면 null값을 원하는 값으로 메꿀 수 있..

피처 스케일링(feature scaling)

수치형 데이터의 경우 feature의 종류에 따라 각각 다른 분포를 가진다. 예를 들어 키의 경우 대부분 150~190의 값을 가지고, 몸무게의 경우 40~90 사이의 값을 가진다. 이렇게 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 피처 스케일링(feature scaling)이라고 한다. 이번 글에서는 피처 스케일링에 대해 소개한다. 피처 스케일링의 대표적인 방법으로는 표준화와 정규화가 있다. 표준화(Standardization) 표준화는 데이터의 feature 각각이 평균이 0이고 분산이 1인 가우시안 정규분포를 가진 값으로 변환하는 것이다. 이는 공식을 이용하여 간단하게 구할 수 있다. 서포트 벡터머신(Surport Vector Machine)이나 선형 회귀(Linear Regress..