반응형

Colab 사용 시 기본적으로 약 12GB의 램을 제공합니다. 충분하다면 충분한 용량이지만 부족하다면 턱없이 부족합니다. 그렇다면 어떻게 램을 증가시킬까요?

 

위의 사진처럼 list를 만든 후 for문을 통해 문장을 붙이며 ram을 최대치까지 증가시킵니다. 

 

위의 코드와 똑같이 입력하시면 약50% 진행 후 램이 초과되며, 아래와 같은 메세지가 나타납니다.

 

"고용량 RAM 런터임으로 전환하시겠습니까?"의 메세지에 예를 누르면

 

Colab의 RAM이 약 25GB로... 어?!

 

RAM이 35GB로 증가하였습니다. 얼마전까지 25GB로 기억하는데 역시 갓lab........... 잘쓰겠습니다.

반응형
반응형

김태관(Kim tae gwan)

email : hushme1545@gmail.com

github : https://github.com/ph1545 

 

2017.06 ~ 2017.09

빅데이터청년인재 교육

 

2017.07 ~ 2017.08

빅콘테스트(연체예측 모델 개발) - 본선진출

 

2018.08

국민대학교 빅데이터경영통계학과 졸업

 

2019.02 ~ 2019.04

kaggle - Santander Customer Transaction Prediction (680th / 8802)

 

2019.04 ~ 2019.06

kaggle - Instant Gratification (95th / 1832)

 

2019.07 ~ 2019.09

kaggle - APTOS 2019 Blindness Detection (171th / 2943)

 

2020.02 ~ 2020.03

DACON - 천체유형분류 (3th / 650)

 

2019.11 ~ 2022.03

솔트룩스 데이터분석

 

2022.03 ~ 현재

아프리카티비 DWBI 엔지니어

반응형
반응형

먼저 파이썬이 설치되어 있다고 가정하고 jupyter notebook 실행해보겠습니다.

 

1. 우선 Anaconda에 접속하여 파이썬 버전과 컴퓨터 사양에 맞는 설치파일의 링크주소를 복사.

2. wget 으로 실행.

3. 실행파일 실행 // y/n이 나오면 y을 입력.

4. conda 버전확인.

5. conda 업데이트.

6. Jupyter notebook 실행.

[root@localhost ~]# wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
[root@localhost ~]# sh Anaconda3-2019.10-Linux-x86_64.sh
[root@localhost ~]# conda -V
[root@localhost ~]# conda update conda
[root@localhost ~]# jupyter notebook --allow-root

 

 

반응형
반응형

리눅스 2일차 첫 난관에 빠졌습니다. 우여곡절 끝에 파이썬3를 설치하고 나니 yum명령어 등 대부분의 명령어가

-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: 허가 거부 표시와 함께 작동하지 않았습니다.

-bash : /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory 와는 다른 문제입니다.

 

CentOS는 /usr/bin/python이 기존에 내장되있는 파이썬 버전과 연결되는 것을 요구합니다. 다른 버전일 경우 위와 같은 오류가 발생한다고 합니다. 저의 경우 Python3.7.5를 /usr/bin/python과 심볼릭링크로 연결하여 발생한 것 같습니다.

 

그럼 해결방법을 알아보겠습니다.  아래 명령어어 와같이 /usr/bin/python 의 심볼릭링크를 지워주고 기존의 파이썬 버전인 2.7과연결해주면 yum의 명령어들이 다시 작동합니다.

[root@localhost ~]# rm -rf /usr/bin/python

[root@localhost ~]# ln -s /usr/bin/python2.7 /usr/bin/python

 

 

반응형
반응형

모집단 : 통계조사의 관심이 되는 대상

모수 : 모집단의 특성을 나타내는 수치

표본 : 모집단에서 선정된 샘플

통계량 : 표본의 특성을 나타내는 수치 예) 표본평균, 표본분산, 표본표준편차

 

표본공간 : 실험에서 나올 수 있는 모든 결과들의 집합

확률변수 : 표본공간에 속하는 결과들에 대해 실수값을 대응시키는 함수

이산확률변수 : 확률변수가 가지는 값을 지칭할 수 있는 확률변수

연속확률변수 : 확률변수가 가지는 값을 지칭할 수 없는 확률변수

확률분포 :  확률변수가 특정한 값을 가질 확률을 나타내는 규칙

 

베르누이시행 : 1 각 시행은 독립적이다. 2 각 시행은 두가지의 결과를 가진다. 3 각 시행의 성공확률은 p이다.

이항분포 : 성공확률이 p인 베르누이 시행을 n번 시행한 경우 확률변수X의 확률분포가 따르는 분포

정규분포 : 대표적인 연속확률분포, 좌우대칭이 종모양인 곡선, 가우스분포라고도 한다.

표준정규분포 : 정규분포 중 평균이0이고 분산이1인 정규분포

표준화변환 : 확률변수들의 평균을 0 분산을1인 확률변수로 변환하는 방법

이항분포의 정규근사 : 이항분포의 np나 n(1-p)가 모두 10이상이면 정규분포에 근사하게된다

 

표집분포 : 통계량 자체가 하나의 확률변수로서 확률분포를 가지고 이 확률분포를 표집분포라 한다.

확률표본 : 모집단으로부터 임의 추출된 n개의 표본은 서로 독립이며 모집단의 분포와 비슷하고 이러한 n개의 표본을 확률표본이라 부른다.

중심극한정리 :확률표본이 30이상이면 확률표본의 표본평균은 근사적으로 정규분포를 따른다.

 

추정 : 모수의 대한 추측값을 얻고, 그 값의 정밀도를 구하는 방법

점추정 : 모수의 참값과 유사할 것이라는 하나의 값을 추정

구간추정: 모수의 참값을 포함할 것으로 예상되는 구간을 추정

 

 

 

반응형

'통계' 카테고리의 다른 글

ARI(Adjusted Rand index)  (2) 2020.05.08
Rand index란?  (2) 2020.05.08
통계에서 사용되는 bootstrap의 의미는 무엇인가요  (0) 2019.11.15
ROC curve?  (0) 2019.11.09
혼돈행렬(confusion matrix)에 대해 알아보자  (2) 2019.11.07
반응형

ML에서의 Bootstrap

부트스트랩이라는 단어는 머신러닝에서 랜덤포레스트를 구축할 때 많이 들어봤습니다. 랜덤포레스트는 배깅 앙상블을 사용하며 배깅의 정확한 명칭은 Bootstrap aggregating입니다. 랜덤포레스트는 무작위의 트리를 생성하여 앙상블하는 방법을 사용하는데 각각의 트리를 만들기 위해 먼저 데이터의 부트스트랩 샘플을 생성합니다. 다시 말해 n개의 데이터 포인트에서 무작위로 n개의 샘플을 반복 추출합니다(한 샘플이 중복 추출될 수 있습니다). 추출 후 여러개의 트리를 만든 후 예측들을 평균하여 최종 예측을 만듭니다. 이것이 ML에서 사용하는 부트스트랩입니다. 그렇다면 통계에서 사용되는 부트스트랩의 의미는 무엇일까요?

 

통계에서의 Bootstrap

https://uc-r.github.io/bootstrapping

통계에서 사용되는 부트스트랩은 ML에서 사용되는 방법과 비슷합니다. 그렇다면 왜 부트스트랩을 사용할까요? 예를 들어 한국남자의 평균몸무게를 알고싶다고 할 떄 모든사람의 몸무게를 측정할 수 없으니 일부(N명)를 표본추출해 측정합니다. 여기서 우리는 단일표본(N)의 평균을 얻을 수 있습니다. 그렇다면 이 평균이 한국남자의 평균몸무게를 대표할 수 있을까요? 물론 단일표본의 크기가 전체한국남자와 비슷하다면 그럴 수 있지만, 대부분의 경우는 그럴 수 없습니다. 이 때 부트스트랩을 사용합니다. 

 

5명의 남자의 몸무게가 있습니다. [70kg, 75kg, 77kg, 90kg, 105kg] 여기서 부트스트랩을 사용해 3개의 표본을 만들면 아래와 같이 만들어집니다. 부트스트랩은 랜덤 샘플링(중복추출가능)을 통해 추출합니다.

1. [70kg, 70kg, 70kg, 90kg, 105kg] 

2. [75kg, 77kg, 90kg, 105kg, 105kg] 

3. [90kg, 90kg, 90kg, 105kg, 105kg] 

 

그런 다음 모든 부트스트랩 된 데이터 세트를 사용하여 원하는 통계량의 표준 오차 및 신뢰구간을 계산할 수 있습니다.

 

 

반응형

'통계' 카테고리의 다른 글

Rand index란?  (2) 2020.05.08
통계개념  (0) 2019.11.18
ROC curve?  (0) 2019.11.09
혼돈행렬(confusion matrix)에 대해 알아보자  (2) 2019.11.07
가설검정 그리고 귀무가설과 대립가설은 무엇인가?  (0) 2019.10.18
반응형

receiver operating characteristic curve(수신자 조작 특성 곡선)에 대해 알아보겠습니다. 줄여서 ROC curve라고 부르겠습니다. ROC curve는 kaggle대회에서 자주 보이는 평가지표이며 이번 Santander대회의 평가지표였습니다.

 

ROC curve를 이해하기 위해 먼저 혼돈행렬에 개념을 모르는 분들은 혼돈행렬을 읽고 오시면 좋겠습니다.

 

정밀도(precision)

PRC= TP  / (TP + FP)

재현율(recall)

REC = TP / (TP + FN)

특이도(specificity)

SPC = TN / (TN + FP)

 

양성 예측을 많이 하게 되면 TP는 늘어날 수 있지만 FP 또한 증가할 수 있습니다. 정밀도와 특이도는 FP의 증가에 영향을 받습니다. 이상적으로는 TP는 증가하지만 FP는 감소하는 것입니다. 이를 확인하기 위한 그래프가 ROC curve입니다.

ROC 곡선의 Y축은 재현률(REC) 즉 TP의 비율(TPR)을 나타냅니다. X축은 1-특이도(SPC)를 나타냅니다. 1-특이도(SPC)는 FP의 비율(FPR)을 나타냅니다.

https://glassboxmedicine.com/2019/02/23/measuring-performance-auc-auroc/

예를들어 무작위로 50%를 양성이라고 가정해보겠습니다. 그렇다면 양성중에 50%는 양성이라 할 것이고 음성중에 50%는 양성이라고 할 것입니다. 그렇다면 TPR / FPR모두 0.5의 확률을 가질 것입니다.

 

무작위 예측의 경우 빨간색 선을 나타내며 예측이 잘 될수록 좌측 상단 처럼 볼록한 곡선을 형성합니다. ROC곡선을 하나의 수치로 나타낸 것이 AUC인데 보라색의 커브의 면적은 가로 세로 1이므로 1입니다. 빨간 점선의 면적은 0.5입니다. 

예측이 잘될 수록 ROC curve는 보라색에 가깝게 형성되며 AUC는 1에 가까운 수치가 나옵니다.

반응형
반응형

혼돈행렬에 대해 알아보겠습니다. 혼돈행렬을 통해 나오는 평가지표는 매우 많으며 대략적으로 알다보니 필요할 때 마다 찾아보게 되어 정리하게 되었습니다. 

 

분류 문제의 경우 값의 크기를 이해하기 위해 혼돈 행렬의 형태로 성능을 나타냅니다. 이항분류(class가 0 또는 1)의 경우 두 가지 클래스 중 중요한 클래스를 양성 다른 클래스를 음성이라고합니다. 양성이라 예측했을 때 양성일 경우는 TP( true positive), 음성이라 예측했을 때 음성일 경우는 TN(true negative)라고 합니다. 또 양성이라 예측했으나 실제로 음성일 경우 FP(false positive), 음성이라 예측했으나 실제로 양성일경우 FN(false negative)라고 합니다.

 

조금 쉽게 이해하자면 앞이 T로 시작하면 예측이 맞았고, F로 시작하면 예측이 틀렸다고 생각하면 됩니다. 뒤에 P는 예측을 양성으로 할 경우 N은 예측을 음성으로 예측할경우 입니다. 다시말해 예를 들어 FP일 경우 예측을1로 하였지만 1이 아니었고 실제는 0이었다 이렇게 이해하면 암기할 필요가 없습니다.

 

이렇게 4가지의 경우가 생기고 이들을 통해 다양한 지표를 표현할 수 있습니다. 4가지 모두 중요하지만 가장 중요한 하나를 선택하자면 어떤게 중요할까요? 저는 FN이라고 생각합니다. 복습하자면 실제로 음성이라 예측했지만 틀렸고 양성일 경우겠죠?

 

한명의 의사가 있고 암을 진단받으러 오는 환자가 있습니다. 앞서 분류의 경우 중요한 클래스를 양성(1)이라고 합니다. 암이 있을 경우를 1로 가정하겠죠? 암이 아니지만 암이라고 예측한경우(FP)와 암이지만 암이아니라고 예측한 경우(FN) 어떤 예측이 의사에게 치명적인 실수 일까요? 당연히 후자이겠죠?

예측 / 실제

Actual

1

Actual

0

predicted

1

TP(진양성) FP(위양성)

predicted

0

FN(위음성) TN(진음성)

이제 이4가지의 경우를 가지고 사용되는 지표에 대해 알아보겠습니다. 지표로는  정확도(accuracy), 정밀도(precision), 재현율(recall), 특이도(specificity)이 있습니다. 

 

정확도(accuracy)는 전체에서 TP와 TN이 차지하는 비율입니다. 단순히 전체에서 정확히 예측한 비율이라고 생각하면됩니다. 

ACC = (TP + TN) / (TP + TN + FP + FN)

 

정밀도(precision)은 양성으로 예측한 경우(TP + FP) 중에 실제 양성(TP)인 비율입니다. 정밀도가 낮을 경우 암이 아닌 사람에게 암이라고 했으니 불필요한 치료가 발생할 수 있습니다.

PRC= TP  / (TP + FP)

 

재현율(recall)은 실제 양성(TP + FN) 중에 양성을 양성이라고 맞춘(TP)인 비율입니다. 재현율이 낮을 경우 암인 사람에게 암이 아니라고 하였으니 심각한 결과를 초래할 것 입니다.

REC = TP / (TP + FN)

 

특이도(specificity)는 실제 음성(TN + FP) 중에 음성을 음성이라고 맞춘(TN) 비율입니다. 이경우도 불필요한 치료가 발생하겠죠?

SPC = TN / (TN + FP)

 

F1 score 정밀도와 재현율이 적절하게 요구 될 때 사용합니다. F1 score는 현재 캐글에서도 많이 사용되는 지표로써 정밀도와 재현율의 조화 평균입니다. 

F1 = (2*PRC * REC) / (PRC + REC)

왜 산술평균이 아닌 조화평균을 사용할까요? 분자가 같지만 분모가 다를경우 조화평균이 정확하기 때문입니다. 예를 들어 200km의 목적지가 있는데 중간까지 시속 100km 중간 이후부터 시속 50km를 갔다면 평균속력은 얼마일까요? 75km/h일까요? 아닙니다. 100km지점까지는 1시간이 걸렸고 나머지 100km까지는 2시간이 걸렸을 것입니다. 그러니 평균 속력은 66.7km/h 이며 조화 평균 공식으로는 (2*100*50) / (100+50) = 66.7이 나옵니다. 정밀도와 재현율의 경우도 분자는 같지만 분모가 달라 조화평균을 사용하여 f1 score를 계산합니다.

 

지금까지 혼돈행렬을 통해 알 수 있는 지표에 대해 알아봤습니다. 이 글을 단순히 보는 것 보다 한번만 이해하시면 계속 기억에 남을 것 으로 생각합니다!.

 

 

반응형

+ Recent posts