3-1 Classification and Representation 본문

ML & DL/Coursera-ML

3-1 Classification and Representation

eremo2002 2019. 1. 9. 20:23

분류 문제를 풀기 위한 Logistic Regression 알고리즘에 대해 알아본다.









이메일이 스팸인지 아닌지, 온라인 거래 사기인지 아닌지, 종양이 악성인지 아닌지 0 또는 1처럼 하나의 값을 가지는 변수 y 예측하는 문제는 classification으로 푸는 문제이다. 우선은 binary classification 다루도록 한다.









종양의 크기에 따라 종양이 악성인지 양성인지 분류하기 위한 data set 있다. (여기선 양성은 0, 악성은 1 의미함)









회귀문제를 풀기 위해 선형회귀 알고리즘을 사용했던 것처럼 일단 직선을 그어보자

우리가 있는 가설 h(x) 결과값이 0.5 되는 지점에서 수직으로 경계선을 긋는 것이다.

그래서 지점보다 size 작으면 양성, size 크면 악성으로 판단할 있겠다.

이것만 보면 선형회귀를 적용했을 분류도 있는 같다.










만약 train data 들어왔다고 하면 가설 h(x) 추가된 데이터도 반영할 있게 것이다. 그래서 파란색 직선을 얻었다.

그러나 파란색 모델에서 y 0.5 되는 지점에서 경계선을 그어보면 분류가 제대로 되지 않는 문제가 생긴다.

따라서 classification 선형회귀를 사용하는 것은 좋은 방법이 아니다.










선형회귀로 classification 풀려고 하면 이러한 문제 역시 생길 있다.

우리는 y값의 label 0 혹은 1 설정하였다. 그런데 가설 h(x) 결과값이 1보다 매우 크거나 0보다 매우 작을 있기 때문에 문제가 있다.











따라서 분류 문제를 풀기위해 Logistic Regression 알고리즘을 사용한다.

Logistic regression 예측 값이 항상 0에서 1 사이로 출력되기 때문에 범위를 벗어나는 값을 가질 없다.
































Classification 문제를 풀기위해 Logistic regression 사용한다고 했다. 이러한 알고리즘을 사용하면 우리는 가설 h(x) 값을 0 1사이의 값으로 출력할 있다.

이전에 선형회귀를 공부할 h(x) θ 전치행렬과 X 곱으로 나타냈었다.

로지스틱 회귀에서는 이를 조금 변형한다.












1/(1+ e^-z)라는 g(z)함수를 사용하여 이와 같이 변경한다. 이러한 함수를 시그모이드 또는 로지스틱 함수라고 하며 이름은 다르지만 같은 함수를 나타낸다고 보면 된다.

이렇게 θ'*X g(z) 합하여 오른쪽 위의 로지스틱 함수를 만들 있다.

로지스틱 함수는 입력이 0 0.5 갖고 입력이 무한대로 1, 음의 무한대로 갈수록 0으로 수렴한다.

이렇게 새롭게 정의한 가설을 통해서 파라미터들을 데이터에 맞게 맞춰 예측한다.









가설 h(x) 결과값에 대해 알아보자

h(x) input x 들어왔을 y 1 확률을 의미한다.

예제에서 보는 것처럼 (x_0 항상 1) 어떤 feature 벡터 x 입력으로 주어졌을 결과 값이 0.7이라는 것은 종양이 악성일 확률이 0.7이다라고 말할 있다.










가설의 결과값을 다시 해석해보면 입력 x 파라미터 θ에서 y=1 확률로 해석할 있다.

우리는 분류 문제를 풀기 때문에 y 0 아니면 1 존재한다. 그리고 확률이기 때문에 y 0 확률도 구할 있다.








































Logistic regression 이러한 로지스틱 함수를 만들어서 가설 h(x) 결과값이 0.5이상이면 y=1, 0.5미만이면 y=0으로 분류하였다.

g(z) >= 0.5 z >= 0 것과 같다.

h(x) >= 0.5 θ'X >=0 다시 말해 z 0 >= 것과 같다.











이제 이러한 트레이닝 셋이 있고 가설 h(x) 이렇게 설정했다고 해보자

(파라미터를 어떻게 모델에 fit 것인지는 다음에 배우고 일단은 이렇게 있다고 가정함)

그러면 우리의 파라미터 θ 벡터는 -3, 1, 1 원소로 하는 3차원 벡터가 된다.










따라서 -3 + x_1 + x_2 값이 0 이상이라면 y=1이라고 predict 있다.

여기서 상수 -3 우변으로 넘기면 x_1 + x_2 >= 3 된다. 역시 이러한 조건을 만족할 y=1이라고 있다.











의미를 그래프에서 나타내면 위와 같은 분홍색 직선을 그릴 있다. 그리고 직선으로 인해 오른쪽 영역은 y=1, 왼쪽 영역은 y=0으로 분류가 된다. 이러한 선을 decision boundary라고 한다.












이번에는 복잡한 예제를 보자. 트레이닝 셋이 다음과 같다.

어떻게 하면 로지스틱 회귀를 이용해서 데이터를 분류할 있을까?

우리가 이전에 선형회귀를 다룰 , 복잡한 데이터를 표현하기 위해서 다항회귀를 사용하였다. 로지스틱 회귀도 이와 같다.

그래서 개의 feature x_1^2, x_2^2 추가해서 가설 h(x) 만들었다고 해보자.

파라미터 θ 값은 -1, 0, 0, 1, 1이다. (파라미터를 선택하고 업데이트하는 것은 나중에 배울 것임)

따라서 파리미터 값을 적용한 우리의 가설 h(x) -1 + x_1^2 + x_2^2 >=0 만족하면 y=1이라고 predict하게 된다.











이전에 했던 것과 마찬가지로 상수를 우변으로 이동하면 반지름이 1 원이 decision boundary 된다.

그리고 원을 그려보면 데이터를 분류하는 것을 확인할 있다.

이러한 방법을 사용하면 decision boundary 직선이 아닌 형태로도 데이터를 분류할 있다.

중요한 것은 decision boundary 트레이닝 데이터셋의 특성을 반영한 아니라 가설 h 파라미터의 특성을 반영한 것이다.

다시 말해, 파라미터 θ decision boundary 정의하는 것이지 training set 정의하는 아니다.










data가 어찌됐든 이러한 방법을 통해 우리는 복잡한 모양의 decision boundary 만들어 데이터를 분류할 있다.


'ML & DL > Coursera-ML' 카테고리의 다른 글

3-3 Multiclass Classification  (0) 2019.01.10
3-2 Logistic Regression Model  (0) 2019.01.09
2-2 Computing Parameters Analytically  (0) 2019.01.08
2-1 Multivariate Linear Regression  (0) 2019.01.08
1-3 Parameter Learning: Gradient Descent  (0) 2019.01.06
Comments