데이터분석/딥러닝 64

시계열 데이터를 RNN으로 분석할 때 데이터의 형태(차원)

입력데이터의 형태(차원)RNN모델에 시계열 데이터를 입력할 때 입력데이터의 형태는 3차원이 된다.(학습할 데이터의 수, sequence, x값의 개수)데이터의 수 : 학습할 데이터의 개수 (데이터의 수-sequnce)sequence : 특정값을 구하기 위해 반영할 시간의 길이x값의 개수 : 사용할 독립변수의 개수아래의 예시에서 어떻게 이러한 모양이 나오는지 알아 본다.이해를 돕기위해 데이터의 수는 빨간색, sequence는 초록색, x값의 개수는 파란색으로 표시한다 자전거 이용률 예시season(계절), holdiay(방학여부), workingday(평일여부)에 따른 자전거 사용횟수(count)가 시계열적으로 나타나있는 데이터가 있다.데이터의 개수는 총 13128개이다.X의 column이 3개(seaso..

RNN,LSTM,GRU를 이용한 비트코인 분석

RNN,LSTM,GRU1. RNN이전의 데이터가 다음 데이터에 영향을 준다.시계열 분석에 유용하다 2. LSTMRNN의 단기기억문제 해결책으로 고안됨 (시간이 많이 지난 데이터의 영향력이 너무 낮아지는 문제) 3. GRULSTM구조보다 간결하게 변경함, 빠른 속도와 유사한 성능 평가 함수### Evaluation of 1 pair of setdef evaluation(Y_real, Y_pred, graph_on=False): loss_length = len(Y_real.values.flatten()) - len(Y_pred) if loss_length != 0: Y_real = Y_real[loss_length:] if graph_on == True: pd.con..

데이터 직접 생성하고 linear regression직접 구현하기

1. 설명y=⍬x 단일 회귀분석을 수행한다각 곱,합,평균 등의 계산을 클래스로 구현하고, forward와 back propagation함수를 각 클래스 내부에 구현한다. 2. 파일(1) basic node.pyimport numpy as npclass mean_node: def __init__(self): self._x=None self._z=None def forward(self, x): self._x = x self._z = np.mean(self._x) return self._z def backward(self, dz): dx = dz * 1 / len(self._x) * np.ones_like(self._x..

로지스틱회귀 데이터 만들기

로지스틱회귀를 위한 범주형 데이터를 만드는 방법import numpy as npx_dict={'mean':1, 'std':1, 'n_sample':300, 'noise_factor':0.3,'cutoff':1, 'direction':1}def dataset_generator(x_dict): x_data=np.random.normal(x_dict['mean'], x_dict['std'], x_dict['n_sample']) #np.random.normal(평균,표준편차,갯수) : 평균과 표준편차에 맞는 데이터를 갯수만큼 랜덤으로 만든다 x_data_noise=x_data+x_dict['noise_factor']*np.random.normal(0,1,x_dict['n_sample']) # 반..

single variable logistic regression에서 affine, activation, loss 함수의 모양 및 학습 과정

위와같은 흐름에서 각각의 함수의 모양을 확인하고 학습되는 과정을 살펴본다. 1. 함수의 모양 ( 예시는 (x,y)=(1,1) 일때 )(1) affine fuction- 식 - 그래프 (x=1일때 함수의 그래프는 아래와 같다. z축의 의미는 z^i이다.) (2) activation function (logistic function)- 식- 그래프 (x=1일때 함수의 그래프는 아래와 같다. z축의 의미는 y^i이다.)  (3) loss function (binary cross entropy)- 식- 그래프 (z축의 의미는 Loss) 2. loss의 의미(1) 위치별 prediction 값실제값이 1인데 예측값이 1에 가까우면 loss는 낮아 하고 예측값이 0에 가까우면 loss는 높아야 한다.따라서 위 사진..

파라미터의 개선에 따른 sigmoid함수의 모양 변화

1. coefficient의 부호에 따른 모양(1) 양수일때양수일때는 우상 그래프가 만들어진다a가 클수록 점점더 경사가 가팔라 진다a가 커질수록  보라색 ->붉은색 이 된다. (2) 음수일때음수일때는 좌상그래프가 만들어진다a가 작을수록 (절댓값은 클수록) 가팔라진다a가 작아질수록 (절댓값은 커질수록) 보라색->빨간색이 된다. 2. bias의 부호에 따른 모양(1) 양수일때bias가 양수이면 왼쪽으로 이동한다.bias가 커질수록 왼쪽으로 이동한다.즉 bias가 커질수록 보라색 -> 빨간색으로 이동한다. (2) 음수일때bias가 음수이면 오른쪽으로 이동한다.bias가 작아질수록 오른쪽으로 이동한다.즉 bias가 작아질수록 보라색 -> 빨간색으로 이동한다. 3. bias만 그래프의 이동에 영향을 미치는 것은 ..

딥러닝을 이용한 logistic regression 전체흐름 정리

1. softmax마지막 output layer에는 아무런 활성함수를 넣지 않기 때문에 결과값이 -무한~+무한 을 가질 수 있다.따라서 이를 logit으로 해석할 수 있고, softmax함수를 이용하여 확률의 형태로 바꿔줄 수 있다. 2. cross entropy확률형태로 바뀐 결과값 p_ci를 y_i와 비교하여 loss를 측정한다.이 loss가 바로 cross entropy loss이다. 이를 이용하여 back propagation을 진행하여 파라미터를 개선한다.  * 출처 : 패스트캠퍼스 수학적으로 접근하는 딥러닝 올인원 패키지 Online.

kl divergence를 통한 cross entropy의 해석

binary entropy의 의미 및 정보이론적 해석을 다룬적이 있다. (sosoeasy.tistory.com/356)그렇다면 더 나아가서 cross entropy가 무엇인지를 KL Divergence를 통해서 해석해 본다. 1. KL Divergencekl divergence는 정보량의 차이에 대한 기댓값이다. 즉 kl divergence를 그래프로 나타내면 아래와 같다. 2. KL Divergence를 이용한 cross entropy의 해석kl divergence를 변형하면 cross entropy에 대한 식으로 정리된다.그리고 이를 cross entropy에 대해서 정리하면 아래와 같아진다.즉 cross entropy를 최소화하는것은 kl divergence를 최소화 하는것과 같은 것이다.따라서 q..

binary entropy의 정보이론적 해석

1. 정보량(1) 확률과 반비례 관계발생할 확률이 낮은 사건이 발생한다는 사실을 알때 정보의 양은 커진다. 그러니까 확률과 정보의 양은 반비례하다.(2) 숫자 예시1~100까지 숫자중 정답인 숫자를 맞춰야 하는 문제가 있다고 가정하자.정답이 1~10까지 중에 있다는 정보는 확률이 10/100 => 정보의 양은 10정답이 1~20까지 중에 있다는 정보는 확률이 20/100 -=> 정보의 양은 5..정답이 1~100까지 중에 있다는 정보는 확률이 100/100 => 정보의 양은 1 (3) 로그취하기이때 동전 던지기로 정보의 양은 표현하면동전 하나를 던졌을때 하나가 앞면이 나올 확률은 1/2 => 정보의 양은 2동전 두개를 던졌을 때 두개가 앞면이 나올 확률은 1/2^2 => 정보의 양은 2^2..동전 n개를..

sigmoid function(softmax function)과 logit function

0. 서론확률을 input으로 받았을 때 적절한 y값을만들어 주는 logit function에 대해서 알아보았다(sosoeasy.tistory.com/352)그렇다면 logit값을 입력으로 받았을 때 이를 확률로 바꿔주는 sigmoid(label이 3개이상일때는 softmax)에 대해서 알아본다. 1. logit의 함수는 아래와 같다   2. logit 함수로 부터 sigmoid함수를 역함수 형태로 유도할 수 있다   즉 각각의 함수의 역할은 다음과 같다   3. softmax는 여러 lable이 있을때 쓰는 활성함수. 분모가 달라진다   4. DNN에서의 흐름output layer의 결과값을 logit으로 생각하면, 이 logit을 sigmoid( softmax )함수에 적용하면 결과값으로 확률이 나온..

binary cross entropy의 의미

0. 설명로지스틱회귀에서 사용하는 loss function인 binary cross entropy가 어떻게 만들어졌는지 살펴본다 1. loss function의 의미loss function은 우리가 원하는값이 나오면 작은값이 나와야 하고, 우리가 원하지 않은 값이 나오면 커야 한다.즉 결과값이 0이 나와야 하는데 1이나오면 loss는 커져야 하고, 0이 나오면 loss는 작아져야 한다.이를 식으로 나타내면 아래와 같다. 2. log함수그런 역할을 해주는 식이 log함수이다. 식은 아래와 같다즉 label이 0이면 0에 가까워질수록 작아지고, 1에 가까워질수록 커지는 -log(1-x)를 loss function으로 쓰고label이 1이면 1에가까워질수록  작아지고, 0에 가까워질수록 커지는 -log(x)를..

sigmoid, tanh의 gradient vanishing 문제

0. 서론sigmoid와 tanh에서 왜 gradient vanishing문제가 발생하는지 알아보고, 이를 어떻게 relu를 이용해서 해결할 수 있는지 알아본다. 1. tanh와 simoid의 기울기tanh와 sigmoid의 도함수는 위사진과 같다. 딥러닝은 back propagation 과정에서 활성함수의 기울기만큼 웨이트가 개선된다. 그런데 기울기의 최대가 tanh의 경우 x=0에서 1, sigmoid는  x=0에서 0.3정도 된다. 즉 tanh나 sigmoid를 사용하면 대부분의 경우 활성함수의 기울기가 1보다 작다.이때 딥러닝 모델의 layer가 많다면, back propagation과정에서 1보다 작은값이 계속해서 곱해지게 된다.이러면 기울기가 무한히 작아지는 현상이 발생하며 이 현상을 grad..

위키독스 LDA실습 2 - sklearn이용

1. 데이터 다운(1) 데이터 다운nltk.download()import pandas as pdimport urllib.requesturllib.request.urlretrieve("https://raw.githubusercontent.com/franciscadias/data/master/abcnews-date-text.csv", filename="abcnews-date-text.csv")data = pd.read_csv('abcnews-date-text.csv', error_bad_lines=False)# 데이터는 총 100만개print(len(data)) (2) 데이터 상태 보기# 데이터는 2개의 열로 이루어져 있음 # publish_data : 뉴스가 나온 날짜, headline_text : 뉴스 ..

위키독스 LDA실습 1 -gensim라이브러리 이용

위키독스 교재에 있는 주제추출 알고리즘 LSA실습을 진행해본다wikidocs.net/307081. 데이터 추출뉴스기사 11314건을 사용한다.(1) 필요한 라이브러리 다운import pandas as pdfrom sklearn.datasets import fetch_20newsgroupsdataset = fetch_20newsgroups(shuffle=True, random_state=1, remove=('headers', 'footers', 'quotes'))documents = dataset.datalen(documents)11314 (2) 데이터 형태 확인documents[1] (3) 카테고리확인총 20개의 토픽이 있다.print(dataset.target_names) (4) 전처리# 텍스트 전처리..