
1. 앙상블 학습이란? 앙상블 학습이란 여러개의 분류기를 생성하고, 그 예측을 결합함으로써 보다 정확한 예측을 도출하는 기법을 말한다. 강력한 하나의 모델을 사용하는 대신 보다 약한 모델 여러개를 조합하여 더 정확한 예측에 도움을 주는 방식이다. 현실세계로 예를 들면, 어려운 문제를 해결하는데 한 명의 전문가보다 여러명의 집단지성을 이용하여 문제를 해결하는 방식을 앙상블 기법이라고 할 수 있다. 앙상블 학습은 크게 보팅, 배깅, 부스팅 세가지 유형으로 나눌 수 있다. 2. 앙상블 학습 유형 앙상블 학습은 일반적으로 보팅(Voting), 배깅(Bagging), 부스팅(Boosting) 세 가지의 유형으로 나눌 수 있습니다. 보팅(Voting) 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식..

model = Sequential() model.add(Conv2D(64, kernel_size=(3,3), padding = 'same', input_shape=(28, 28, 1 ) )) model.add(MaxPooling2D()) #(None, 14, 14, 64) model.add(Conv2D(32, (3,3))) #(None, 12, 12, 32) model.add(Conv2D(7, (3,3))) #(None, 10, 10, 7) model.add(Flatten()) #(None, 700) model.add(Dense(100, activation='relu')) #(None, 100) model.add(Reshape(target_shape=(100,1))) #(None, 100, 1) mode..

지금까지 우리는 문장의 다음 단어를 예측하기 위해서 과거의 단어를 들여다보는 RNN 방식에만 집중했다. 하지만 순서대로 읽지 않고 미래의 단어를 거꾸로 참조하여 빈칸을 예측하는 방식도 충분히 고려해볼 만하다. 한방향으로만 예측할 수 있는 RNN의 한계점을 개선하기 위하여 시퀀스 이전부분 뿐만 아니라 이후 부분까지 결합하여 예측하는 bidirctional RNN 모델이 나왔다. bidirctional RNN 모델은 양방향의 네트워크 구조로, 하나는 왼쪽에서 오른쪽으로 진행하지만 다른 하나는 오른쪽에서 왼쪽으로 진행한다. 이렇게 양방향에서 진행하는 hidden layer에 대한 정보를 유지하기 위해서 이 네트워크는 양방향 W, b를 기억하느라 2배의 메모리를 사용한다. model= Sequential() m..

RNN DNN, CNN 등의 작동 방식을 보면, layer의 값들이 다음 layer를 지나면서 연산을 한다. 하지만 RNN은 은닉층에서 나온 결과값이 다시 은닉층으로 돌아가 새로운 입력값과 연산을 수행하는 순환구조이다. 즉, DNN과 CNN은 은닉층에서 나온 결과값이 출력층 방향으로 이동하지만. RNN은 은닉층으로 되돌아가 순환한다는 점에서 큰 차이가 있다. RNN은 크게 2가지 단점을 가지고 있다. 단점1 (long term Dependency, 장기의존성) 앞에 단어가 중요한 단어인데 문장이 길어졌을 때 앞에 단어를 고려하지 못하는 경우를 말한다. 즉, 단어간의 사이가 멀어질수록 잘 기억을 하지 못한다. 단점2 (vanishing gradient) layer가 깊어질수록 vanishing gradie..

LSTM은 3차원의 형태지만 output 될 때, 2차원으로 변형된다. 아래 예시를 통해 확인 할 수 있다. model= Sequential() model.add(LSTM(10,input_shape=(3,1))) model.add(Dense(1)) 그렇다면, LSTM 레이어를 여러개 쌓아올리려면 어떻게 해야할까? return_sequence=True 옵션을 사용하면 된다. 이 옵션을 사용한다면 RNN의 output이 2차원에서 3차원으로 변형되며, LSTM 레이어를 여러개 쌓아올릴 수 있다. 아래 예시를 통해 확인해보자. model= Sequential() model.add(LSTM(10, return_sequences=True, input_shape=(3,1))) model.add(LSTM(5)) mo..

import numpy as np from tensorflow.python.keras.models import Sequential from tensorflow.python.keras.layers import Dense, SimpleRNN, Dropout #1. 데이터 datasets = np.array([1,2,3,4,5,6,7,8,9,10]) x = np.array([[1,2,3],[2,3,4],[3,4,5],[4,5,6],[5,6,7],[6,7,8],[7,8,9]]) y = np.array([4,5,6,7,8,9,10]) print(x.shape, y.shape) #(7, 3) (7,) x = x.reshape(7,3,1) print(x.shape) #(7, 3, 1) #2. 모델구성 model= S..

라이브러리 호출 import numpy as np import pandas as pd from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense from sklearn.model_selection import train_test_split from sklearn.metrics import r2_score, mean_squared_error from sklearn.preprocessing import MinMaxScaler 1. 데이터 살펴보기_(1)데이터 준비 from google.colab import drive drive.mount('/content/drive') train_set = pd.read_c..

CNN, Convolutional Neural Network 이란 무엇일까? 다음의 그림은 CNN의 과정을 잘 나타내는 그림이다. CNN은 Convolution과 Pooling, Dense(또는 Fully Connected)라는 세가지 종류의 계층을 통해 만들어진다. CNN은 크게 Feature Extraction(특징 추출)과 Classification(분류) 2단계로 나뉜다. ● Feature Extraction(특징 추출) : 입력 데이터(input)의 고유한 특징을 찾아가는 단계 ● Classification(분류): 찾은 특징들을 가지고 class를 고르는 단계 ▶ Convolution Layer 와 Pooling Layer을 여러 곂 쌓아 특징을 충분히 추출한 후 이를 배열 형태로 만드는 Fl..

DNN 파라미터 계산 (input_dim + bias) * units = summary Param 갯수 from tensorflow.python.keras.models import Sequential from tensorflow.python.keras.layers import Dense, Conv2D, Flatten #이미지는 2D model = Sequential() model.add(Dense(units=10, input_shape=(3,))) #input_shape=(batch_size, input_dim ) model.summary() #(input_dim + bias) * units = summary Param 갯수 (Dense 모델) CNN 파라미터 계산 ( (kernel_size *chann..