Data Science

Logistic classification 모두의 딥러닝 실습 및 개념 파악 하기 | sTricky

sTricky 2021. 1. 31. 15:50

Logistic classification 모두의 딥러닝 실습 및 개념 파악 하기 | sTricky

Logistic classification

우선, Binary Classification에 대해서 알아 보도록 하겠습니다. 여기에서 classification 이란 아래 그림을 보시면서 이야기 해보도록 하겠습니다.

Classification

자, 가장 위에 있는 Spam Detection은 spam 메일이냐, Ham 메일이냐, 다음은 Facebood feed에 보여 줄것이냐, 숨길것이냐, 마지막으로 신용카드의 사용내역이 일반적인 사용이냐 아니면 뭔가 어떤 범위와 벗어난 불법적인 사용이냐 아니냐를 알려 주는 로직을 이야기 합니다.

그동안 앞서 공부했던 linear regression 처럼 어떤 학습을 통해서 그래프위에 위치를 리턴하는 방법과는 약간 다를수 있습니다. 하지만 그 그래프 위에서 어디선가 이상이면 1, 아니면 0을 리턴하도록 하면 classification에서 linear regression을 응용하여 사용 할 수 있을 겁니다. 그럼 한번 공부를 같이 해보도록 하시죠.

classification 이란?

Classification을 구현하기 위한 함수 공식은 아래와 같습니다.

g(z) 함수

위 함수를 이용해서 아래와 같은 그래프를 그릴 수 있습니다.
이걸 바탕으로 classification을 구현 할 수 있겠죠.

g(x) 함수 sigmoid

결국 위 함수를 바탕으로 아래와 같은 공식을 얻을 수 있습니다.
linear regression의 Hypothesis와는 조금 다른 형태를 가지고 있습니다.
이것은 0과 1의 범위를 벗어나지 않도록 하기 위함 입니다.

Logistic Hypothesis 공식

 

 

 

Classification 실습 코드

classification의 실습을 진행 해보도록 하겠습니다.
아래와 같이 Training Data를 만들어서 x_data는 예를 드시기를, 어떤 시험을 위해서 공부한 시간이라고 가정하고 y_data는 시험의 탈락(0), 통과(1)를 의미 한다고 가정 합시다.

Training Data

그리고 나서 코드에 Hypothesis와 cost 수식에 데이터를 넣도록 합니다.
코드는 아래와 같이 구현 할 수 있습니다.
그냥 코드를 가지고 와서 진행을 하지만, 각자 하나씩 확인을 하면서 코드를 읽어 보아야 합니다.
그래야 공부가 되겠죠.

import tensorflow as tf

x_data = [[1, 2],
          [2, 3],
          [3, 1],
          [4, 3],
          [5, 3],
          [6, 2]]
y_data = [[0],
          [0],
          [0],
          [1],
          [1],
          [1]]

tf.model = tf.keras.Sequential()
tf.model.add(tf.keras.layers.Dense(units=1, input_dim=2))
# use sigmoid activation for 0~1 problem
tf.model.add(tf.keras.layers.Activation('sigmoid'))

''' 
better result with loss function == 'binary_crossentropy', try 'mse' for yourself
adding accuracy metric to get accuracy report during training
'''
tf.model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.SGD(lr=0.01), metrics=['accuracy'])
tf.model.summary()

history = tf.model.fit(x_data, y_data, epochs=5000)

# Accuracy report
print("Accuracy: ", history.history['accuracy'][-1])

위에서 실습을 총 5천번 하는데, 결과가 잘 출력 되는것을 확인 할 수 있습니다.
자, 오늘도 이렇게 하나 공부를 해보았습니다.
점점 tensorflow와 친해지는걸 느끼시는지 모르겠습니다.
감사합니다.

#지난 <모두의 딥러닝> 관련 자료 보러가기

2021/01/24 - [Data Science] - Multivariable linear regression 딥러닝 예제 개념 및 실습 | sTricky

2021/01/17 - [Data Science] - 파이썬 머신러닝 linear regression과 supervised learning (모두의 딥러닝) | sTricky

 

파이썬 머신러닝 linear regression과 supervised learning (모두의 딥러닝) | sTricky

파이썬 머신러닝 linear regression과 supervised learning (모두의 딥러닝) | sTricky 오늘은 머신러닝 학습 두번째 시간 입니다. 오늘은 Supervised Learning에 대해서 공부를 해보겠습니다. 이번 공부도 역시..

stricky.tistory.com

 

Multivariable linear regression 딥러닝 예제 개념 및 실습 | sTricky

Multivariable linear regression 딥러닝 예제 개념 및 실습 | sTricky 안녕하세요. 딥러닝 시간 3번째 시간 입니다. 지난 딥러닝 강의 및 예제를 보고 싶으신 분들은 아래 포스트를 참고 해주시면 됩니다. 참

stricky.tistory.com

by.sTricky