본문 바로가기
기계학습/코세라 - 기계학습 (Andrew Ng)

week3

by tryotto 2019. 8. 14.

1. Classification

     - 목적 : 여러 개의 데이터들을 원하는 기준에 맞게 분류하는 것.

     - 방식 : 

- Linear Regression(?) : 손실함수의 값이 특정 threshold 값보다 작으면 0, 크면 1

-> 그러나, 정확한 답을 산출하지 않음. 좋은 분류 방식이 아님.

-> classification에 거의 사용하지 않는 방식이다

- Logistic Regression : 손실함수의 원래 범위는 0~1 사이에 있는 수가 아니어도 됨

     그러나, Logistic Regression은 반드시 0<=h(x)<=1을 만족

     하도록 구성한 함수.

-> classification에 적용하기에 적합!


2. Logistic Regression

     - 사용하는 함수 : Sigmoid function(=Logistic Function) -> 여기서는 활성화함수라고 할 수 없다!! 그냥 일종의 함수!!

     - 의미 : Sigmoid function 값이 0.7이라 하면? -> 특정 사건이 일어날 확률이 70%라는 의미



3. Decision Boundary : 

- 정의 : Θ^T * x 로 형성되는 직선 -> 이 값을 sigmoid함수 안에 넣어서

                                                값을 측정할 것이다.

- h(x) = g( Θ^T * x ) : g( Θ^T * x ) 값 

- ( g( Θ^T * x ) > 0.5) -> y=1

- ( g( Θ^T * x ) < 0.5) -> y=0

=> g( Θ^T * x )값을 기준으로, classify 하고 있다!


- Desicion Boundary 종류 : 선형, 비선형 (둘 다 가능함!)



4. Cost Function (비용 함수, 손실 함수) -> 손실함수f ( 활성함수 g) 꼴임을 항상 기억!

       - 비교 :

- Linear Regression : 손실함수를 주로 MSE(표준오차)를 사용한다

- Logistic Regression : 손실함수를 주로 다른 함수를 사용한다

      why? Logistic의 경우, sigmoid 함수를 활용하는데, 이는 MSE에 사용 시 오류가 발생

-> 이에 맞는 함수를 설정해줘야 함 : 동영상에선, log함수를 취하라고 함.


## 주의 !! 

Classification이랑 Neural Network의 개념을 헷갈려하면 안 된다!!



5. Logistic regression의 Cost function 

       - 단순화 : y=1, y=0 두 가지 경우에 대한 식 -> 한 가지의 식으로 통합 가능


       - 목적 : Cost Function의 값을 최소화 할 수 있는 매개변수를 찾는다 

-> 그 때의 매개변수를 내가 당장 사용할 것이다


       - Prediction : 주어진 데이터를, sigmoid 함수(활성함수)에 대입한다


       - Gradient Descent와 손실함수의 관계 : 손실함수의 미분값을, Gradient의 변수 x 값에 적용한다!!

why? Gradient의 목적 자체가, 최소한의 매개변수를 찾는것. 즉, 손실함수의 최적값을 찾는 것.

        쉽게 말하면, Gradient 자체가 손실함수의 최적화 식이다.


6. Advanced Optimization

       - 손실함수의 최적화 방식들 :

1) Gradient Descent -> 주로 이정도 수준만 다룬다

2) Conjugate gradient

3) BFGS

4) L-BFGS

            ** 2) 3) 4) 가 1) 보다 나은 점 : 직접 learning rate(알파 값)을 구할 필요가 없다


       - Octave에 적용하면 좀 더 빠른 계산이 가능하다고 함

- 방식 : 각각의 변수에 대한 Gradient 값을 구해주면 됨 by 편미분


7. Multiclass Classification

       - 여러 개의 클래스로 나누는 방법 :

각 조건들에 대한 조건부 확률을 구해준다 -> 그 값을 활성함수 값으로 설정함

예를 들어, c1인 경우와 아닌 경우로 나누고, c2인 경우와 아닌 경우로 나누고... 를 반복

-> 이렇게 해서 산출된 값을 활성화 함수 값으로 설정만 해주면 됨



'기계학습 > 코세라 - 기계학습 (Andrew Ng)' 카테고리의 다른 글

week5  (0) 2019.08.14
week4  (0) 2019.08.14
week2  (0) 2019.08.14
week1 (2)  (0) 2019.08.14
week1 (1)  (0) 2019.08.14