본문 바로가기

Data Science

(158)
[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 수행을 해주었을 때 몇 개의 주성..
[추천시스템] 추천 시스템의 성능은 어떻게 평가할까? 이번 포스팅에서는 추천 시스템(Recommend System)의 성능을 평가하는 여러가지 메트릭들에 대해 소개하려고 한다. 이 포스팅을 보다 깊게 이해하기 위해서 개인적으로 추천 시스템에 대한 종류와 개념을 우선적으로 숙지하는 것을 제안한다. 이전에 추천 시스템의 종류와 간단하게 Python으로 구현하는 방법에 대한 포스팅들을 게시한 적이 있다. 참고하려면 여기를 클릭하자. 추천 시스템을 평가하기 위한 메트릭들에 대해 소개하기에 앞서 간단하게 추천 시스템에 대한 개념을 짚고 넘어가자. 추천 시스템이란, 특정 제품들에 대한 사용자의 평가 또는 리뷰 등과 같은 데이터를 기반으로 이 사용자에게 비슷한 다른 제품을 추천해주는 것을 말한다. 기존의 추천 시스템들은 머신러닝 모델처럼 하나의 label를 결과값으로 ..
[ML] ResNet & Inception Network란? 앞으로 전개할 내용은 Coursera 딥러닝 강의의 내용을 기반으로 필자가 직접 정리하는 내용이며 해당 컨텐츠 이외의 다른 강의에 관심이 있다면 여기를 참고해 수강해보자. 이번 포스팅에서는 CNN 모델을 좀 더 발전시킨 ResNet(Residual Network)와 Inception Network에 대해 알아보려고 한다. 참고로 두 모델들에 대한 자세한 수학적인 수식들은 배제하고 두 모델의 구조가 어떤 구조이고 어떤 프로세스를 따라서 동작하는 지에 좀 더 초점을 맞추어 설명하려고 한다. 1. ResNet(Residual Network) 우선 RestNet에 대해 이해하기 전에 Residual block에 대한 이해가 필요하다. Residual의 사전적 의미는 '잔여', 수학적으로는 '잔차'라는 의미로 사..
[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] Convolutional Neural Network(CNN) 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 컴퓨터 비젼 즉, 이미지 데이터를 분류하는 데 가장 큰 일조를 한 모델이 있다고 한다면 바로 CNN(Convolutional Neural Network) 모델이다.(애석하게도 여기서의 CNN은 미국의 생방송 뉴스 전문 텔레비전 📺방송사 CNN과는 다르다.) 최근에 CNN은 이미지 분류를 넘어서 RNN의 Seq2Seq 모델과 결합하여 Image Captioning 즉, 기계가 이미지를 보고 텍스트로 설명할 수 있는 능력까지 보여주고 있다. 이에 대해서는 흥미로..
[ML] Tensorflow를 이용해 Deep Neural Network 구현하기 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 이번 포스팅에서는 그동안 Tensorflow에서 구현해보았던 단층 퍼셉트론이 아닌 2개 이상의 층(layer)으로 구성된 다층 퍼셉트론, 이른바 '딥러닝'이라고 불리는 모델을 구현해보려 한다. 물론 여기서 딥(Deep)하다는 것이 특정 몇 개 이상의 층으로 구성되어야 딥러닝이라고 할 수 있는 절대적 기준이 있는 것은 아니다. 하지만 아직 텐서플로우를 활용해 딥러닝을 구현해보는 기초적인 과정이므로 layer가 2개일 경우만을 소개한다는 점 참고해 주길 바란다...
[ML] Class imbalance 해결을 위한 다양한 Sampling 기법 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에 기반했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다. 감사합니다. 이번 포스팅에서는 데이터 불균형, 명확하게는 종속변수인 클래스(레이블) 불균형을 해결하기 위한 다양한 샘플링 기법에 대해 알아보려고 한다. 클래스 불균형이 구체적으로 무엇이고 대략적인 해결방안에 대해 알고 싶다면 여기를 참고하자. 클래스 불균형을 해결하기 위해서는 크게 데이터에서 수행할 수 있는 샘플링 기법, 모델링 과정에서 수행할 수 있는 비용기반 학습(Cost-sensitive learning)과 단일 클래스 분류기법(Novelty ..
[ML] Tensorflow를 이용해 (Binary and Multi)Logistic Regression 구현하기 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 이번 포스팅에서는 저번 시간인 Tensorflow를 이용한 뉴럴네트워크 구현하기에서 배웠던 기본 문법과 구현 과정을 기반으로 회귀 모델이지만 분류 문제해결에 사용되는 Logistic Regression 모델을 구현해보려고 한다. Logistic Regression에서도 이진(Binary) 분류인지 다중(Multi)분류인지에 따라 사용하는 활성함수의 종류가 다르다. 이제 예시 데이터를 사용해서 각 모델을 텐서플로우를 이용해 구현해보자. 1. Logistic R..
[ML] Tensorflow를 이용해 Neural Network 구현하기 🔉해당 자료 내용은 순천향대학교 빅데이터공학과 김정현 교수님의 수업자료에 기반하였으며 수업자료의 저작권 문제로 인해 수업자료를 직접 이용하지 않고 수업자료의 내용을 참고하여 본인이 직접 작성하였으므로 저작권 문제가 발생하지 않음을 필히 알려드립니다. 이번 대학교 4학년 마지막 학기에 '딥러닝과 응용'이라는 수업을 듣게 됬다. 1학기에 들었던 수업인 머신러닝의 내용을 기초로 하지만 딥러닝 관련 모델에 수업 내용이 집중될 것 같다. 딥러닝을 모델하는 여러가지 언어와 툴이 있지만 해당 수업에서는 Python을 이용한 Tensorflow 1.x 버전을 사용하여 진행된다. 앞으로 이 수업에 관련된 포스팅은 이론과 실습 두 가지를 동시에 하거나 번갈아가면서 글을 게시할 예정이다. 또한 현재 Tensorflow 2...
[ML] How to correlate one or two categorical variables? 이번 포스팅에서는 범주형 변수간의 상관관계를 분석하는 방법에 대해 알아보려고 한다. 우리가 그동안 자주 사용해왔던 Pearson Correlation, 즉, 상관관계 분석은 수치형 변수간의 관계를 분석하는 데만 사용이 된다. 물론 한 가지 예외 사항이 있다. 예를 들어 2개의 변수가 존재할 때, 한 변수는 연속적인 수치형 변수이고 다른 변수는 수치형의 binary값(0 또는 1로 one-hot encoding되어 있는 상태)으로 변환되어 있는 범주형 변수라고 하자. 이 때 범주형 변수가 어찌됬건 수치형 변수로 변환되어 있는 상태이기 때문에 두 변수간의 Pearson Correlation을 구해 두 변수간의 관계를 구할 수 있다.(근본적으로는 Point-biserial Correlation(점-이연 상관계..
감마, 베타, 카이제곱 분포와 t분포, F분포에 대한 이해 🔉해당 포스팅에서 사용된 자료는 고려대학교 산업경영공학부 김성범교수님의 Youtube 강의자료에서 발췌했음을 알려드립니다. 혹여나 출처를 밝혔음에도 불구하고 저작권의 문제가 된다면 joyh951021@gmail.com으로 연락주시면 해당 자료를 삭제하겠습니다. 감사합니다. 이번 포스팅에서는 그동안 확률분포 관련 포스팅에서 다루어보지 않았었던 감마, 베타, 카이제곱 분포, 그리고 t분포와 F분포에 대해 알아보려고 한다. 각 확률분포에 대한 PDF 함수 공식과 분포 생김새도 알아보며 서로가 어떤 관련이 있는지에 대해서도 알아보자. 목차는 다음과 같다. 1. 감마 분포 2. 베타 분포 3. 카이제곱 분포 4. t분포 5. F분포 1. 감마 분포 감마분포와 다음 목차에서 소개할 베타분포는 기본적으로 지수분포와 ..
[ML] Multivariate regression(다변량 회귀분석) 프로세스 카테고리를 하나 추가했다. 이유는 최근에 데이터 분석 개인 프로젝트를 진행하면서 크나큰 문제점이 발생함을 느꼈기 때문이다. 그 위험성은 데이터를 분석하면서 방향성에 대한 문제와 관련된 것이었다. 필자는 어떤 일을 수행할 때마다 그에 정해진 하나의 절차 즉, 프로세스를 찾게 된다. 그것을 기준으로 앞으로 어떤 방향으로 나가야할지 방향성을 설정하기 때문이다. 그렇게 암묵적으로 방향을 설정하지 않고 무작정 키보드를 눌러가면서 코딩을 하다가 문득 막다른 길에 다다랐다. 이제 내가 나아가야 할 방향을 설정하고 분석을 진행하기 위해 뛰어난 Kaggle 고수들의 가르침을 받고 기록해보려 한다. 분석하려는 모든 문제의 종류가 동일한 프로세스를 갖진 않을 것이다. 그래서 하나씩 문제 종류에 맞게 포스팅을 해보려 한다. ..
[NLP] Surprise library를 활용한 추천시스템 구현하기 저번 포스팅까지 추천 시스템의 여러가지 종류와 각각의 추천 알고리즘이 어떻게 구현되는지에 대해 자세히 알아보았다. 이번 포스팅에서는 이전까지 소개해왔던 추천 알고리즘을 간편한 API로 제공하는 Surprise 라이브러리에 대해 알아보고 이를 활용해 추천시스템을 구현해보는 시간을 가지려고 한다. 우선 Surprise 라이브러리란, Python에 기반하며 Scikit-learn API와 비슷한 형태로 제공을 하여 추천 시스템 구현을 도와주는 편리한 라이브러리이다. Surprise 라이브러리에 대해 더 자세히 알고 싶다면 공식문서를 참고하자. Surprise 라이브러리가 구현되는 프로세스와 주요 메소드 그리고 예시 데이터셋을 사용해 Surprise를 활용한 추천시스템을 직접 구현해보자. 참고로 Surprise..