본문 바로가기

Data Science/Machine Learning

(46)
[ML] 정규분포, Xaiver, He 파라미터 초기화 방법 이번 포스팅에서는 딥러닝 모델에서 파라미터를 초기화 하는 방법으로서 정규분포 방법, Xaiver, He 방법에 대해 알아보기로 하자. 파라미터 초기화하는 방법을 어떻게 하느냐에 따라 딥러닝 모델에서 Gradient 소실 또는 발산 문제를 발생시키는지 여부를 결정할 만큼 중요하다. 먼저 정규분포 또는 표준정규분포 방식으로 파라미터를 초기화하는 방법에 대해 알아보자. 1. 표준정규분포로 파라미터 초기화 하기 표준정규분포는 알다시피 정규분포를 평균이 0, 분산이 1인 분포로 변환하는 방법이다. 수치형 값들을 스케일링하는 방법에도 자주 활용된다. 이러한 표준정규분포 방법을 활용해 파라미터를 초기화시킬 수 있다. 그런데 표준정규분포를 활용해 파라미터를 초기화 하면 어떻게 될까? 우선 표준정규분포로 파라미터를 초기..
[ML] Explainable AI - Shapley Value 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에 기반했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다. 감사합니다. 이번 포스팅에서는 설명이 가능한 인공지능(Explainable AI)을 만들기 위한 하나의 요소로서 Shapley Value에 대해 소개하고자 한다. Explainable AI라고 하면 무엇인가 엄청 거대해 보일 수 있지만 우리가 흔히 사용해왔던 Scikit-learn 라이브러리에서도 관련된 것들을 찾아볼 수 있다. 예를 들면 Tree-based 알고리즘이나 Boosting 계열 알고리즘들은 Feature Importance라고 Feat..
[ML] Unbiased boosting : CatBoost 이번 포스팅에서는 Boosting 계열의 알고리즘 중에서 GBM(Gradient Boosting Machines) 알고리즘에 기반하여 만들어진 CatBoost 알고리즘에 대해 알아보려고 한다. CatBoost는 2017년 논문에서 소개되었으며 현재까지 현업에서도 활발하게 사용되고 있다고 한다. 우선 CatBoost 를 본격적으로 소개하기 전에 GBM에 대한 개념부터 살펴보고 들어가자. 1. Gradient Boosting = Residual Boosting Gradient Boosting의 기본적인 아이디어는 주어진 데이터의 일부를 학습시켜 만든 모델로 다른 데이터를 예측한 후 알게되는 잔차를 이용하는 것이다. 이렇게 주어진 데이터에 대해 계속적으로 학습 후 모델을 만들고 다른 데이터를 예측함으로써 결국..
[ML] 주요 인자 탐지 방법인 FDR(False Discovery Rate) 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에 기반했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다.(저작권의 문제가 되지 않도록 사진은 최대한 제가 직접 만든 자료로 대체했습니다 :) ) 이번 포스팅에서는 주요 인자를 탐지하는 방법 중 하나인 FDR(False Discovery Rate)에 대해 알아보려고 한다. 본격적으로 FDR에 대해 알아보기에 앞서 '주요 인자를 탐지'한다는 것이 무엇인지 알아보자. 주요 인자 탐지는 '이상 탐지(Anomaly Detection)'를 하기 위한 분석이라고 할 수 있다. 이상 탐지란, 특정한 도메인에서 일반적으로..
[ML] Partial Least Squares(부분 최소제곱법) 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에 기반했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다. 감사합니다.(저작권의 문제가 되지 않도록 사진은 최대한 제가 직접 만든 자료로 대체했습니다 :) ) 이번 포스팅에서는 Feature Extraction의 방법 중 하나인 Parital Least Squares(부분 최소제곱법)에 대해 알아보려고 한다. 부분 최소제곱법은 Feature Extraction 방법 중에서도 Supervised한 방법에 속한다. 아니 Feature Extraction에서도 Supervised와 Unsupervised가 나누어..
[ML] Regression metric 과 Elastic net regression 이번 포스팅에서는 회귀(Regression) 모델의 성능을 평가하기 위한 메트릭에 대한 종류들을 비교해보면서 어떠한 용도로 쓰이는지 파악을 하는 내용에 대해 알아보자. 또한 회귀 모델 중 정규화(Regularization) 항을 추가한 2가지 모델 Lasso 회귀(L1 norm 적용)와 Ridge 회귀(L2 norm 적용)의 결합 버전인 Elastic net 회귀 모델에 대해서도 알아보자. 앞으로 소개할 목차는 다음과 같다. 1. MAE vs RMSE 2. MAPE 3. MASE 4. Elastic net regression 1. MAE vs RMSE MAE(Mean Absolute Error)와 RMSE(Root Mean Squared Error)는 아마 회귀 모델 성능을 평가하는 척도로 가장 자주 사..
[ML] Out Of Fold(OOF) 방법으로 모델 평가하기 🔊 해당 포스팅은 인프런 강의의 캐글 Advanced 머신러닝 실전 박치기 강의 내용을 토대로 재구성하였음을 알려드립니다. 해당 강의에 대해 더 궁금하시다면 여기를 클릭해주세요. 이번 포스팅에서는 머신러닝 모델의 성능을 평가하는 방법으로서 OOF 방법이라고 알려져 있는 Out Of Fold 방식에 대해 알아보려고 한다. OOF 방식은 실무보다는 Kaggle, Dacon과 같은 예측 알고리즘 대회에서 자주 사용되는 방식이라고 한다. 그럼 OOF 방식은 어떻게 동작하는 걸까? 우선 OOF 방식은 Fold를 이용한다. Fold라.. 어디에선가 많이 들어봤지 않은가!? 데이터수가 적을 때 모델의 오버피팅 가능성을 예방하기 위해 자주 사용되는 교차검증 방법인 K-fold cross validation에서도 Fol..
[ML] Bayesian Optimization으로 파라미터 튜닝하기 이번 포스팅에서는 머신러닝 모델의 하이퍼파라미터를 튜닝하는 방법 중 하나인 Bayesian Optimization에 대해 알아보려 한다. 그리고 간단한 예시를 통해 Bayesian Optimization 라이브러리가 얼마나 최적의 해와 근사하게 구하는지도 살펴보자. 참고로 Bayesian Optimization의 디테일한 수학적 수식보단 직관적인 이해와 어떤 과정으로 Bayesian Optimization이 수행되는지에 초점을 맞추었다. 자세한 수학적 수식은 하단의 레퍼런스를 참조하자. 하이퍼파라미터 튜닝은 머신러닝 모델의 성능을 향상시키는 데 상당한 기여를 한다. 경우에 따라 모델이 너무 복잡해 발생하는 Overfitting 문제도 예방할 수 있으며 반대로 모델이 너무 단순하여 발생하는 Underfit..
[ML] PCA, 주성분의 개수는 어떤 기준으로 설정할까? 이번 포스팅에서는 기존 여러 개의 변수의 차원의 축소를 수행해주면서 추출되는 새로운 변수를 만드는 즉, Feature extraction 중 한 가지 방법으로서 PCA(주성분 분석)에 대한 내용이다. PCA가 구체적으로 무엇이고 정의는 어떻게 되는지에 대해서는 기존 포스팅을 참고하자. 그래서 이번에 다룰 내용은 PCA를 수행할 때 '몇 개'의 변수로 차원을 축소할지 결정하는 기준에 대한 내용이다. 이 기준에 대해서 알아보기 위해 예시 데이터를 활용해서 적절한 주성분 개수를 설정해보자. 참고로 이번에 사용될 데이터는 종속변수가 없는 독립변수들 끼리만 활용해볼 것이다. 왜냐하면 이번 포스팅의 목적은 PCA를 통해 종속변수 예측력에 영향을 준다는 내용보다는 독립변수들에 PCA 수행을 해주었을 때 몇 개의 주성..
[ML] 당신은 데이터를 올바르게 분할하고 있는가? 앞으로 전개할 내용은 Coursera 딥러닝 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 이번 포스팅에서 다룰 주제는 분류 문제에서의 '데이터 분할'에 대한 내용이다. 머신러닝 모델을 학습시키고 검증하고 테스트 하기 위해서는 내가 갖고 있는 데이터를 적당하게 나누어 주어야 한다. 보통 갖고 있는 데이터 셋이 학습용, 검증용(개발용), 테스트용 총 3가지로 나누는데, 이에 대해 자주 적용되는 데이터 분할 비율, 각각은 어떤 역할을 하는지에 대해서는 이전 포스팅에서 소개했으므로 이에 대한 내용은 생략하고 다른 측면에서 다루어 보려고 한다. 이번 포스팅에서 중점적으로 다루려는 부분은 데이터를 분할하면서 고려해야 할 점과 각 데이..
[ML] 데이터를 복구하는 Auto Encoder? 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 이번 포스팅에서는 입력 데이터를 압축시키고 다시 확장해 결과 데이터를 입력 데이터와 최대한 동일하게 만들기 위해 파라미터를 학습시키는 Auto Encoder에 대해서 알아보려고 한다. 목차는 다음과 같다. 1. Auto Encoder란? 2. PCA vs Encoder 3. Stacked Auto Encoder 4. Denoising Auto Encoder(DAE) 5. Variational Auto Encoder(VAE) 6. Examples of Auto..
[ML] Hyperparameter tuning & Optimization in DNN 앞으로 전개할 내용은 Coursera 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 저번 포스팅에서는 주로 딥러닝이 학습 데이터와 닮아 있지 않은 낯선 데이터를 마주하더라도 제대로 예측하도록 하는 일반화(Regularization) 방법들에 대해 알아보았다. 이번 포스팅에서는 딥러닝의 성능을 개선하는 또 다른 방법으로 Optimization(학습 최적화)과 하이퍼파라미터를 튜닝하는 방법에 대해 알아보려고 한다. 목차는 다음과 같다. 1. Optimization 1-1. Mini-batch Gradient Descent 1-2. Momentum 1-3. RMSProp 1-4. Adam Optimizer 1-5. Batch No..
[ML] How to improve Deep Neural Network? 앞으로 전개할 내용은 Coursera 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 이번 포스팅에서는 딥러닝(Deep Neural Network)의 성능을 개선시키거나 마주하는 문제들을 해결하기 위한 다양한 방법들에 대해 소개한다. 전개되는 내용들 중 일부는 이전 포스팅에서 게시했던 내용들과 중복될 수 있다. 그러한 내용들은 간단히 개념에 대해 소개하고 자세한 내용은 관련 포스팅 링크를 첨부하겠다. 딥러닝이 직면하는 문제들은 다양하다. 하지만 본질적으로 딥러닝이 도달해야 하는 이상점은 바로 만들어진 딥러닝 모델이 어떠한 낯선 데이터를 만나더라도 올바른 예측을 하는 것이다. 즉, 딥러닝의 모델을 일반화(Regularizatio..
[ML] Recurrent Neural Network(RNN) 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 저번 포스팅에서 이미지 분류 문제를 풀어나가는 데 가장 큰 공헌을 한 CNN(Convolutional Neutral Network)에 대해 알아보았다. 이번 포스팅에서는 '순서'가 중요한 의미를 갖는 문제를 해결해나가는 데 많은 도움을 준 RNN(Recurrent Neural Network)에 대해 알아본다. 우선 'Recurrent' 의 사전적 의미는 '재발하는', '되풀이', '재귀적인' 이다. 말 뜻 대로 무언가 계속 되풀이한다는 의미를 내포하고 있다...
[ML] Class imbalance 해결을 위한 다양한 Sampling 기법 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에 기반했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다. 감사합니다. 이번 포스팅에서는 데이터 불균형, 명확하게는 종속변수인 클래스(레이블) 불균형을 해결하기 위한 다양한 샘플링 기법에 대해 알아보려고 한다. 클래스 불균형이 구체적으로 무엇이고 대략적인 해결방안에 대해 알고 싶다면 여기를 참고하자. 클래스 불균형을 해결하기 위해서는 크게 데이터에서 수행할 수 있는 샘플링 기법, 모델링 과정에서 수행할 수 있는 비용기반 학습(Cost-sensitive learning)과 단일 클래스 분류기법(Novelty ..
[ML] How to correlate one or two categorical variables? 이번 포스팅에서는 범주형 변수간의 상관관계를 분석하는 방법에 대해 알아보려고 한다. 우리가 그동안 자주 사용해왔던 Pearson Correlation, 즉, 상관관계 분석은 수치형 변수간의 관계를 분석하는 데만 사용이 된다. 물론 한 가지 예외 사항이 있다. 예를 들어 2개의 변수가 존재할 때, 한 변수는 연속적인 수치형 변수이고 다른 변수는 수치형의 binary값(0 또는 1로 one-hot encoding되어 있는 상태)으로 변환되어 있는 범주형 변수라고 하자. 이 때 범주형 변수가 어찌됬건 수치형 변수로 변환되어 있는 상태이기 때문에 두 변수간의 Pearson Correlation을 구해 두 변수간의 관계를 구할 수 있다.(근본적으로는 Point-biserial Correlation(점-이연 상관계..
[ML] Multivariate regression(다변량 회귀분석) 프로세스 카테고리를 하나 추가했다. 이유는 최근에 데이터 분석 개인 프로젝트를 진행하면서 크나큰 문제점이 발생함을 느꼈기 때문이다. 그 위험성은 데이터를 분석하면서 방향성에 대한 문제와 관련된 것이었다. 필자는 어떤 일을 수행할 때마다 그에 정해진 하나의 절차 즉, 프로세스를 찾게 된다. 그것을 기준으로 앞으로 어떤 방향으로 나가야할지 방향성을 설정하기 때문이다. 그렇게 암묵적으로 방향을 설정하지 않고 무작정 키보드를 눌러가면서 코딩을 하다가 문득 막다른 길에 다다랐다. 이제 내가 나아가야 할 방향을 설정하고 분석을 진행하기 위해 뛰어난 Kaggle 고수들의 가르침을 받고 기록해보려 한다. 분석하려는 모든 문제의 종류가 동일한 프로세스를 갖진 않을 것이다. 그래서 하나씩 문제 종류에 맞게 포스팅을 해보려 한다. ..
[ML] Mean Shift, DBSCAN, and Silhouette metric 이번 포스팅에서는 군집화 모델인 Mean Shift와 DBSCAN에 대해 알아보고 군집화 모델의 성능을 평가하는 지표인 Silhouette metric에 대해서 소개하려한다. 그리고 이 두 가지 모델들과 평가지표를 Scikit-learn을 이용해서 간단하게 구현해보는 시간도 갖는다. 목차는 다음과 같다. 1. Mean Shift 2. DBSCAN(Density Based Spatial Clustering of Application with Noise) 3. Silhouette metric for clustering 1. Mean Shift Mean Shift는 Non-parametric(비모수 방법론) 모델이며 KDE(Kernel Density Estimation)을 이용하여 개별 데이터 포인트들이 데이..
[ML] How to encode categorical variables 이번 포스팅에서는 Categorical variables 즉, 범주형 변수들을 인코딩하는 여러가지 방법에 대해서 알아보려고 한다. 해당 내용은 포스팅 하단의 래퍼런스를 통해 학습했고 해당 래퍼런스에서 다루지 않는 다른 인코딩 방식이 존재한다면 댓글로 달아주시면 너무 감사할 것 같다. 범주형 자료에는 순서가 없는 명목형(nominal) 자료와 순서가 있는 순서형(ordinal) 자료로 나뉜다. 명목형 자료의 대표적인 사례로는 혈액형, 지역, 직업, 학교 등을 들 수 있다. 반면에 순서형 자료의 예시로는 생활수준, 만족도를 대표적으로 들 수 있겠다. 이러한 범주형 값들이 들어있는 데이터를 머신러닝, 딥러닝 모델의 input 데이터로 집어넣으려고 할 때 문자열 상태 그대로 모델에 넣을 수가 없다. 이러한 값들..
[ML] Spectral Clustering(스펙트럴 클러스터링) 이번 포스팅에서는 클러스터링 모델 중 하나로서 스펙트럴 클러스터링에 대해서 소개하려 한다. 여기서 스펙트럴(Spectral) 자체는 행렬의 고윳값(Eigenvalue)을 의미한다. 이는 추후에 고윳값을 어떻게 활용할 것이라는 걸 암시해주는 듯하다. 1. Parametric-based V.S Graph-based 기본적으로 클러스터링 알고리즘엔 Parametric-based 와 Graph-based 알고리즘이 존재한다. 이전에 우리가 배웠던 K-means 클러스터링같은 경우 Parametric-based 방법이라고 정의할 수 있다.(참고로 Knn(K-nearest Neighbors) 모델은 Non-parametric 클러스터링 모델이다.) 이번에는 Graph-based 방법인 Spectral Cluster..