본문 바로가기

ML | DL | Big data34

ETL, ELT의 4가지 주요 차이점 내가 생각하는 머신러닝, 데이터 엔지니어링/사이언스 분야에서의 가장 중요한 단계는 ETL이다. ETL은 정답이 없고 가장 많은 시간이 소요되기도 하고, 가장 많은 실수가 일어나기도 하며, 개발자의 통찰력에 따라 최종 결과물이 크게 좌우되기도 한다. 이렇게 중요한 ETL이 슬슬 ELT방식으로 변화하고 있다. 이번 글에서는 ETL과 ELT의 정의 및 주요 차이점과 방식의 변화가 생기는 이유 등을 정리해보고자 한다. * 이 글에서 설명되는 ETL와 ELT는 각각 ETL 프로세스, ELT 프로세스와 동일한 의미를 가진다. E, T, L 이란? ETL / ELT은 모두 다음 세 가지 단계를 포함한다. E/Extract(추출) : 원본 데이터베이스 또는 데이터 소스에서 데이터를 가져오는 것을 말한다. ETL을 사용.. 2021. 4. 26.
Apache Spark - Master, Slave 구성 별 메모리, 코어 수 설정하기 AWS EMR을 이용해 Apache Spark를 실행할 때 마스터와 슬레이브 수에 따라 적절한 메모리, 코어수를 구하는 Cheatsheet을 사용하고 있다.(무려 5년이나 된 자료이다.) 아직까지 이걸 사용하고 있는 이유는 더 좋은 계산식을 찾는 것도 힘들뿐더러 데이터 특성마다 적절한 메모리, 코어 분배수는 달라지기에 차라리 ETL을 진행하면서 Ganglia로 모니터링 후 조금씩 튜닝하는 게 시간적으로 효율이 더 좋다는 생각.(대충 귀찮다는 뜻) 사용법 1. 노드, 코어수, 메모리 등 자원 입력 1. 하단에 Clsuter Mode와 Client Mode 중 본인이 사용하는 모드를 클릭. 나는 클러스터 모드를 사용한다. 2. 좌측 초록색 셀에 슬레이브 노드수, 노드당 메모리, 노드당 코어수를 적는다 3. .. 2021. 3. 9.
AWS EMR에서 매번 같은 버전의 아나콘다 사용하기 AWS EMR을 통해 ETL을 매번 작업하다 보면 콘다 버전이 꼬이는 경우가 있는데 그럴 경우 아나콘다 설치 파일을 s3에 저장해놓고 EMR 실행 시 부트스트랩 코드를 통해 설치해주면 된다. 내가 주로 쓰는 부트스트랩 코드는 다음 두가지다. #!/bin/bash # echo "Updating Anaconda (findspark, boto3)..." >> ~/install.log; echo `date` >> ~/install.log #/mnt/anaconda/bin/conda install -c pyspark -y /mnt/anaconda/bin/conda install -c conda-forge findspark -y /mnt/anaconda/bin/conda install libgcc=5.2.0 -y .. 2021. 3. 9.
VAR(Vector Auto Regression)을 이용한 다변량 시계열 분석 및 예측 너무나 당연한 이야기이지만 일변량 시계열 데이터는 단일 시간 종속 변수만 포함하고, 다변량 시계열 데이터는 다중 시간 종속 변수로 구성된다. 다변량 분석에서 예측할 변수의 과거의 데이터를 고려해야할 뿐만 아니라 여러 변수들 사이의 의존성을 고려해야 한다. 다변량 시계열 모델은 특정 주어진 데이터에 대해 더 신뢰성 있고 정확한 예측을 제공하기 위해 의존성을 이용해야 한다. 이번 글에서는 실제 데이터셋에 VAR(Vector Auto Regression)이라는 다변량 시계열 모델을 다뤄보자. 혼자 공부하고 이해할 때는 영어 그 자체로 충분했던 것들이 글을 쓰기 시작하면서 어떻게 한글로 써야 할까? 라는 의문이 들어서 중요한 용어들만 집고 넘어가고, 애매한 것들은 영어 원문으로 쓰기로 했다. univaritat.. 2020. 9. 26.
시계열 예측을 지도 학습으로 바꾸는 방법 - Time Series to Supervised Learning with Sliding window 슬라이딩 윈도우를 통해 시계열 데이터를 지도학습으로 변형하기 시계열 데이터 예측(Time series forecasting)은 지도 학습(Supervised learning)으로 변형시킬 수 있다. 이번 글에서는 시계열 문제를 시계열 문제를 머신러닝을 위한 지도 학습으로 어떻게 재구성하는지에 다뤄보고자 한다. 이번 글에서 다룰 내용은 다음과 같다. Supervised Learning(지도 학습)은 무엇이고 그것이 어떻게 모든 예측 모델링 머신러닝의 기초가 되는지. 시계열 데이터 집합을 구성하기 위한 슬라이딩 윈도우(Sliding window)를 사용하는 방법 다변량 데이터(multivariate data) 및 다단계 예측(multi-step forecasting)에 슬라이딩 윈도우를 적용하는 방법 자, .. 2020. 9. 11.
Apache Spark 3.0 변경점/변화 총 정리 Apache Spark 3.0에서 바뀐 기능 정리 기능, ANSI SQL Compliance, Store Assignment 정책, query semantics 업데이트 등 Apache Spark 3.0이 배포된지는 몇 달이 되었는데, 최근에 ETL 작업을 하지 않아서 따로 챙겨보진 못했다. 이번 업데이트에서는 Spark SQL에서 눈여겨 볼만한 기능들이 많이 추가된 것 같다. 특히 Spark SQL 개발자들에게 유용한 기능들이 많이 추가되었다. 사용할 일이 생겼으니, 주요한 변화를 정리를 해보자. ANSI SQL Compliant Feature 일부 예약된 키워드를 식별자로 사용할 수 없게 된다. select * from some_table create where create.some_column = .. 2020. 9. 10.
불균형 클래스 분류(Imbalanced Classification)를 위한 4가지 방법 머신러닝으로 불균형 데이터를 분류하는 대부분의 예시는 이항 클래스 분류에 초점을 맞추고 있다. 그래서 이번엔 다중 클래스 불균형 데이터(Multi-class imbalanced data)를 처리하는 포스팅을 기록해보고자 한다. 이번 포스팅에서 다뤄볼 분균형 데이터 처리 방법은 다음 네 가지이다. Under Sampling | 언더 샘플링 Simple Over Sampling | 단순 오버 샘플링 Algorithm Over Sampling | 알고리즘을 통한 오버샘플링(SMOTE, ADASYN) Cost-sensitive learning | 뭐라고 번역하지 시작해보자. 개발환경 Python 3.6.11 imblearn 0.7.0 Glass Multi Class Classification Dataset 이 .. 2020. 9. 4.
Fastai - X-ray 폐렴 검출 CNN 10분 컷 FastAi 딥러닝 라이브러리를 이용해 이미지 분류해보기 Fastai는 내가 tensorflow 이후 두 번째로 접했었던 딥러닝 라이브러리이다. 직장 동료로부터 이걸 소개받고는 적잖이 충격을 받았었는데, 너~무나도 간편했기 때문이다. 그동안 텐서플로로 삽질하면서 코딩을 했던 내게는 큰 신세계로 다가왔다. Fastai는 PyTorch를 기반으로 한 라이브러리이다. 엄청 간단하고, 여기저기 우수한 튜토리얼 코드들이 많아서 일반인들도 천천히 따라온다면 AI 모델링을 단 몇 시간 안에 할 수 있을 정도로 간편하다. 실제로 코드 몇 줄만으로 모델을 만들 수 있다. 신경망의 각 부분에 대해서 학습 속도를 다르게 설정할 수도 있고, 대충 돌려보는 개인 사용자들을 위해서 transfer learning도 간편하게 제공.. 2020. 9. 2.
Python Prophet - 자동차 판매량 시계열 데이터 예측하기(Time Series Forecasting) 이번 글에서는 시계열 예측을 위해 Facebook의 Prophet 라이브러리를 알아보자. 시계열 예측은 사용할 수 있는 방법들이 다양하고 각각의 방법마다 하이퍼 파라미터들이 매우 다양하기 때문에 어려울 수도 있다. Prophet 라이브러리는 일변량 시계열 데이터셋(univariate time series datasets)을 예측하기 위해 설계된 오픈소스 라이브러리이다. 기본 적으로 추세나 계절적 구조를 가진 데이터에 대해 모델에 적합한 하이퍼 파라미터들을 자동으로 찾을 수 있도록 설계되었고 사용하기 쉽다. 이번 글에서는 다룰 내용은 다음과 같다. Prophet의 전반적인 이해 Prophet 모델의 학습 방법, 입출력 형태 Prophet 모델을 평가하는 방법 이제 시작해보자. Prophet Forecast.. 2020. 8. 28.
kaggle 주택 가격 예측(5) - Stacking과 Blending으로 등수 올리기(상위 6%) 저번 글에는 몇몇 ensemble 모델을 조합해서 상위 13%에 랭크해보았다. 이번 글에서는 모델 stacking과 blending을 이용하여 상위 10% 이내에 랭크해보자. prediction with stacking models¶ 임포팅, 데이터 로딩 In [1]: # Imports import pandas as pd import numpy as np from sklearn.model_selection import cross_val_score, train_test_split, KFold from sklearn.preprocessing import StandardScaler, RobustScaler from sklearn.metrics import mean_squared_error, make_score.. 2020. 8. 24.
kaggle 주택 가격 예측(4) - 모델 앙상블으로 등수 올리기(상위 13%) 저번 글에는 regression 4종으로 예측해보고, 결과가 가장나은 ElasticNet의 결과로 제출 해보았다. 이번글에는 조금더 핫하고 자주쓰이는 모델 중 LightGBM, XGBoost, GradientBoost 그리고 꼽사리로 RandomForest와 앙상블 기법으로 등수를 올려보자. prediction with ensemble algorithms¶ 임포팅, 데이터 로딩 In [1]: # Imports import pandas as pd import numpy as np from sklearn.model_selection import cross_val_score, train_test_split, KFold from sklearn.preprocessing import StandardScaler, R.. 2020. 8. 21.
kaggle 주택 가격 예측(3) - 간단한 regression으로 예측하기(상위 30%) 저번 글에는 데이터를 전처리하고 저장했었다면 이번 글에서는 전처리 데이터로 학습하고 kaggle에 제출해 볼 예정이다. 복잡한 알고리즘 이전에 간단한 머신러닝으로 돌린 성능을 확인하기 위해, 이번 글에서는 우선 Linear regression, ridge regression, rasso regression, elasticnet 네 가지로 실습을 해보자. 그나저나 노트북을 그대로 옮겨오면 사이즈 때문에 별로 예쁘지도 않고, 작성 후 재수정시, html구조가 깨져 노트북 테마가 다 사라져 버린다. 다른 방법을 강구해봐야겠다. 4 kinds of regression¶ In [1]: # Imports import pandas as pd import numpy as np from sklearn.model_sele.. 2020. 8. 20.