본문 바로가기

Deep learning

05 Logistic Regression

Logistic Regression: 분류 기법의 일종

Binary Classification: 0 또는 1의 결과값  

y_train의 값이 0 또는 1 

 

 

Logistic and  Linear 

Logistic  Linear 
셀 수 있고 데이터의 값들이 흩어져있음 
예) 신발사이즈 
연속적으로 이어져있음. 
예) 몸무게 

 

 

Hyphothesis Representation 

-g(x)를 통해 Logistic function 으로: y의 범위를 0과 1 사이에 정의할 수 있도록 함. 

따라서, x가 커질 수록 분모는 1에 가까워지기 때문에 결국 함수값은 1로, x가 작아질수록 분모가 무한대로 가기 때문에 결국 0으로 수렴하게 됨. 

결론: 함수로 치면 y축에 있는 값이 0과 1 사이에 있게 됨. 

코드로 구현해보기. 

 

 

 

Cost Function 

: 랜덤 w를 최적의 파라미터로 만드는 것 

cost(hθ, (x),y) = -ylog( hθ (x) ) - (1-y)log( 1- hθ (x) )

def loss_fn(hypothesis, labels):
cost = -tf.reduce_mean(labels * tf.log(hypothesis) + (1 - labels) * tf.log(1 - hypothesis))
return cost

 

 

가설 - 실제갑 = 오류가 작은 값이어야함. 

cost = -tf.reduce_mean(labels * tf.log(hypothesis) + (1 - labels) * tf.log(1 - hypothesis))

 

 

 

Optimization : cost 최소화 

 

경사값을 0에 가깝게 함으로써 cost 값을 줄일 수 있음. 

이를 3차원 공간에 표현하면 아래와 같은 그림이 나옴. 

 - running rate, gradient, cost 값을 반복하면서 최소의 cost값을 찾게 됨. 

이를 코드에 표현해보면, 

def grad(hypothesis, labels):
 with tf.GradientTape() as tape:
   loss_value = loss_fn(hypothesis, labels)
 return tape.gradient(loss_value, [W,b])
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
optimizer.apply_gradients(grads_and_vars=zip(grads,[W,b]))

 

출처: 모두를 위한 딥러닝 시즌2 유튜브

'Deep learning' 카테고리의 다른 글

[Article] GRU & LSTM  (0) 2023.08.16
04 Multi-variable linear regression  (0) 2021.03.30
02 Simple Linear Regression  (0) 2021.03.23
01 ML  (0) 2021.03.23