Machine Learning

    Tensorflow - 콜백 EarlyStopping 사용법

    callback이란: 내가 만든 함수를 프레임워크가 실행시켜 주는 것 EarlyStopping 인공지능 학습시 더 이상 에포크를 반복해도 성능 향상이 없을 경우, 학습을 조기 종료 시킨다. tf.keras.callbacks.EarlyStopping(monitor= 'val_loss', patience= N) monitor='val_loss' : 'val_loss'의 성능향상을 모니터링 하겠다. patience= N : N번의 epoch 동안 즉 N번의 epoch 횟수동안 val_loss의 값을 모니터링하여 loss가 줄어들지 않을 경우 학습을 조기 종료 # 10번(patience)의 에포크 동안 성능향상(val_loss)이 없으면 학습을 멈추라는 뜻 early_stop = tf.keras.callback..

    Tensorflow - Validation(검증)을 사용하는 방법

    Validation (검증) validation이란, 학습 중에 에포크가 끝날 때마다 평가하는 것을 말한다. train 데이터로 모델을 생성한 뒤, 중간과정 없이 test 데이터로 모델을 평가하는 경우, 우리가 가지고 있는 모든 데이터를 사용했기 때문에 overfitting이나 underfitting이 발생한 것을 파악 못 할 수도 있다. 따라서 새로운 데이터에 대해 얼마나 잘 동작하는지 학습 중에 모의고사를 치룬다고 생각하면 된다. train 데이터의 일정 부분을 나눠서 train에 사용하지 않고 validation에 사용하는 경우와 validation 데이터를 따로 준비해서 사용하는 경우가 있다. 텐서플로우의 모델을 학습할때 validation을 사용하는 방법을 알아보자. 1. train 데이터의 일..

    Tensorflow - Learning rate(학습률)을 설정하는 방법

    1. Learning rate(학습률) 딥러닝을 할 때 학습률은 적당한 값을 넣어주는 것이 가장 중요, 학습률에 따라 인공지능 성능 좌우 일반적으로 Learning Rate의 값을 0.01로 설정, 필요에 따라 조금씩 조정 학습률 값을 너무 크게 설정 할 경우 지그재그의 방향으로 이상하게 학습하는 오버슈팅(Overshooting) 문제 발생 학습률 값을 너무 적게 설정 할 경우 학습 단계가 너무 많이 필요, 하이퍼 파라미터를 찾는 과정에서 국소 최저치(Local Minima) 현상 발생 국소 최저치(Local Minima) 경사 하강법(gradient descent)을 시도할 때 최적의 해인 전역 최저치(global minima)가 아닌 학습 데이터의 특성으로 인해 국소적으로 낮은 값이 부분적 해(par..

    Tensorflow - regression(수치예측) 문제의 인공신경망(ANN)

    import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv('Car_Purchasing_Data.csv', encoding='ISO-8859-1') 0. 데이터 확인 df.info() df.describe() 1. nan이 있는지 확인 df.isna().sum() 2. 학습데이터 X와 정답데이터 y로 분리 X = df.loc[:, 'Gender':'Net Worth'] y = df['Car Purchase Amount'] 3. X, y 모두 숫자 데이터이므로 인코딩 할 필요 없다. 4. feature scaling from sklearn.preprocessing imp..

    Tensorflow - Grid Search 를 이용한, 최적의 하이퍼 파라미터 찾기

    from keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import GridSearchCV from keras.models import Sequential from keras.layers import Dense 텐서플로우로 딥러닝 그리드 서치 하는 방법 1. 모델링 하는 함수를 만든다. 함수의 파라미터로 옵티마이저를 받는다. def build_model(optimizer): model = Sequential() model.add(Dense( units= 6, activation= 'relu', input_shape= (11, ) )) model.add(Dense( units= 8, activation= 're..

    Tensorflow에서 학습시 batch size, step, epoch 란?

    1. Batch size 연산 한 번에 들어가는 데이터의 크기를 말한다. 배치 사이즈가 너무 큰 경우 한 번에 처리해야 할 데이터의 양이 많아지므로, 학습 속도가 느려지고, 메모리 부족 문제가 발생할 위험이 있다. 반대로, 배치 사이즈가 너무 작은 경우 적은 데이터를 대상으로 가중치를 업데이트 하고, 이 업데이트가 자주 발생하므로 훈련이 불안정해진다. 2. Step iteration 이라고도 한다. 1-epoch를 마치는데 필요한 미니배치의 갯수 다른 말로, 1-epoch를 마치는데 필요한 파라미터(가중치) 업데이트 횟수 3. Epoch 전체 학습 데이터 셋이 모델을 통과한 횟수 epoch가 1이라면 전체 학습 데이터셋이 순전파와 역전파를 통해 신경망을 한번 통과했다는 의미 epoch가 10이라면 전체 ..

    Tensorflow - 이진 분류 문제의 인공신경망(ANN)

    위 데이터를 사용해 금융상품 갱신 여부를 예측하는 ANN을 만들어보자. import numpy as np import matplotlib.pyplot as plt import pandas as pd import seaborn as sns df = pd.read_csv('Churn_Modelling.csv') 1. nan이 있는지 확인 df.isna().sum() 2. 학습데이터 X와 정답데이터 y로 분리 X = df.loc[: , 'CreditScore':'EstimatedSalary'] y = df['Exited'] 3. 범주형 문자열 데이터를 숫자로 바꿔준다. X['Gender'].unique() X['Geography'].unique() from sklearn.preprocessing import ..

    원핫인코딩 할 시 주의할 점 - Dummy Variable Trap

    어떤 대상의 성질에 따라 0 또는 1로 나타내는 변수를 더미변수 또는 가변수라 한다.(One-Hot encoding) 모든 카테고리에 해당하는 더미변수를 포함하여 회귀분석을 진행할 경우, 독립변수이지만 변수들이 상관성이 있어서, 한 변수가 다른 변수들의 도움으로 쉽게 예측될 수 있다. 예를 들어, 아래 이미지에서 원핫 인코딩한 세 가지 컬럼 중 두 가지 컬럼의 값을 알면 나머지 하나의 값을 예상할 수 있다. 통계학적으로 이런 경우 다중공선성(multicollinearity) 문제가 발생해 회귀분석에 어려움이 생긴다고 한다. 이를 더미변수 함정(dummy variable trap)이라 한다. 따라서, dummy variable trap에 빠지지 않기 위해 데이터 전처리를 할 때 k개의 카테고리가 있다면, ..