본문 바로가기

분류 전체보기56

Data Scientist를 위한 TOP 4 파이썬 가상환경 비교 어떤 파이썬 가상 환경이 나에게 알맞을까? 가상 환경은 신입 프로그래머들에게 비교적 이해하기 어려운 내용이다. 초짜 시절 가상 환경을 사용하면서 내가 이해한 것은 고작 MacOS나 Windows에서 내 환경이 존재하고 PyCharm을 사용하며, 실행하면 코드가 잘 실행된다는 것뿐이었다. 그러던 도중 데이터 과학이나 머신러닝 엔지니어로서의 경력을 쌓게 되면서, 파이썬 프로젝트 진행 간 눈물 나는 의존성 문제를 종종 겪었고, 아마추어로서 여러 가지 상황을 부닥치며 가상 환경에 대해 깊이 학습하게 되었다. 이런 잡다구리 한 것들을 알아내는데 생각보다 시간이 오래 걸렸다. 이러한 시행착오를 바탕으로 각각의 가상환경의 특성에 대해 조금이나마 이해하게 되었다. 이번 글에서는 가장 흔한 4가지 가상 환경과 언제/왜 .. 2020. 8. 18.
kaggle 주택 가격 예측(2) - Data preprocess / Feature engineering 저번 글에는 데이터를 탐구하기만 했다면, 이번 글에는 탐구했던 내용들을 바탕으로 데이터를 전처리하고 추가적인 feature들을 생성해보자. 이번 글을 다 읽고 나면 머신러닝에서 Feature들이 어떻게 뻥튀기되고, 버려지기도 하며, 역 추산되는지 알게 될 것이다. House Prices: Advanced Regression Techniques Predict sales prices and practice feature engineering, RFs, and gradient boosting www.kaggle.com kaggle 주택 가격 예측(1) - 포괄적인 데이터 탐색 분석 / EDA xgboost를 활용한 실전 실습을 무엇으로 해볼까 kaggle을 구경하다가 많은 사람들의 튜토리얼 compete으로 .. 2020. 8. 17.
누락 데이터(Missing value)를 처리하는 7가지 방법 / Data Imputation 누락 데이터를 통계적으로 처리하는 유명한 방법들 실세계 데이터는 다양한 원인 때문에 누락 데이터를 포함하고 있다. 데이터에서 None, NaN, 빈칸으로 표시되는 것들이 누락 데이터이다. 이러한 누락된 값이 많은 데이터셋으로 머신러닝 모델을 학습시키면 모델의 품질에 큰 영향을 미친다. Scikit-learn Estimator 같은 일부 알고리즘은 모든 값이 의미 있는 값을 가지고 있다고 가정하기 때문이다. Missing value는 다음과 같은 3가지 타입이 있다. Missing completely at random (MCAR) Missing at random (MAR) Not missing at random (NMAR) 이 글에서는 cross-sectional 데이터셋의 missing value를 처리.. 2020. 8. 14.
비대칭(skewed) 데이터를 처리하는 3가지 방법 / Skewed Data 실세계의 데이터는 복잡하다. 완벽하지도 않다. 그렇기 때문에 일부 학습 데이터셋은 모델링에 사용되기 전에 전처리가 필요하다. Linear regression 모델을 예로 들어 보자. Linearity : 선형성. 예측 변수와 목표 변수 간의 관계가 선형이라고 가정한다. No noise : 특이치(outlier)가 없어야 한다. No collinearity : 상관관계가 높은 예측 변수가 있는 경우 과적합(overfit)이 될 가능성이 높다. Normal distribution : 예측 변수와 목표 변수가 정규 분포를 따를 때 더 신뢰할 수 있는 예측이 이루어진다. Scale : 거리 기반의 알고리즘이므로 표준 scaler처럼 모델을 스케일링해야 한다. 오늘은 네 번째 요점에 초점을 맞추고자 한다. 예측 .. 2020. 8. 13.
Skew(왜도) 와 Kurtosis(첨도) - 데이터 과학에서 알아야 할 두가지 중요한 통계 용어 오늘은 Skew와 Kurtosis, 즉 왜도와 첨도에 대해서 알아보자. Skewness / 왜도 symmetrical bell curve 혹은 normal distribution에서 왜곡 정도를 말한다. 데이터 분포의 대칭성이 얼마나 결핍되었는지를 측정한다. 완전히 대칭인 분포는 skewness가 0이다. 두 가지 종류의 Skewness가 있다. Positive와 Negative Positive Skewness는 오른쪽 꼬리가 왼쪽보다 더 길 때를 의미한다. 평균(Mean)과 중위수(Median)가 Mode보다 크다. Negative Skewness 왼쪽 꼬리가 오른쪽보다 더 길 때를 의미한다. 평균(Mean)과 중위수(Median)가 Mode보다 작다. 그래서, 언제 Skewness(왜도)가 과도하게 .. 2020. 8. 12.
데이터 과학자가 꼭 알아야 할 5분 통계학 왜도와 첨도의 개념을 정리하려고 했는데, 그전에 좋은 글을 한 가지 발견해서 정리해놓고자 한다. “Facts are stubborn things, but statistics are pliable.”― Mark Twain 데이터 과학자들의 목표는 표본에 대한 결론을 도출하는 것이 아니라 제공된 샘플에서 모집단에 대한 결론을 도출하는 것이다. 따라서 데이터 과학자들은 표본에 대한 통계를 사용하여 모집단의 값에 대해 유추해야 한다. 모집단의 이러한 값을 모수라고 한다. 모수는 모집단 평균과 중위수와 같이 전체 모집단의 알 수 없는 특성이다. 표본 통계량은 표본으로 추출되는 모집단의 일부 특성을 설명한다. 표본 평균(mean)과 중위수(median)는 고정값이다. Sampling Error / 표본 오차 예를 .. 2020. 8. 11.
kaggle 주택 가격 예측(1) - 포괄적인 데이터 탐색 분석 / EDA xgboost를 활용한 실전 실습을 무엇으로 해볼까 kaggle을 구경하다가 많은 사람들의 튜토리얼 compete으로 이용되고 있는 주택 가격 예측으로 진행하기로 결정했다. House Prices: Advanced Regression Techniques Predict sales prices and practice feature engineering, RFs, and gradient boosting www.kaggle.com 우선 머신러닝이나 딥러닝을 시작하기 전에는 학습과 예측할 데이터 분석부터 시작해야 한다. 처음부터 모든 데이터 분석을 내가 하면 좋겠지만, 정석으로 불려도 좋을 만큼 좋은 예시가 kaggle에 있기에 몇몇 노트북을 따라 하는 것으로 대체한다. 이번 글에서는 번역한 수준으로 해당 노트북.. 2020. 8. 10.
OpenMP(2) - 입문자용 주요 사용법 간단한 설명/정리(omp single, master, task, taskwait, barrier) 저번 글에 이어서 몇 가지 더 사용법 정리. 사용법 1. omp single #pragma omp single // 하나의 thread만 실행한다. 다른 thread는 기다린다. #pragma omp single nowait // 하나의 thread만 실행한다. 다른 thread는 기다리지 않는다. 하나의 쓰레드만 동작하게 한다. 초기화나 출력부처럼 병렬 처리가 필요 없는 부분에서 용이하다. 2. omp master #pragma omp master // master thread만 실행한다. 다른 thread는 기다리지 않고 넘어간다. single과 매우 유사하지만 master thread 하나만 동작한다. 또한, 다른 쓰레드는 기다리지 않고 다음 부분을 실행한다. 3. omp task #pragma o.. 2020. 7. 31.
gdb - 간단한 명령어/사용법/단축어 정리(cheat sheet) GDB를 이용해 간간히 디버깅 하긴 했지만, 자주 사용하지 않아서 익숙하지 않았다. 앞으로 사용할 때마다 검색시간을 줄이기 위해 내가 사용하는/했던 gdb 명령어를 정리해놓기로 했다. 명령어를 정리하다가 마스코트를 찾아보았는데, gdb 마스코트는 위 그림의 금붕어이고, 이유를 찾아보니 벌레(버그)를 잡아먹고 물을 쏘아 벌레를 죽인다나 뭐라나.. 아무튼 그렇다고 한다. 급한 분들을 위한 cheat sheet 사전 조건 컴파일 시 -g 옵션을 주어야 함. GDB 실행 디버깅하기 위해 가장 먼저 해야 할 것은 해당 프로세스를 대상으로 gdb를 실행해야 한다. 여기서부터 설명되는 명령어는 대부분 단축어가 있다. 단축이 되는 글자를 파란색으로 표시하겠다. 중단점 설정/확인/해제 break : 중단점을 설정한다. .. 2020. 7. 30.
OpenMP(1) - 입문자용 주요 사용법 간단한 설명/정리(omp parallel, for, atomic,critical) 매일 GPU나 분산 컴퓨팅으로 병렬 처리만 하다가, 오랜만에 단일 cpu환경에서 thread로 병렬 처리를 해야 할 일이 생겼다. 학습하는 김에 주요 사용법을 정리해보고자 한다. 개발 환경 C/C++ OpenMP 5.0 API 사용법 1. omp parallel 기본 사용법 #pragma omp parallel //병렬 처리 할 한줄 #pragma omp parallel { /* 병렬 처리 할 여러줄 */ } 다음 한 줄이나 다음에 오는 중괄호에 묶인 구문을 병렬로 실행한다. thread 수만큼 실행된다. 옵션 #pragma omp parallel if(condition) #pragma omp parallel num_threads(n) #pragma omp parallel private(a) #pragm.. 2020. 7. 24.
Docker (4) - 3줄로 간단히 머신러닝/딥러닝 환경 구축하기(docker kaggle image 설치/활용하기) 이번 글은 내가 도커를 학습한 이유이다. 환경이 바뀔 때마다 매번 ML/DL 환경을 구축하는 게 귀찮았고, 타 개발자들이랑 서버를 섞어 쓰다 보면 내 의지가 아니더라도 환경이 꼬이는 경우가 있다. 그런 상황들이 싫어서 docker를 활용하고자 했고, 예상보다 훨씬 간편하게 환경 구축을 할 수 있어서 놀랐다. 이번 글은 내가 진행한 3줄짜리 환경 구축과 간단한 활용까지 진행해 볼 예정이다. 개발환경 Docker가 설치된 리눅스 환경(설치가이드) 왜 Kaggle 이미지를 사용하는가? Kaggle-kernel 전용 대회에서 머신러닝을 진행하고 싶다면 단순히 이미지를 rebuild 함으로써 최신 상태로 유지할 수 있다. GPU 지원이 빵빵하다. XGBoost 등 유명 Boosting 계열의 패키지를 지원한다. .. 2020. 7. 20.
Docker (3) - 기본 명령어 Cheat sheet(설치/삭제/실행 등) 이제 설치를 완료했으니 기본 명령어를 익혀보자. 명령어는 이미지에 관한 명령어, 컨테이너에 관한 명령어 두 가지로 나누어 설명할 예정이다. 이미지와 컨테이너의 차이는 이미지가 실행되면 컨테이너가 된다고 보면 된다(정확한 건 아니지만 프로그램과 프로세스의 차이 정도로 이해하면 된다.) 자세한 내용은 아래 글을 참고하자. [DevOps/Docker] - Docker (1) - Docker란 무엇인가? 이미지 관련 명령어 이미지 목록 확인 sudo docker images 이미지 검색 처음에 굳이 검색할 필요가 있나?라고 생각을 했는데, 설치된 이미지가 아니라 docker hub에 공개된 이미지들을 검색하는 것이다. sudo docker search 이미지 받기 sudo docker pull 이미지 삭제 su.. 2020. 7. 20.