1. Binary Classification
분류문제에서도 Neural Network를 사용하여 문제를 해결할 수 있다. 이진 분류(Binary Classification)은 두 개의 결과값을 분류하여 예측하는 문제로 0과 1로 라벨링을 하여 학습한다.
3. Accuracy and Cross-Entropy
회귀문제에서는 MAE or MSE를 진행하여 손실함수(Loss Function)를 정의했다면, 분류 문제에서는 Cross Entropy Function을 손실함수로 이용한다. 분류 문제는 타겟 범주에 대한 확률로 정의되므로 Cross Entropy Function을 통해 확률 간의 거리를 계산하게 된다.
4. Making Probabilities with the Sigmoid Function
실제 데이터의 값은 각각의 범주가 다 다른데 우리는 결과를 0~1의 확률값으로 예측하고자 한다. 출력값을 확률로 얻고자 할 때 우리는 activation function을 sigmoid function으로 적용하여 확률값을 출력한다.
분류 예측을 할때 threhold probability를 정의해 주는데, 예를들어 0.5를 지정하게 되면 0.5이하의 확률은 label 0을, 0.5보다 크거나 같은 확률은 label 1을 결과로 해석하게 된다.
5. Example
from tensorflow import keras
from tensorflow.keras import layers
model = keras.Sequential([
layers.Dense(4, activation='relu', input_shape=[33]),
layers.Dense(4, activation='relu'),
layers.Dense(1, activation='sigmoid'),
])
Hidden layer의 경우 actvation function은 ReLU함수를 사용하고, 출력층의 activation function은 문제 종류에 따라 linear unit 혹은 sigmoid function을 넣어 결과를 출력한다. 분류 문제의 경우 activation = 'sigmoid'를 사용한다.
손실함수(Loss function)은 분류 문제에 대해서는 Cross Entropy Function을 사용하므로 loss = 'binary_crossentropy'를 입력한다.
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['binary_accuracy'],
)
early_stopping = keras.callbacks.EarlyStopping(
patience=10,
min_delta=0.001,
restore_best_weights=True,
)
history = model.fit(
X_train, y_train,
validation_data=(X_valid, y_valid),
batch_size=512,
epochs=1000,
callbacks=[early_stopping],
verbose=0, # hide the output because we have so many epochs
)
6. Exercise : Binary Classification
Step 1 : Define Model
from tensorflow import keras
from tensorflow.keras import layers
# YOUR CODE HERE: define the model given in the diagram
model = keras.Sequential([
layers.BatchNormalization(input_shape = input_shape),
layers.Dense(256, activation = 'relu'),
layers.BatchNormalization(),
layers.Dropout(0.3),
layers.Dense(256, activation = 'relu'),
layers.BatchNormalization(),
layers.Dropout(0.3),
layers.Dense(1, activation = 'sigmoid')
])
Step 2 : Add Optimzier, Loss, Metric
# YOUR CODE HERE
model.compile(
optimizer = 'adam',
loss = 'binary_crossentropy',
metrics = ['binary_accuracy']
)
Source of the course : Kaggle Course _ Binary Classification
Binary Classification
Explore and run machine learning code with Kaggle Notebooks | Using data from DL Course Data
www.kaggle.com
'Course > [Kaggle] Data Science' 카테고리의 다른 글
[DL] Convolution and ReLU (0) | 2022.03.23 |
---|---|
[DL] The Convolutional Classifier (0) | 2022.03.04 |
[DL] Dropout and Batch Normalization (0) | 2022.03.02 |
[DL] Overfitting and Underfitting (0) | 2022.03.01 |
[DL] Stochastic Gradient Descent (0) | 2022.03.01 |