본문 바로가기
반응형

Machine Learning21

Confusion Matrix, Precision-Recall, F1-Score 이해하기 분류 기계 학습 모델의 성능을 평가하는 방법은 무엇입니까? 데이터 전처리 단계를 마무리하고, 기계 학습 모델에 적용하면, 확률로 그 결과(출력) 값을 얻습니다. 모델 결과의 성능을 어떻게 측정할 수 있을까요? Confusion Matrix는 분류 모델을 확인하여 모델이 더 좋고 효과적인 방식으로 작동하는 방법을 찾는 가장 좋은 방법입니다. 이번 포스팅에서는 약간은 혼란스러워 보이지만 사소해 보이는 Confusion Matrix와 관련 용어에 대해 알아보도록 하겠습니다. Confusion Matrix(혼동 행렬), Precision(정밀도), Recall(재현율) 및 F1 Score는 정확도(Accuracy)에 비해 예측 결과에 대한 더 나은 직관을 제공합니다. Confusion Matrix(혼동 행렬) .. 2022. 8. 7.
앙상블 학습에 대한 설명과 기법에 대한 소개 앙상블 학습에 대한 설명과 기법에 대한 소개 이번 포스팅에서는 기계 학습 모델의 성능을 향상하는 데 도움이 될 수 있는 방법인 앙상블 학습에 대해 알아보겠습니다. 몇 가지 인기 있는 앙상블 전략과 해당 알고리즘에 대해 이야기하기 전에 앙상블 학습이 무엇인지와 그 이점을 먼저 알아보겠습니다. 앙상블 학습이란? 강력한 학습자(learner)를 만들기 위해 여러 개의 약한 모델을 결합하는 것이 앙상블 학습의 기본 아이디어입니다. 일반적인 기계 학습 분류 및 회귀 방법의 기능을 향상시키는 데 유용한 기술입니다. 전체 분류 성능을 향상시키기 위해 앙상블 모델은 많은 분류기(classifiers) 및 회귀자(regressors)의 결과를 결합합니다. 개개인 들이 두 가지 옵션 중에서 어느 것이 올바른지 결정해야 하.. 2022. 7. 23.
Python 예제를 사용한 기계 학습의 정규화 및 표준화 모든 기계 학습의 시작은 데이터 전처리로 시작됩니다. Feature Scaling은 전처리에서 중요한 단계 중 하나일 수 있습니다. 이번 포스팅에서는 2개의 Feature Scaling에 대해서 알아보겠습니다. Normalization (정규화) Standardization (표준화) Feature Scaling 사용 시기 상황에 따른 정규화 및 표준화 선택 요약 Normalization (Min-Max Normalization) 이러한 접근 방식은 feature를 [0,1] 사이의 값으로 변환시킵니다. 공식은 다음과 같이 사용됩니다. x = min(x)일 때 0을 반환하고, 최솟값은 값 0으로 바뀝니다. x =max(x) 일 때 1을 반환하고, 최댓값은 값 1로 바뀝니다. 다른 값은 0과 1 사이의 값.. 2022. 6. 13.
DecisionTreeClassifier 결정 트리(Decision Tree)는 트리 계열의 머신러닝 알고리즘의 가장 기본이 되는 모형입니다. GBM, XGBoost, LightGBM 등 트리 계열의 부스팅 알고리즘을 이해하기 위해서는 가장 기본이 되는 결정 트리 모형을 잘 이해해야 합니다. 이진 분류 예측에 활용되는 결정 트리를 사이킷런 패키진에 있는 DecisionTreeClassifier 함수에 대해서 알아보겠습니다. DecisionTreeClassifier Parameter DecisionTreeClassifier(*, criterion='gini', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, m.. 2022. 6. 12.
Cross Validation(교차 검증) Cross Validation(교차 검증) ? Cross Validation(교차 검증)은 모델링 이후 모형에 대한 정확도를 검증하는 하나의 방법론입니다. 동일한 데이터를 여러개(n 개)로 분할하여 모델에 대한 학습과 검증을 n번 반복하여 모델의 정확도를 검증합니다. 아래의 그림을 보시면, 쉽게 이해하실 수 있을 거예요. 훈련 데이터를 n개로 분할합니다. n-1개는 모델을 학습하는 데 사용되고, 나머지 1개는 모델의 정확도를 평가하는 데 사용됩니다. 모델의 정확한 성능 검증을 위해 n번 반복하여 산출된 정확도의 평균을 계산합니다. 흔히, n - fold Cross Validation으로 말하기도 합니다. Cross Validation(교차 검증) 사용 예시 파이썬의 싸이킷런 패키지에서 제공하는 함수를 이.. 2022. 6. 5.
하이퍼파라미터 Serching (with 파이썬) - GridSearchCV() 함수 Lightgbm 알고리즘뿐만 아니라 여러 기계학습 알고리즘을 활용하여 모델링을 수행할 때, 가장 중요하면서도 쉽지 않은 영역이 최적을 하이퍼파라미터를 찾는 일입니다. 실제로 기계학습 알고리즘의 최종 목표 역시, 좋은 성능을 보이면서, 과적합(overfitting)이 상대적으로 낮은 하이퍼 파라미터를 찾는 일이라고 할 수 있습니다. 하지만, 이런 일련의 업무는 복잡하고 지루하고 장시간 소요될 수 있는데요. 파이썬에서는 이 부분을 해결해 주는 함수가 있어요. 바로 싸이킷런 래퍼에서 제공해 주는 GridSearchCV() 함수입니다. GridSearchCV() 함수의 주요 인수 GridSearchCV(estimator, param_grid, scoring=None, n_jobs=None, refit=True,.. 2022. 2. 14.
lightgbm 알고리즘을 사용한 이진분류예측모델 적합(with 파이썬) lightgbm은 GBM계열의 알고리즘으로 기계학습 알고리즘 중 XGBoost와 함께 가장 많이 사용되는 알고리즘 중의 하나예요. 알고리즘에 대한 자세한 설명은 아래 포스팅을 참고하시면 됩니다. LightGBM 개요 LightGBM은 트리 기반 학습 알고리즘을 사용하는 그래디언트 부스팅 프레임워크입니다. 다음과 같은 이점이 있는 효율적이고 잘 분산되도록 설계된 알고리즘입니다. 더 빠른 훈련 속도와 더 높은 zzinnam.tistory.com 본 포스팅에서는 파이썬에서 제공하는 lightgbm 알고리즘을 활용하여 간단한 이진 분류 예측모델 적합 예시를 보여드리도록 하겠습니다. 사용할 데이터는 XGBoost 알고리즘(해당 내용은 여기를 참조)을 설명했을 때와 동일한 데이터를 사용하고, 유사한 하이퍼 파라미터.. 2022. 2. 12.
lightgbm 주요 하이퍼파라미터 (with 파이썬) 이번 포스팅에서는 파이썬에서 제공하는 lightgbm 패키지의 주요 하이퍼파라미터에 대해 설명하겠습니다. lightgbm 알고리즘에 대한 일반적인 설명은 아래 포스팅 글을 참고하세요. LightGBM 개요 LightGBM은 트리 기반 학습 알고리즘을 사용하는 그래디언트 부스팅 프레임워크입니다. 다음과 같은 이점이 있는 효율적이고 잘 분산되도록 설계된 알고리즘입니다. 더 빠른 훈련 속도와 더 높은 zzinnam.tistory.com lightgbm 주요 하이퍼파라미터 (with 파이썬 래퍼) No 파라미터 인수명 설명 1 num_iterations (기본값 100) - 학습에 활용될 weak learner의 반복 수 2 learning_rate (기본값 0.1) - 일반적으로 확습률(learning rat.. 2022. 2. 8.
XGboost 주요 하이퍼파라미터 (with 파이썬) 본 포스팅에서는 파이썬의 XGBoost 알고리즘의 주요 하이퍼파라미터에 대해 설명하겠습니다. 해당 알고리즘에 대한 설명은 아래 포스팅을 참고하시면 됩니다. R에서 XGBoost 알고리즘을 사용한 분류예측모델 적합 예시 Overview R의 강력한 기계 학습 알고리즘인 xgboost를 사용하는 방법 알아보기 예시 데이터의 사용과 xgboost 기계 학습 모델을 구축함으로서, R에서 xgboost의 응용 프로그램 확인하기 Introduction XGB zzinnam.tistory.com XGboost 주요 하이퍼파라미터 (파이썬 래퍼 기준) XGBoost의 파라미터는 크게 3가지 구분합니다. nthreadgeneral parameter 기본값을 거의 변경할 일이 없음 booster parameter (매우 .. 2022. 2. 7.
XGBoost 알고리즘을 사용한 이진분류예측모델 적합(with 파이썬) XGBoost는 GBM계열의 알고리즘으로 기계학습 알고리즘 중 가장 많이 사용되는 알고리즘 중의 하나예요. 알고리즘에 대한 자세한 설명은 아래 포스팅을 참고하시면 됩니다. R에서 XGBoost 알고리즘을 사용한 분류예측모델 적합 예시 Overview R의 강력한 기계 학습 알고리즘인 xgboost를 사용하는 방법 알아보기 예시 데이터의 사용과 xgboost 기계 학습 모델을 구축함으로서, R에서 xgboost의 응용 프로그램 확인하기 Introduction XGB zzinnam.tistory.com 본 포스팅에서는 파이썬에서 제공하는 XGBoost 알고리즘을 활용하여 간단한 이진 분류 예측모델 적합 예시를 보여드리도록 하겠습니다. 사용할 데이터는 lightgbm(with) 예시에서 사용했던 것과 동일한 .. 2022. 2. 6.
R에서 XGBoost 알고리즘을 사용한 분류예측모델 적합 예시 Overview R의 강력한 기계 학습 알고리즘인 xgboost를 사용하는 방법 알아보기 예시 데이터의 사용과 xgboost 기계 학습 모델을 구축함으로서, R에서 xgboost의 응용 프로그램 확인하기 Introduction XGBoost 알고리즘이 캐글 등 데이터 과학 대회에서 우승을 차지하는 가장 인기 있는 방법 중 하나라는 사실은 누구나 다 알고 계실 거예요. 기존의 기계 학습 알고리즘(ex. Random Forest, Neural Network 등) 보다 강력한 이유는 무엇일까요? 아마, 넓은 의미에서 알고리즘의 효율성, 정확성 및 실행 가능성이라고 생각합니다. 지난 몇 년 동안 예측 모델링은 훨씬 빠르고 정확해졌습니다. 소수의 소수로 모델을 개선하기 위해 feature engineering에 .. 2022. 1. 24.
LightGBM 모델 해석(with R Machine Learning (LightGBM) 코드 예제(with R)를 먼저 수행해야 함!! lgb.get.eval.result(): 부스터로부터 평가 결과 얻기 lgb.Booster가 주어지면 특정 데이터세트의 특정 메트릭에 대한 평가 결과를 반환합니다. # 코드 형식 lgb.get.eval.result( booster, data_name, eval_name, iters = NULL, is_err = FALSE ) Arguments booster: lgb.Booster 클래스의 객체 data_name: 평가 결과를 반환할 데이터 세트 이름 eval_name: 결과를 반환할 평가 측정항목의 이름 iters: 평가 결과를 얻으려는 반복의 정수 벡터입니다. NULL(기본값)이면 모든 반복에 대한 평가 .. 2022. 1. 15.
LightGBM 모델 결과 저장 및 불러오기(with R) # Machine Learning (LightGBM) 코드 예제(with R) 포스트에 있는 실습을 먼저 수행해야 함!! LightGBM 모델을 json으로 덤프 # 코드 예시 lgb.dump(booster, num_iteration = NULL) Arguments booster: lgb.Booster 클래스의 객체 num_iteration: 예측할 반복 횟수, NULL 또는 2022. 1. 14.
Machine Learning (LightGBM)코드 예제(with R) LightGBM으로 모델을 훈련시킨 다음 이를 사용하여 새로운 데이터에 대한 예측 수행 lightgbm() # 코드 형식 lightgbm( data, label = NULL, weight = NULL, params = list(), nrounds = 100L, verbose = 1L, eval_freq = 1L, early_stopping_rounds = NULL, save_name = "lightgbm.model", init_model = NULL, callbacks = list(), serializable = TRUE, ... ) Arguments data: 훈련에 사용되는 lgb.Dataset 객체. lgb.cv와 같은 일부 함수를 사용하면 매트릭스와 같은 다른 유형의 데이터를 전달한 다음 키워드 .. 2022. 1. 13.
Data I/O for LightGBM (with R) LightGBM에 필요한 데이터 I/O 함수 lgb.Dataset(): lgb.Dataset 객체 생성 조밀한 행렬, 희소 행렬 또는 로컬 파일(이전에 lgb.Dataset을 저장하여 생성)에서 lgb.Dataset 객체를 구성합니다. lgb.Dataset( data, params = list(), reference = NULL, colnames = NULL, categorical_feature = NULL, free_raw_data = TRUE, label = NULL, weight = NULL, group = NULL, init_score = NULL ) Arguments data: matrix 객체, dgCMatrix 객체, 텍스트 파일(CSV, TSV 또는 LibSVM)의 경로를 나타내는 문자, .. 2022. 1. 12.
이진분류모델 예측 기초 예제 실습(with R) Introduction LightGBM 알고리즘 활용(Ke et al. 2017) # LightGBM 알고리즘 활용을 위해 패키지 lightgbm 설치 install.packages('lightgbm') # lightgbm 패키지 로드 library(lightgbm) 본 예제는 기본 사용법에 대한 안내 수준이에요. bank 데이터 세트 중 일부를 기반으로 간단한 이진 분류 모델을 구축하는 방법을 보도록 할게요(Moro, Cortez, Rita 2014). "age"와 "balance"이라는 두 가지 input feature를 사용하여 고객이 정기 예금에 가입했는지 여부를 예측할게요. The dataset data(bank, package = "lightgbm") # lightgbm 패키지에 있는 bank.. 2022. 1. 11.
LightGBM 개요 LightGBM은 트리 기반 학습 알고리즘을 사용하는 그래디언트 부스팅 프레임워크입니다. 다음과 같은 이점이 있는 효율적이고 잘 분산되도록 설계된 알고리즘입니다. 더 빠른 훈련 속도와 더 높은 효율성 메모리 사용량 감소 더 좋은 정확도 병렬, 분산 및 GPU 학습 지원 대규모 데이터 처리 가능 LightGBM 특징 LightGBM의 작동 방식에 대해 개념적으로 간단히 설명드릴게요. 다른 부스팅 패키지와 다를 수 있는 LightGBM의 측면에 초점을 맞추기 위해 의사결정 트리 부스팅 알고리즘에 익숙하다고 가정할게요. 자세한 알고리즘은 인용 또는 소스 코드를 참고하시면 돼요. 많은 부스팅 도구는 의사 결정 트리 학습을 위해 사전 정렬 기반 알고리즘(예: xgboost의 기본 알고리즘)을 사용합니다. 간단한 .. 2022. 1. 10.
SHAP value에 대한 간단한 소개(with Python) SHAP(SHapley Additive exPlanations)는 모든 기계 학습 모델의 결과(출력)를 설명하기 위한 게임 이론적인 접근 방식입니다. 게임 이론 및 이와 관련하여 확장된 고전적인 Shapley value를 사용하여 최적의 신뢰할 만한 내용을 로컬 설명과 연결하려고 합니다. INSTALL SHAP는 PyPI 또는 conda-forge에서 설치할 수 있습니다. pip install shap # or conda install -c conda-forge shap XGBoost를 활용한 SHAP 예시 import xgboost import shap # XGBoost model 학습 X, y = shap.datasets.boston() model = xgboost.XGBRegressor().fit(.. 2022. 1. 2.
SHAP value에 대한 간단한 소개(with R) 소개 머신 러닝 알고리즘(랜덤 포레스트, xgboost, 딥 러닝 등)을 활용한 복잡한 예측 모델은 해석하기 쉽지 않죠. 예를 들어, 부도 발생 가능성이 90%인 것과 같은 특정 예측(확률 값)이 주어지면 해당 값을 얻기 위한 각 입력 변수의 영향은 무엇입니까? 최근 이러한 블랙박스 모델을 해석하는(Explainable AI) 기술이 많이 발전하고 있어요. 그중 하나가 바로 Scott M. Lundberg가 개발한 SHAP(SHapley Additive exPlanations)이에요. 판매 점수 모델이라는 것을 한번 생각해 볼까요? 우편번호 "A1"에 거주하는 고객이 "10개 구매"로 점수가 95%이고, 다른 우편번호 "A2" 및 "7개 구매"에 있는 고객의 점수는 60%라고 가정하죠. 우선, 각 변수는.. 2022. 1. 1.
XGBoost 파라미터 조정(튜닝) 파라미터 조정은 기계 학습에서 쉽지 않은 영역이며, 모델의 최적 파라미터는 여러 시나리오에 따라 달라질 수 있습니다. 따라서 이를 위한 정형화되어 있는 포괄적인 가이드를 만드는 것은 사실상 불가능합니다. 이번 포스팅에서는 XGBoost 파라미터에 대한 몇 가지 지침을 제공하려고 합니다. 본 포스팅은 XGBoos의 홈페이지에 있는 내용을 기반으로 작성하였습니다. 편향-분산 트레이드오프에 대한 이해 머신 러닝이나 통계 수업을 수강한다면 반드시 이해하셔야 할 가장 중요한 개념 중 하나입니다. 기계학습에서의 파라미터 조정은 편향-분산의 트레이드오프라고 말할 수 있습니다. 모델이 더 복잡해지도록 허용하면(예: 더 깊이) 모델이 훈련 데이터를 더 잘 맞출 수 있어 편향된 모델이 덜 생깁니다. 그러나 이러한 복잡한 .. 2021. 9. 1.
R에서 XGBoost 알고리즘 적용을 위한 데이터세트 이해하기 본 포스팅은 XGBoost 패키지 홈페이지에 있는 자료를 기반으로 작성하였습니다. Introduction 이 포스팅의 목적은 XGBoost를 사용하여 분석을 위한 데이터 세트를 더 잘 탐색하고 이해하는 방법을 보여 주는 것입니다. 이 포스팅은 아무것도 예측하는 것이 아닙니다. XGBoost를 사용하여 데이터의 기능과 결과 간의 연결을 강조하는 방법을 설명합니다. if (!require('xgboost')) install.packages('xgboost') require(Matrix) require(data.table) if (!require('vcd')) install.packages('vcd') (※ VCD 패키지는 포함된 데이터 세트 중 하나에만 사용됩니다.) 데이터 세트 준비 숫자형 변수 VS 범주.. 2021. 8. 31.
반응형