본문 바로가기
Dev/Coursera - Machine Learning

[Coursera ML][3주차] Logistic Regression (로지스틱 회귀)

by 아임웬디 2020. 2. 11.

1) Classification and Representation

0 or 1 하나의 값을 가지는 변수 y를 예측

0 : '음성 분류' / 1 : '양성 분류' + multi classification도 있음

cf) 우선 강의에서는 이진 분류 위주로 진행

 

선형 회귀를 분류문제에 적용하기에는

예시1 ) 데이터에 적용했을 때 임계값 0.5에 대해 잘못된 결과

예시2 ) 가설의 결과값이 0과 1 사이여야 하는 데 그밖의 값을 가질 수 있음

=> 이러한 어려움이 있기 때문에 로지스틱 회귀 알고리즘 사용

 

cf) 로지스틱 회귀에서 회귀는 역사적으로 붙여진 이름이지 선형회귀와 헷갈리지 말것!

 

가설 표현 모델 : 분류 문제에서 가설 표현 시 사용

(*z는 실수)

ex) 

 will give us the probability that our output is 1. For example,  gives us a probability of 70% that our output is 1. Our probability that our prediction is 0 is just the complement of our probability that it is 1 (e.g. if probability that it is 1 is 70%, then the probability that it is 0 is 30%).

hθ(x) = P(y=1|x;θ) = 1P(y=0|x;θ)

P(y=0|x;θ)+P(y=1|x;θ)=1

cf) 조건부 확률. 만약 잘 이해가 되지 않으면 여기에서는 단순히 P(y=1)/P(y=0)으로 봐도 무방

 

0과 1 분류에서 가설의 결과를 다음과 같이 이해할 수 있다.

hθ(x) 0.5 y = 1

hθ(x) < 0.5 y = 0

위에서처럼 로지스틱 회귀 모델에서는 가설을 이렇게 해석할 수 있다.

g(z) 0.5 when z0

→ hθ(x) = g(θTx) 0.5 when θTx0

θTx 0 y = 1 / θTx < 0 y = 0

Decision Boundary : y = 0 / y = 1이 구분되는 시점. 선이 아니더라도 원 등 다양한 모형으로 나타낼 수 있다.

 

2) Logistic Regression Model - theta parameter값 설정

Non-convex vs Convex

 

Cost function for logistic regression

 

Cost(hθ(x),y) = 0 if hθ(x) = y

Cost(hθ(x),y)  if y=0 and hθ(x)1

Cost(hθ(x),y)  if y=1 and hθ(x)0

=> 이제 Convex한 형태로 비용 함수 그릴 수 있음

 

* 분류문제에서 항상 y는 0 or 1이라는 걸 기억할 것!

 

따라서 이와 같은 간단화된 비용함수 식을 얻을 수 있음. 

A vectorized implementation is:

 

 

 

 

 

 

Gradient Descent : 선형회귀에서 사용하던 것과 동일. 여전히 동시다발적으로 값 업데이트 ! 

A vectorized implementation is:

 

 

 

최적화 알고리즘 : Gradient descent, Conjugate gradient, BFGS, L-BFGS

+ alpha 값을 자동으로 설정해줌, Gradient descent보다 빠름

-  하지만 더 복잡하고 어려움

 

Octave로 구현하기

function [jVal, gradient] = costFunction(theta)

jVal = (theta(1)-5)^2 + ... (theta(2)-5)^2; % how compute cost function

gradient = zeros(2,1);

gradient(1) = 2*(theta(1)-5);

gradient(2) = 2*(theta(2)-5);

options = optimset('GradObj', 'on', 'MaxIter', '100');

% 옵션을 주기 위한 데이터 구조

% GradObj : Gradient Object / on : Gradient 값 줄 거다 / MaxIter : 반복 최대값 설정 '100'

initialTheta = zeros(2,1);

[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initalTheta, options);

                     how convergence   함수 minimization unconstrained in Octave

 

3) Multiclass Classification

one-vs-all (one-vs-rest) 분류 - 기존에 앞에서 다뤘던 이진분류와 달리 여러개로 분류해야하는 경우

각각이 클래스 i에 대해 y=i일 확률을 예측한 후, 새로운 입력값 x가 주어진다면 그냥 세 개의 h를 새로운 x에 대해 전부 돌려 보고 최대값이 나온 클래스 i를 고르면 된다.

 

4) Solving the Problem of Overfitting

 

Underfitting / High bias / Preconception : 모델이 데이터에 제대로 맞지 않을 때, 주로 직선에 데이터를 맞치는 경우 나타남

Overfitting / High variance(높은 분산) : 적어도 훈련용 데이터에서는 좋은 성능을 볼 수 있지만, 과한 변동성으로 인해 일반화가 어려워 새로운 입력 데이터에 대한 예측이 어려울 수 있음

Overfittting 문제를 어떻게 다룰 것인가?

1) # of feature 줄이기 : 수동적으로 선택 / 모델 선택 알고리즘 사용

2) Regularization : feature들은 모두 유지하되 값이나 강도를 조절

 

Regularzation에서 사용되는 cost function

θ3와 θ4를 줄이기 위해 패널티(?)를 부과하여 조절함

 

lambda : regularzation parameter

만약, 람다 값이 너무 크면 모든 theta값을 0으로 수렴하게 만들기에, underfitting의 문제가 발생함

 

Regularized Linear Regression

- Gradient Descent

- Normal Equation

non-iterative

Recall that if m < n, then X^TX is non-invertible. However, when we add the term λ⋅L, then X^TX + λ⋅L becomes invertible.

 

Regularized Logisitic Regression

- Cost Function

뒤에 추가한 시그마식에 0을 제외하고 1부터 n까지 더하는 이유는 bias term, θ0​이기 때문!

 

* Gradient descent이 선형회귀와 유사해도 다른 알고리즘임. 가설이 다르기 때문

 

- Assignment

https://github.com/Sunkyoung/Coursera_Machine-Learning/tree/master/Assignment/machine-learning-ex2/ex2

 

Sunkyoung/Coursera_Machine-Learning

Course source for Coursera Machine-Learning (Lecturer : Stanford Andrew Ng Professor) - Sunkyoung/Coursera_Machine-Learning

github.com

 

댓글