[ML] Logistic Regression

Yeon·2023년 12월 10일
0

ML

목록 보기
7/7

Discriminant Functions for Binary Targets

각 클래스(클래스 0과 클래스 1)에 대해 하나씩 두 개의 판별 함수 g0(x)g1(x)g_0(x)와 g_1(x)를 가정합니다.

  • g0(x)=w0Tx:g_0(x) = w_0^Tx: 클래스 0에 대한 판별 함수
  • g1(x)=w1Tx:g_1(x) = w_1^Tx : 클래스 1에 대한 판별 함수
  • w0w_0w1w_1은 각 클래스에 대한 가중치 벡터입니다.

훈련(Training)

주어진 데이터 포인트 x와 타겟 레이블 y를 사용하여 각 판별 함수의 가중치를 학습합니다.(초기 단계의 분류법)

  • y=1y=1인 경우
    • g1(x)g_1(x) 판별 함수를 훈련합니다. 이는 데이터 포인트 x가 클래스 1에 속한다고 가정하고, 해당 가중치 w1w_1을 사용하여 x를 어떻게 분류해야 할지를 학습합니다.
    • 동시에, g0(x)g_0(x) 판별 함수도 훈련하는데, 여기서는 x가 클래스 0에 속하지 않는다고 가정하여 가중치 w0w_0을 학습합니다.
  • y=0y=0인 경우
    • g1(x)g_1(x) 판별 함수를 훈련하는데, 이번에는 x가 클래스 1에 속하지 않는다고 가정합니다. 이 경우에는 y=1y=1일 때와 반대로 가중치 w1w_1을 학습합니다.
    • g0(x)g_0(x) 판별 함수는 x가 클래스 0에 속한다고 가정하고 가중치 w0w_0을 학습합니다.
  • 예를 들어, y=1y=1일 때, g1(x)=w1Txg_1(x) = w_1^Tx로 모델을 훈련시키고, y=0y=0일 때는 g1(x)g_1(x)w1Tx-w_1^Tx와 같이 훈련시킴으로써, 모델이 양의 클래스 레이블을 가진 데이터와 음의 클래스 레이블을 가진 데이터를 구분할 수 있도록 합니다.
  • 빨간색 데이터를 1, 파란색 데이터를 0으로 레이블을 했다고 가정한다. g1(x)g_1(x) 가 1에 가까워지면 빨간색 데이터, 0에 가까워지면 파란색 데이터가 된다. 반대로, 빨간색 데이터를 0, 파란색 데이터를 1로 레이블을 했다고 가정한다. 그러면 g0(x)g_0(x) 가 1에 가까워지면 파란색 데이터, 0에 가까워지면 빨간색 데이터가 된다.
  • g0(x)g_0(x)g1(x)g_1(x)의 대소 관계를 비교해서 파란색인지 빨간색인지를 구별한다.
  • Least Squares Error를 사용하여 g0(x)g_0(x)g1(x)g_1(x)를 찾는다.

개선된 방법

  • 데이터 포인트 xx가 클래스 1에 속하는 경우, 즉 타겟 레이블 y가 1인 경우, g1(x)g_1(x)wTxw^Tx로 훈련합니다.

  • 데이터 포인트 xx가 클래스 0에 속하는 경우, 즉 타겟 레이블 y가 -1인 경우, g1(x)g_1(x)wTx-w^Tx로 훈련합니다.

  • 분류

    • g1(x)=wTx>0g_1(x) = w^Tx \gt 0 \rarr class 1
    • g1(x)=wTx<0g_1(x) = -w^Tx \lt 0 \rarr class 0
    • g1(x)=wTx=0g_1(x) = w^Tx = 0 \rarr 의사 결정을 하는 boundary 지점
    • 1에 가까울 수록 1번 클래스, -1에 가까울 수록 0번 클래스
    • 파란색 부분은 g1(x)>0g_1(x) > 0, 빨간색 부분은 g1(x)<0g_1(x) < 0, 경계선은 wTx=0, g0(x)=g1(x)w^Tx = 0, \space g_0(x) = g_1(x)

한계

  • Regression은 Gaussian distribution과 관련이 있습니다. Regression에서 우리가 추정하는 것은 조건부 확률 분포 P(yx;w)P(y|x;w)이며, 이는 입력 x와 가중치 w에 대한 선형 조합으로 y의 조건부 가우시안 분포를 의미합니다. Regression은 연속적인 값을 예측할 때 유용하지만, Binary Target과 같은 이산적인 값을 예측하기 위해서는 이 방법의 한계가 있습니다.
    • Regression의 예측은 제한되지 않은 값이 될 수 있습니다. 즉, 0과 1의 범위를 벗어난 값을 예측할 수 있습니다. 확률은 0과 1사이의 값이어야 하는데, Regression으로는 이 조건을 항상 만족시키지 못합니다.
    • Binary Target의 경우, 실제 데이터 분포는 이러한 가정을 따르지 않을 수 있습니다.
  • 이러한 한계를 극복하기 위해, 확률적 모델을 사용해서, P(y=1x)또는P(y=0x)P(y=1|x) 또는 P(y=0|x)를 추정하고 싶을 수 있습니다.이러한 확률적 접근 방식은 분류 문제에서 더 자연스럽습니다. 왜냐하면 우리는 가능한 결과가 연속적인 값의 범위가 아니라 특정한 이산적인 클래스 중 하나임을 알고 있기 때문입니다. 그래서 이러한 확률적 모델을 사용하면, 예측에 대한 불확실성을 수치로 표현할 수 있고, 여러가지 의사결정 기준을 적용할 수 있습니다.

Logistic Regression

Logistic function를 사용하여 discriminate function을 이끄는 법

  • g1(x)=σ(wTx)g_1(x) = \sigma(w^Tx),  g0(x)=1σ(wTx)\space g_0(x) = 1- \sigma(w^Tx), σ(z)=11+ez\sigma(z) = \frac{1}{1+e^{-z}}로 정의된 logistic function이며, 출력이 0과 1사이로 제한되도록 합니다.
  • sigmoid와 같은 activation function을 사용하는 궁극적인 목적은 unlinearlity(비선형성)을 표현하기 위함입니다.
    • Logistic Regression은 출력을 확률로 해석할 수 있기 때문에, 결과가 Binary인 경우에 대한 예측에 있어서 더 정확한 정보를 제공할 수 있습니다.
    • Linear Regression과는 달리 Logistic Regression은 S자 형태의 Logistic Function을 사용하여, 더 복잡한 패턴을 가진 데이터에 대해서도 효과적인 Decision Boundary를 형성할 수 있습니다.
  • 0과 1사이의 수가 나오고, 0보다 작거나, 1보다 큰 수가 나오지 않는다는 점이 장점입니다.
  • 의사결정을 0과 1에 가깝게 하고, 중간지점이 매우 smooth하게 연결되어있습니다.

Smooth Switching Function

  • Smooth Tranisition : sigmoid 함수는 입력 값이 변함에 따라 출력값이 0과 1사이를 부드럽게 전환합니다. Linear Regression과는 달리 갑작스러운 변화가 아닌 점진적인 변화를 의미합니다.
  • S자 형태 : Sigmoid 함수의 S자 형태는 중간 지점 근처에서 가장 민감하게 반응합니다. 입력 값이 증가하면 출력 값이 0에서 1로 천천히 증가하다가 중간지점(임계값)에서 빠르게 증가하기 시작하고, 그 후 다시 천천히 증가하여 1에 도달합니다.

Probability Estimation

  • g1(x)=σ(wTx)=P(y=1x)g_1(x) = \sigma(w^Tx) = P(y=1|x)
    • Summation을 해서 sigmoid function을 통해 확률적으로 나타낸다는 것이 잘 이해되지 않아 실제 값을 넣고 예시를 적용해보았습니다.
    • Input x = [1, 3, 2], 가중치 벡터 w = [0.8, -0.5, 0.2]라고 할때, wTx=0.3w^Tx = -0.3, 이에 sigmoid 함수를 적용하면 약 0.426이 됩니다.

    • z 축에서 -0.3 위치에 있고, σ(z)\sigma(z) 축에서는 약 0.426의 값을 가집니다. 이는 해당 데이터 포인트가 클래스 1에 속할 확률을 약 42.6%로 예측하는 것을 의미합니다.
    • 결론은 sigmoid function을 통해 확률적으로 나타냄을 위한 것입니다. 이로써 나의 데이터 포인트가 어떤 클래스에 위치하는 지에 대한 값을 예측 가능합니다.
  • y=11+ez=11+ewTxy = \frac{1}{1+e^{-z}} = \frac{1}{1+e^{-w^Tx}}
    • odds = y1y\frac{y}{1-y}, 여기서 y는 클래스 1에 속할 확률을 나타내고, 1-y는 클래스 0에 속할 확률입니다.
    • odds는 특정 이벤트가 발생할 확률과 그 이벤트가 발생하지 않을 확률의 비율을 나타냅니다.
    • logit(y)=log(y1y)logit(y) = log(\frac{y}{1-y}), y의 값(클래스 1에 속할 확률)과 1-y(클래스 0에 속할 확률)의 비율인 odds에 자연로그를 취한 것입니다.
    • log(y1y)=wTxlog(\frac{y}{1-y}) = w^Tx
  • y=σ(wTx)=11+ewTxy =\sigma(w^Tx) = \frac{1}{1+e^{-w^Tx}}
  • Probablistic function f:X[0,1]f: X \rarr [0,1], where ff descriobes P(y=1x)P(y=1|x)
    즉, x가 주어졌을 때 class 1에 속할 확률을 나타내는 것입니다.
    • f(x;w)=σ(wTx)=P(y=1x;w)f(x;w) = \sigma(w^Tx) = P(y=1|x;w)
    • P(y=0x;w)=1P(y=1x;w)P(y=0|x;w) = 1 - P(y=1|x;w)
    • P(y=1x;w)12P(y=1|x;w) \geq\frac{1}{2}이면, class 1에 속한다고 생각하고, 그렇지 않으면 class 0에 속한다고 생각할 수 있다.

LogReg의 Decision Boundary 찾기

Boundary Decision은 두 클래스 간의 경계에서, 두 판별 함수 g1(x)g_1(x)g0(x)g_0(x)가 동일한 값을 가집니다.
g1(x)=σ(wTx)g_1(x) = \sigma(w^Tx), g0(x)=1σ(wTx)g_0(x) = 1 - \sigma(w^Tx)로 정의합니다.

  • 여기서, sigmoid function의 출력이 0.5인 지점은 z가 0일 때입니다. 여기서 z는 wTxw^Tx이고, 따라서 wTx=0w^Tx = 0을 의미합니다. 데이터 포인트가 클래스 1에 속할 확률과 클래스 0에 속할 확률이 정확히 동일합니다.

Training

  • dn=(xn,yn)d^n = (x^n, y^n), un=P(yn=1xn;w)=σ(zn)=σ(wTxn)u^n = P(y^n=1 |x^n;w) = \sigma(z^n) = \sigma(w^Tx^n)

    • P(yn=0xn;w)=1un=1σ(zn)P(y^n=0|x^n;w) = 1- u^n = 1 - \sigma(z^n)
  • L(d;w)=n=1NP(ynxn;w)=n=1N(un)yn(1un)1ynL(d; w) = \prod_{n=1}^NP(y^n|x^n;w) = \prod_{n=1}^N(u^n)^{y^n}(1-u^n)^{1-y^n}

    • 이 곱은 각 데이터 포인트에서 관찰된 레이블이 모델에 의해 예측된 확률에 따라 발생할 확률입니다. 이는 베르누이 분포를 따릅니다.
    • Likelihood를 직접 최적화하는 것은 계산상의 문제(numerical underflow)로 인해 어려울 수 있으므로, log-likelihood를 사용합니다. 로그를 취함으로써 곱셈이 덧셈으로 변환되어 계산기 간단해지고, 최적화 과정이 수치적으로 안정화됩니다.
  • xnσ(wTx)=ux^n \rarr \sigma(w^Tx) = u

  • xnσ(wTxn)=unx^n \rarr \sigma(w^Tx^n) = u^n

  • (d;w)=logL(d;w)=logn=1NP(ynxn;w)\ell(d;w) = \log L(d;w) = \log\prod_{n=1}^NP(y^n|x^n;w)
    =logn=1N(un)yn(1un)1yn=\log\prod_{n=1}^N(u^n)^{y^n}(1-u^n)^{1-y^n}
    =n=1Nyn(logun)+(1yn)log(1un)=\sum_{n=1}^Ny^n(\log u^n) + (1-y^n)\log(1-u^n)

    • log-likelihood를 최대화하는 가중치 w를 찾는 것입니다.
  • log-likelihood 미분 :

    • wj(d;w)=n=1Nxn(ynσ(wTxn))\frac{\partial }{\partial w_j}\ell(d;w) = \sum_{n=1}^N x^n(y^n -\sigma(w^Tx^n))
    • 미분값이 0을 만드는 최적의 w를 찾아야 합니다.
  • Gradient Ascent : 주어진 데이터셋에 대한 모델의 매개변수를 최적화하여 log-likelihood의 최대값을 찾는 데 사용됩니다.

    • wt=wt1+αw(d;w)wt1w^t = w^{t-1} + \alpha\nabla_w\ell(d;w)|_w{^{t-1}}
  • Cost function

    • Cost J(w,d)=1N(d;w)J(w,d) = -\frac{1}{N}\ell(d;w)
      = 1Nn=1N[ynlogun+(1yn)log(1un)]-\frac{1}{N}\sum_{n=1}^N[y^n\log u^n + (1-y^n)\log(1-u^n)]
  • Gradient Descent with J(w,d)J(w,d)

    • wt=wt1αwJ(d;w)wt1w^t = w^{t-1} - \alpha\nabla_wJ(d;w)|_w{^{t-1}}
      = wt=wt1αw(1N(d;w))wt1w^t = w^{t-1} - \alpha\nabla_w{(-\frac{1}{N}}\ell(d;w))_w{^{t-1}}
      = wtwt1α(1Nn=1Nxn(ynσ(wTx)))wt1w^t \larr w^{t-1} - \alpha(-\frac{1}{N}\sum_{n=1}^Nx^n(y^n - \sigma(w^Tx)))_w{^{t-1}}
  • Online Learning Algorithm(SGD)

    • Jonline(w,d(n))=[y(n)log(μ(n))+(1y(n))log(1μ(n))]J_{\text{online}}(w, d^{(n)}) = -[y^{(n)} \log(\mu^{(n)}) + (1 - y^{(n)}) \log(1 - \mu^{(n)})]
    • 한 번에 하나의 데이터 포인트 또는 작은 배치를 사용하여 매개변수를 업데이트합니다.
    • SGD에서는 각 업데이트에서 단일 데이터 포인트에 대한 손실만 고려하므로, 평균을 취할 필요가 없습니다.
    • 대신, 각 스텝에서 즉시 매개변수를 업데이트하여 더 빠르게 학습하고, 더 빠른 반복을 통해 최적화합니다.
    • wtwt1α(ynf(xn,wn1))xnw^t \larr w^{t-1} - \alpha(y^n - f(x^n, w^{n-1}))x^n
  • Regularization

    • Ridge(L2) \rarr make unnecessary w close to zero. not zero.

      • J(w,D)=logP(Dw)+λw22J(w, D) = -\log P(D|w) + \lambda \|\mathbf{w}\|_2^2
        = [n=1Ny(n)log(σ(wTx(n)))+(1y(n))log(1σ(wTx(n)))]+λw22]-[\sum_{n=1}^N y^{(n)} \log(\sigma(w^Tx^{(n)})) + (1 - y^{(n)}) \log(1 - \sigma(w^Tx^{(n)}))] + \lambda \|\mathbf{w}\|_2^2 ]
      • 가중치의 크기를 제한하여 각 특성의 영향력을 줄이는 효과가 있습니다.
    • Lasso(L1)

      • J(w,D)=logP(Dw)+λw1J(w, D) = -\log P(D|w) + \lambda \|\mathbf{w}\|_1
        = [n=1Ny(n)log(σ(wTx(n)))+(1y(n))log(1σ(wTx(n)))]+λw1]-[\sum_{n=1}^N y^{(n)} \log(\sigma(w^Tx^{(n)})) + (1 - y^{(n)}) \log(1 - \sigma(w^Tx^{(n)}))] + \lambda \|\mathbf{w}\|_1 ]
      • 가중치 중 일부를 정확히 0으로 만들어 해당 특성을 모델에서 제외시키는 효과가 있으며, 이를 통해 feature selection이 자연스럽게 이루어집니다.
    • Elastic Net(L1 + L2)

      -J(w,D)=logP(Dw)+λ1w1+λ2w22J(w, D) = -\log P(D|w) + \lambda_1 \|\mathbf{w}\|_1 + \lambda_2 \|\mathbf{w}\|_2^2

      • Lidge와 Lasso의 접근 방법을 결합한 Regularization 기법입니다. Elastic Net은 loss function에 가중치 벡터의 L1-norm과 L2-norm을 동시에 더하여, 두 정규화 기법의 장점을 모두 취합니다.

✅ 헷갈렸던 부분

n=1Ny(n)log(σ(wTx(n)))+(1y(n))log(1σ(wTx(n)))\sum_{n=1}^N y^{(n)} \log(\sigma(w^Tx^{(n)})) + (1 - y^{(n)}) \log(1 - \sigma(w^Tx^{(n)}))

  • 여기에서 wTw^Txnx^n을 연산하는 게 이해가 되지 않았다. 왜냐하면, xnx^n은 데이터 포인트 중 하나이기 때문이다. 다시 생각해보니 데이터 포인트 안에는 3차원 특성이 있다고 가장하면 w vector 역시 3차원으로 나올 것이다.
  • w=[w1,w2,w3]w = [w_1, w_2, w_3]
  • xn=[x1n,x2n,x3n]x^n = [x_1^n, x_2^n, x_3^n]
  • wTxn=w1x1n+w2x2n+w3x3nw^Tx^n = w_1x_1^n + w_2x_2^n + w_3x_3^n
  • 결국 데이터 포인트의 각 feature들을 담고 있는 것이 xnx^n이었고, 그 feature 별로 각 w를 학습시켜 나가는 과정이다. 이것을 잊지말자.!

λ\lambda의 값이 크면 클수록 모든 가중치가 더 작아지는 것인가?

  • 가중치 값이 비교적 작은 값의 값이 더욱 줄어들게 됩니다.

  • wJ(w)=wLoss(w)+2λw\nabla_w J(w) = \nabla_w \text{Loss}(w) + 2\lambda w

  • w:=wαwJ(w)w := w - \alpha \nabla_w J(w)

  • w:=wα(wLoss(w)+2λw)w := w - \alpha (\nabla_w \text{Loss}(w) + 2\lambda w)

  • λ\lambda값이 클수록, 가중치 업데이트 과정에서 가중치 w에 부과되는 패널티가 커지고, 이는 각 반복에서 가중치 w를 더 크게 감소시킵니다. 결과적으로, 모델은 더 작은 가중치 값을 가지게 되어 복잡성이 감소하며, 이는 overfitting을 방지하는 데 도움이 됩니다.

  • 단순히 말해서, λ\lambda 값이 크면 비용 함수의 정규화 항이 모델의 총 비용에 더 크게 기여하게 되므로, 가중치의 크기를 줄이는 것이 전체 비용을 줄이는 데 더 중요해집니다. 가중치가 줄어드는 것은 모델이 데이터의 노이즈에 덜 민감하게 되어, 모델이 더 일반적인 패턴을 학습하도록 유도합니다.

참고자료

https://iq.opengenus.org/decision-boundary/
https://www.javatpoint.com/linear-regression-vs-logistic-regression-in-machine-learning

profile
Viel Erfolg!

0개의 댓글