본문 바로가기

Lecture ML

(36)
머신러닝 강좌 #20] LightGBM에 대한 이해 LightGBM은 XGBoost와 함께 부스팅 계열 알고리즘에서 가장 각광을 받고 있습니다. Xgboost는 매우 뛰어난 부스팅 알고리즘이지만, 여전히 학습 시간이 오래 걸립니다. XGBoost에서 GridSearchCV로 하이퍼 파라미터 튜닝을 수행하다 보면 수행 시간이 너무 오래 걸려서 많은 파라미터를 튜닝하기에 어려움을 겪을 수밖에 없습니다. 물론 GBM보다는 빠르지만, 대용량 데이터의 경우 만족할 만한 학습 성능을 기대하려면 많은 CPU 코어를 가진 시스템에서 높은 병렬도로 학습을 진행해야 합니다. 그렇지 않은 H/W로 학습을 진행할 경우에는 당연히 더 많은 시간이 ㅍㄹ요하기에 불편합이 커질 수밖에 없습니다. LightGBM의 가장 큰 장점은 XGBoost보다 학습에 걸리는 시간이 훨씬 적다는 점..
머신러닝 강좌 #19] XGBoost (eXtra Boost Machine), Scikit Wrapper Class 사이킷런의 프레임워크와 연동하기 위해 사이킷런 전용의 XGBoost 래퍼 클래스를 제공합니다. 사이킷런의 기본 Estimator를 그대로 상속해 만들었기 때문에 다른 Estimator와 동일하게 fit()과 predict()만으로 학습과 예측이 가능하고, GridSearchCV, Pipline 등 사이킷런의 다른 유틸리티를 그대로 사용할 수 있기 때문에 기존의 다른 머신러닝 알고리즘으로 만들어놓은 프로그램이 있더라도 알고리즘 클래스만 XGboost 래퍼 클래스로 바꾸면 기존 프로그램을 그대로 사용할 수 있습니다. 18장에서 설명한 파이썬 래퍼 XGBoost에서 사용한 파라미터는 아래와 같이 변경하여 사용합니다. eta → learning_rate sub_sample → subsample lambda → ..
머신러닝 강좌 #18] XGBoost (eXtra Boost Machine) XGBoost는 트리 기반의 앙상블 학습에서 가장 각광받고 있는 알고리즘 중 하나입니다. 압도적인 수치의 차이는 아니지만, 분류에 있어서 일반적으로 다른 머신러닝보다 뛰어난 예측 성능을 나타냅니다. XGBoost는 GBM에 기반하고 있지만, GBM의 단점인 느린 수행 시간 및 과적합 규제(Regularization) 부재 등의 문제를 해결해서 매우 각광을 받고 있습니다. 특히 XGBoost는 병렬 CPU환경에서 병렬 학습이 가능해 기존 GBM보다 빠르게 학습을 완료할 수 있습니다. 과적합(overfitting)은 기계 학습(machine learning)에서 학습 데이타를 과하게 학습(overfitting)하는 것을 뜻한다. 일반적으로 학습 데이타는 실제 데이타의 부분 집합이므로 학습데이타에 대해서는 오..
머신러닝 강좌 #17] GBM(Gradient Boost Machine) 부스팅 알고리즘은 여러 개의 약한 학습기를 순차적으로 학습-예측하면서 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가면서 학습하는 방식입니다. 부스팅의 대표적인 구현은 AdaBoost(Adaptive Boosting)와 그래디언트 부스트가 있습니다. 에이다 부스트(AdaBoost)는 오류 데이터에 가중치를 부여하면서 부스팅을 수행하는 대표적인 알고리즘입니다. GBM(Gradient Boost Machine)도 에이다부스트와 유사하나, 가중치 업데이트를 경사 하강법(Gradient Descent)을 이용하는 것이 큰 차이입니다. 이 경사 하강법은 머신러닝에서 중요한 기법 중 하나이며 여기에서는 '반복 수행을 통해 오류를 최소화할 수 있도록 가중치의 업데이트 값을 도출하는 기법' 정도로 이해 바..
머신러닝 강좌 #16] 랜덤 포레스트 - 공공데이터 에어코리아 대기오염정보 API 연결 후 머신러닝 실행하기 이번에는 공공데이터의 대기오염정보 API를 통해 데이터를 가져오고 이를 통해 머신러닝을 통해 데이터를 분석해 보겠습니다. 공공데이터의 "한국환경공단_에어코리아_대기오염정보"를 통해 API를 연결한 후 데이터를 수집합니다. url ="http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty" service_key = "KEYIN SERVICEKEY" base_date = ["종로구"] for i in range(len(base_date)): break; payload = "?serviceKey=" + service_key + "&"+"returnType=xml&numOfRows=100000&pageNo=1&dataTe..
머신러닝 강좌 #15] 랜덤 포레스트 (Random Forest) 배깅(Bagging)은 여러 개의 분류기를 만들어서 보팅으로 최종 결정하는 알고리즘으로 대표적인 알고리즘으로 랜덤 포레스트가 있습니다. 앙상블 알고리즘 중 비교적 빠른 수행 속도를 가지고 있으며, 다양한 영역에서 높은 예측 성능을 보이고 있습니다. 랜덤포세스트의 기반 알고리즘은 결정 트리입니다. (부스팅 기반의 다양한 앙상블 알고리즘 역시 대부분 결정 트리 알고리즘을 기반 알고리즘으로 채택하고 있습니다.) 랜덤 포레스트는 여러 개의 결정 트리 분류기가 전체 데이터에서 배깅 방식으로 각자의 데이터를 샘플링해 개별적으로 학습을 수행한 뒤 최종적으로 모든 분류기가 보팅을 통해 예측 결정을 하게 됩니다. 랜덤 포레스트는 개별적인 분류기의 기반 알고리즘은 결정 트리이지만 개별 트리가 학습하는 데이터 세트는 전체 ..
머신러닝 강좌 #14] 앙상블 학습(Ensemble Learning)과 보팅(Voting) 앙상블 학습(Ensemble Learning)을 통한 분류는 여러 개의 분류기(Classifier)를 생성하고 그 예측을 결합함으로써 보다 정확한 최종 예측을 도출하는 기법을 말합니다. 앙상블 학습의 목표는 다양한 분류기의 예측 결과를 결합함으로써 단일 분류기 보다 신뢰성이 높은 예측값을 얻는 것입니다. 이미지, 영상, 음성 등의 비정형 데이터의 분류는 딥러닝이 뛰어난 성능을 보이고 있지만, 대부분의 정형 데이터 분류 시에는 앙상블이 뛰어난 성능을 나타내고 있습니다. 앙상블 알고리즘의 대표 격인 랜덤포레스트와 그래디언트 부스팅 알고리즘은 활용도가 높습니다. 앙상블 학습의 유형은 전통적으로 보팅(Voting), 배깅(Bagging), 부스팅(Boosting)의 세 가지로 나눌 수 있으며, 이외에도 스태깅을..
머신러닝 강좌 #13] 결정 트리 실습 - 사용자 행동 인식 [Human Learning Repository] 결정 트리를 이용해 UCI Machine Learning Repository에서 제공하는 Human Activity Reconition데이터 세트에 대한 예측 분류를 수행해 보겠습니다. import pandas as pd import matplotlib.pyplot as plt feature_name_df = pd.read_csv('./data/UCI_Har/features.txt', sep='\s+', header=None, names=['column_index', 'coulmn_name']) feature_name = feature_name_df.iloc[:,1].values.tolist() print(feature_name_df.info()) # print(feature_name_df.head())..
머신러닝 강좌 #12] 결정트리(DecisionTree)와 과적합에 대해 결정 트리는 ML알고리즘 중 직관적으로 이해하기 쉬운 알고리즘입니다. 규칙 노드(Decision Node)로 표시된 노드는 규칙 조건이 되는 것이고, 리프 노드(Leaf Node)로 표시된 노드는 결정된 클래스 값입니다. 그리고 새로운 규칙 조건마다 서브 트리(Sub Tree)가 생성됩니다. 데이터 세트에 피처가 있고 이러한 피처가 결합해 규칙 조건마다 서브 트리(Sub Tree)가 생성됩니다. 데이터 세트에 피처가 있고 이러한 피처가 결합해 규칙 조건을 만들 때마다 규칙 노드가 만들어집니다. 하지만 많은 규칙이 있다는 것은 곧 분류를 결정하는 방식이 더욱 복잡해진다는 뜻이며 과적합으로 이어지기 쉽습니다. 즉, 트리의 깊이(depth)가 깊어질수록 결정 트리의 예측 성능이 저하될 가능성이 높습니다. 가능..
머신러닝 강좌 #11] 분류(Classification)의 개요 지도 학습(Supervised Learning)은 레이블(Label), 즉 명시적인 정답이 있는 데이터가 주어진 상태에서 학습하는 머신러닝 방식입니다. 지도 학습의 대표적인 유형인 분류(Classification)는 학습 데이터로 주어진 데이터의 피처와 레이블 값(결정 값, 클래스 값)을 머신러닝 알고리즘으로 학습해 모델을 생성하고, 이렇게 생성된 모델에 새로운 데이터 값이 주어졌을 때 미지의 레이블 값을 예측하는 것입니다. 즉, 기존 데이터가 어떤 레이블에 속하는지 패턴을 알고리즘으로 인지한 뒤에 새롭게 관측된 데이터에 대한 레이블을 판별하는 것입니다. 분류를 사용하는 머신러닝 알고리즘에는 베이즈 통계와 생성 모델에 기반한 나이브 베이즈 독립변수와 종속변수의 선형 관계성에 기반한 로지스틱 회귀 데이터 ..
머신러닝 강좌 #10] 피마 인디언 당뇨병 예측 실습과 마무리 피마 인디언 당뇨병(Pima Indian Diabetes) 데이터 세트를 이용해 당뇨병 여부를 판단하는 머신러닝 예측 모델을 수립하는 연습을 해보겠습니다. 관련 소스는 아래와 같습니다. http://localhost:8888/notebooks/Lecture_ML/Lecture_9_PimaIndian.ipynb 이진 분류의 레이블 값이 불균형하게 분포될 경우(즉 0이 매우 많고, 1이 매우 적을 경우 또는 반대의 경우) 단순히 예측 결과와 실제 결과가 일치하는 지표인 정확도만으로는 머신러닝 모델의 예측 성능을 평가할 수 없습니다. 오차행렬은 Negative와 Positive값을 가지는 실제 클래스 값과 예측 클래스 값이 True와 False에 따라 TN, FP, FN, TP로 매칭되는 4분면 행렬을 기반으..
머신러닝 강좌 #9] 머신러닝 모델 성능 평가 - F1, ROC-AUC F1 Score F1 스코어(Score)는 정밀도와 재현율을 결합한 지표입니다. F1스코어는 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 값을 가집니다. F1 스코어의 공식은 다음과 같습니다. 만일 A예측 모델의 경우 정밀도가 0.9. 재현율이 0.1로 극단적인 차이가 나고, B예측 모델은 정밀도가 0.5, 재현율이 0.5로 정밀도와 재현율이 큰 차이가 없다면 A예측 모델의 F1스코어는 0.18이고, B예측 모델의 F1 스코어는 0.5로 B모델이 A모델에 비해 매우 우수한 F1 스코어를 가지게 됩니다. ROC - AUC ROC, AUC Curve에 대해 : Receiver Operating Characteristic, Area Under the Curve AUC-ROC Cu..
머신러닝 강좌 #8] 머신러닝 모델 성능 평가 - 정밀도(Precision), 재현율(Recall) 정밀도와 재현율은 Positive 데이터 세트의 예측 성능에 좀 더 초점을 맞춘 평가 지표입니다. 본 장을 진행하기 전 간략하게 내용을 보려면 페이지(https://nicola-ml.tistory.com/88?category=861724) 하단을 다시 한번 복습해주세요. 정밀도 = TP / (FP+TP) 재현율 = TP / (FN+TP) 정밀도는 예측을 Positive로 한 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율을 뜻합니다. 공식의 분모인 FP+TP는 예측을 Positive로 한 모든 데이터 건수이며, 분자인 TP는 예측과 실제 값이 Positive로 일치한 데이터 건수입니다. Positive예측 성능을 더욱 정밀하게 측정하기 위한 평가 지표로 양성 예측도라고도 불립니다. 재..
머신러닝 강좌 #7] 머신러닝 모델 성능 평가 - 정확도 (Accuracy), Confusion Matrix 머신러닝 모델은 여러 가지 방법으로 예측 성능을 평가할 수 있습니다. 성능 평가 지표(Evaluation Metrics)는 일반적으로 모델이 분류냐 회귀냐에 따라 여러 종류로 나뉩니다. 회귀의 경우 대부분 실제값과 예측값의 오차 평균값에 기반합니다. 예를 들어 오차에 절댓값을 씌운 뒤 평균 오차를 구하거나 오차의 제곱 값에 루트를 씌운 뒤 평균 오차를 구하는 방법과 같이 기본적으로 예측 오차를 가지고 정규화 수준을 재가공하는 방법이 회귀의 성능 평가 지표 유형입니다. 분류의 평가방법도 일반적으로는 실제 결과 데이터와 예측 결과 데이터가 얼마나 정확하고 오류가 적게 발생하는가에 기반하지만, 단순히 이러한 정확도만 가지고 판단했다가는 잘못된 평가 결과에 빠질수 있습니다. 특히 0과 1로 결정값이 한정되는 이..
머신러닝 강좌 #6] 타이타닉 생존자 예측 실습 기본적인 ML의 과정을 복습하기 위해 타이타닉 생존자 예측을 실습을 하겠습니다. 데이타는 https://www.kaggle.com/c/titanic/data 이곳에서 다운로드하거나 아래의 데이터를 다운로드 하여 실습합니다. 실습에 사용한 ipny화일은 아래와 같습니다. 다운로드 하여서 jupyter notebook에 오픈하거나 colab에서 불러오시면 됩니다.
머신러닝 강좌 #5] 피처스케일링 (표준화 / 정규화) / StandardScler, MinMaxScaler 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 피처 스케일링이라고 합니다. 대표적인 방법으로 표준화(Standardiaztion)와 정규화(Normaliaztion)가 있습니다. 일반적으로 정규화는 서로 다른 피처의 크기를 통일하기 위해 크기를 변환해주는 개념입니다. 즉, 개별 데이터의 크기를 모두 똑같은 단위로 변경하는 것입니다. 사이킷런에서 제공하는 대표적인 피처 스케일 클래스인 StandardScaler와 MinMaxScaler를 알아보겠습니다. 1. StandardScler StandardScaler : 피처스케일링 정규화 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 피처 스케일링(Feature Scaling)이라고 합니다. 대표적인 방법으로 표준화(Standardiza..