데이터사이언스
[Tensorflow] Multi GPU 사용하기 (gpu 병렬처리)
데이터의 용량이 큰 경우, 가용할 수 있는 GPU가 여러 개인 경우, 더 효율적으로 모델을 학습할 수 있는 방법이 있습니다. 단일 GPU가 아닌 여러 개의 GPU를 활용하여 분산전략을 수행한다면, 더 빠르게 모델을 학습시킬 수 있습니다. (물론 너무 적은 데이터의 경우 데이터를 분할하는 시간이 더 오래걸리기 때문에, 그러한 경우에는 단일 GPU를 사용하면 됩니다) GPU병렬 처리에는 다양한 방법이 존재하는데요. 간단한 소개와 함께 대표적인 방법 코드를 통해 확인해보겠습니다. 방법1. MirroredStrategy TensorFlow에서 여러 gpu를 활용한 학습에 추천하는 방법입니다. 사전에 설정된 & 사용 가능한 모든 GPU자원을 동시에 활용을 하는 방법을 채택하는데요. 이때 입력 데이터는 병렬적으로 ..
[Zeppelin] M1 맥에서 로컬에 제플린 설치하는 방법
Zeppelin은 크게 두가지 방법으로 설치할 수 있습니다. 1. 로컬 머신 설치 2. 도커 이미지를 활용한 설치 본 포스팅에서는 로컬 머신 설치에 대해 다뤄보도록 하겠습니다. 우선 아파치 제플린 다운로드 페이지로 접속합니다. 저는 Spark 3.3.2 버전을 사용하고 있는데요. 호환성을 확인한 뒤 환경에 맞는 zeppelin을 설치하면 됩니다. 저는 0.10.0 버전을 설치했습니다. 설치하고자 하는 zeppelin 버전을 정했다면, 해당 파일을 눌러 다운로드 사이트로 들어가줍니다. 위 버튼을 클릭하면 해당 버전을 다운로드 할 수 있는 사이트가 나오는데요. 빨간 밑줄이 쳐진 url을 복사합니다. 이제 터미널로 들어가서 적당한 경로로 접속하여 아래의 커맨드를 이용해 다운받겠습니다. wget https://..
[M1 맥] 스파크 설치하기 (Spark)
스파크 설치에 앞서 하둡(Hadoop) 설치와 자바(JAVA) 설치를 선행하시는 것을 추천드립니다. M1 맥북에 Hadoop 설치하기 M1 맥북에 Java 설치하기 스파크 설치 스파크 설치 시, 본인 로컬 환경에 설치되어 있는 하둡 버전을 고려하여 설치하는 것을 추천드립니다. 따라서 brew를 통한 설치 또는 묻지마 설치 보다는, 버전을 체크하고 설치를 진행하는 것이 좋습니다. 1. Apache Spark 웹사이트 이동 그렇게 하기 위해서 아파치(apache) 웹사이트로 접속하겠습니다. https://spark.apache.org/downloads.html Downloads | Apache Spark Download Apache Spark™ Choose a Spark release: Choose a pa..
[Spark] 아파치 스파크 - 3가지 핵심요소 (통합, 컴퓨팅엔진, 라이브러리)
[ 본 페이지는 스파크 완벽 가이드 (Spark - the Definitive Guide) 책을 토대로 작성되었습니다 ] 막연하게 스파크(Spark)를 처음 공부하면, 당최 이 스파크라는 친구가 '뭐하는 녀석일까?' 라는 생각에 잠길 수 있습니다. 데이터를 저장하고, SQL도 사용하고, 파이썬 연동도 되고... 물론 숙련된(?) 데이터 엔지니어나 학습자 같은 경우에는 아니겠지만, 처음 빅데이터 세계에 입문했다면 스파크를 DBMS와의 차이점을 찾아내기가 쉽지 않을수도 있습니다. 책의 내용을 빌려 스파크를 설명하자면 스파크는 '빅데이터를 위한 통합 컴퓨팅 엔진과 라이브러리 집합' 입니다. 그렇다면 스파크가 어떻게 기존 DBMS와 다르고, 또 다른 빅데이터 플랫폼인 하둡과는 또 어떻게 다른지 핵심 3요소를 살..
[Colab] 구글 코랩에서 Kaggle 데이터 구글드라이브에 다운로드
데이터 분석 시, 개인 리소스를 사용하다보면 컴퓨터 과열 현상 + 병렬 처리로 인한 멀티태스킹 속도 저하 등이 문제가 될 수도 있습니다. 특히, 백그라운드에서 gpu를 열심히 사용하면서 다른 작업을 하고 있자니 불편함을 겪었을 분들이 많았으리라 생각합니다. 이때 구글 코랩을 사용한다면, 이러한 불편함을 어느정도 피할 수 있게 되는데요. 문제는 대용량 데이터셋을 "어떻게 구글 드라이브에 올리느냐?" 입니다. 가장 간단한 예로 캐글의 딥러닝 고전 경연대회 Dogs vs Cats 분류 문제를 살펴보겠습니다. 데이터 자체는 크지 않습니다. 압축파일 853MB 정도 되는데요. 압축 해제 후, 구글 드라이브에 드래그 앤 드롭으로 올린다면 5시간이 넘게 걸릴 수도 있습니다. 하지만 Colab에서 직접 Kaggle A..
[불균형 데이터] 평가지표 (Metrics)
불균형 데이터에 대처하는 방법은 다양합니다. 오버샘플링 & 리샘플링과 같은 Resampling 기법을 활용한다던가, Cost Matrix를 만들어서 분류 모델에 클래스별 가중치를 부여하는 방법도 있습니다. 위 기법도 중요하지만, 무엇보다도 중요한 것은 "어떻게 불균형 데이터를 평가할 것인가?"입니다. (수식과 혼동행렬은 곧 업데이트 하겠습니다) Accuracy 정확도(Accuracy)를 사용하기에는 너무 편향된 결과를 야기할 수 있습니다. 예를 들어보겠습니다. 암 환자에 대해서 검사를 한다고 했을 때, 데이터 내 실제 암 환자는 1명이고, 정상인 환자가 99명 있다고 가정하겠습니다. 우리는 모든 데이터를 음성(정상)이라고 예측하면 모델의 정확도는 99/100, 즉 99%가 됩니다. 이렇게만 본다면 매우 ..
[변수 중요도] Feature Importance와 Permutation Importance
머신러닝/딥러닝 모델을 해석하는 방법과 시도가 점점 늘어나고 있다. 변수간의 인과관계를 알려주진 않지만, "어떤 변수가 가장 큰 변화를 만들어냈는지", "특정 변수가 결과에 긍정/부정적인 영향을 끼쳤는지" 등과 같은 결과에 대한 이유에 대해서 해석할 수 있는 방법은 다양한 기법을 통해 알 수 있다. 이번 포스팅에는 그중에서도 Feature Importance와 Permutation Importance에 대해 알아보고자 한다. Feature Importance Feature Importance는 일반적으로 Random Forest와 같은 트리 계열의 앙상블 모델을 사용하면 쉽게 얻을 수 있다. 단순 해석하면 '변수(특징) 중요도' 정도로 해석할 수 있는데, 매커니즘 자체는 불순도를 감소시키는 정보 증가량에..
고윳값과 고유벡터
고윳값, 고유벡터는 데이터 분석 분야에 다양하게 활용된다. 특히 다변량(변수가 많이 존재하는) 경우에서 활용가치가 무궁무진하다고 할 수 있다. 이는 바로 ‘데이터의 좋은 성질을 공유하고, 이 좋은 성질을 최대한 보존한 채로 행렬을 단순화 할 수 있는 방법’을 공유할 수 있기 때문이다 [ 고윳값, 고유벡터, 고윳값 분해 ]에 대해서 본격적으로 알아보기 위해서라면 행렬대수의 기본적인 공부를 선행할 필요가 있다. (역행렬, 가역행렬, 일차독립, 행렬연산 등등..) 임의의 행렬 A와 임의의 행렬 B가 어떤 경우에 ‘닮은 행렬’이 되는지에 대해서도 이해할 필요가 있으며, 닮은 행렬이 되었을 경우 두 행렬의 행렬식이 같고, 대각합(trace)이 똑같음을 직관적으로 이해할 수 있어야 한다. ‘닮은 행렬’을 이해했다면..