BuNa_
IT Story
BuNa_
전체 방문자
오늘
어제
  • 분류 전체보기 (117)
    • CS (14)
      • 운영체제 (8)
      • 네트워크 (0)
      • Design Pattern (1)
      • OOP (4)
    • 대외활동 (24)
      • 우아한테크코스 (14)
      • DND 동아리 (4)
      • UMC 동아리 (5)
      • 해커톤 (1)
    • Android (29)
      • MVVM (2)
      • 스터디 (11)
      • Compose (3)
      • Unit Test (1)
    • Project (5)
      • 어따세워 (5)
      • DnD 과외 서비스 (0)
    • Programming (11)
      • Kotlin (4)
      • 파이썬 (7)
    • Git (1)
    • 인공지능 (22)
    • 백준 (8)
    • 기타 (3)
      • IntelliJ (1)
      • 일상 (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 안드로이드
  • 컴공선배
  • 우테코
  • 외부 단편화
  • UMC
  • K-means
  • k-means++
  • 다이나믹 프로그래밍
  • 원시값 포장
  • External fragmentation
  • 우테코 5기
  • RecyclerView
  • Baekjoon
  • 우아한테크코스
  • 셀레니움
  • 인공지능 분류
  • ViewModel
  • 객체지향 생활체조
  • 파이썬
  • MVVM
  • 인공지능
  • 백준
  • 어따세워
  • Android
  • 우테코 프리코스
  • 선형회귀
  • Compose
  • Ai
  • 운영체제
  • 딥러닝

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BuNa_

IT Story

[인공지능][개념] 로지스틱 회귀(Logistic Regression)는 무엇이며, 시그모이드(Sigmoid) 함수는 왜 사용하는 것일까?
인공지능

[인공지능][개념] 로지스틱 회귀(Logistic Regression)는 무엇이며, 시그모이드(Sigmoid) 함수는 왜 사용하는 것일까?

2021. 5. 13. 16:09

 

 

로지스틱 회귀 (Logistic Regression)


 

 

 

로지스틱 회귀(Logistic Regression)는 사건(Event)이 발생할 가능성을 예측하는 데 사용하는 모델이다.

주로 특정 조건(환경)이 주어졌을 때, 사건이 일어는지, 일어나지 않는지에 대해 다루곤 한다.

 

 

로지스틱 회귀(Logistic Regression) 모델의 그래프
로지스틱 회귀(Logistic Regression) 모델의 그래프

 

위 그래프는 로지스틱 회귀를 그래프로 나타낸 것이다.

X축에는 (조건을 모두 고려하였을 때의) 점수, Y축으로 결과가 나타나 있는데,

결과를 보면 알다시피 0과 1로만 이루어진 모습을 확인할 수 있을 것이다.

즉, 사건이 일어나고(1) 일어나지 않고(0)를 예측하는 것이 로지스틱 회귀 모델의 목표라는 뜻이다.

 

 

사례를 들어 더 구체화해보도록 하자.

 

  • 화재가 발생했을 때, 산소가 X만큼 부족해지면 '사망한다 or 사망하지 않는다.'
  • 교통사고가 발생했을 때, 충격량이 X일 때 '중상을 입는다 or 입지 않는다.'
  • 타이타닉에서 사고가 벌어졌을 때, X라는 조건이 주어지면 '사망한다 or 사망하지 않는다.'

 

 


 

 

이처럼 로지스틱 회귀 모델은 여러 조건을 부합하여,

결과를 0(사건이 발생하지 않음)과 1(사건이 발생함)로 출력하는 역할을 수행한다.

이제, 로지스틱 회귀모델에서 사용하는 시그모이드(Sigmoid) 함수에 대해 알아보자!

 

 

시그모이드(Sigmoid) 함수


 

로지스틱 회귀모델(Logistic Regression)에서 사용하는 활성화함수(Activation Function) '시그모이드(sigmoid) 함수'

 

이 식은 로지스틱 회귀모델에서 활성화 함수로 사용하는 '시그모이드(Sigmoid) 함수'이다.

그냥 봤을 땐, 다소 낯설게 느껴질 수 있기에 코드와 그래프를 통해 설명하겠다.

 

 

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(-6, 6, 0.1)
phi = 1 / (1 + np.exp(-x))

plt.plot(x, phi)
plt.xlabel('x')
plt.ylabel('phi')

plt.show()

 

해당 코드는 시그모이드 함수를 구현한 코드이다.

위 코드를 입력하고 실행하면 아래와 같은 코드가 그려질 것이다.

 

 

S자 모양의 그래프로 표현된 시그모이드(Sigmoid) 함수
S자 모양의 그래프로 표현된 시그모이드(Sigmoid) 함수

 

이렇게 시그모이드 함수를 그래프로 표현하면, 위 그래프와 같은 S자 모양이 그려진다.

시그모이드 함수 식에 x값으로 0을 대입하면, 정확히 0.5라는 결과로 계산되는데,

이를 토대로, x가 0보다 크면 y는 0.5를 기준으로 긍정(사건이 발생) 결과가 나타나고,

x가 0보다 작다면, y는 0.5를 기준으로 부정(사건이 발생하지 않는) 결과가 나타날 것이라는 것을 의미한다.

경우에 따라 y가 정확히 0.5일 때에는 긍정이라고 보는 경우도 있고, 부정으로 보는 경우도 있다.

 

 

 

그렇다면, 왜 시그모이드 함수를 사용해야 하는 것인가?

 

 

단순히 선형회귀 모델을 사용하지 않고, 굳이 시그모이드 함수를 사용해야 하는 이유는

사건이 발생하고, 발생하지 않는 결과를 선형으로 표현하게 됐을 때 문제점이 발생하기 때문이다.

 

 

분류문제에서 사건의 발생 여부를 선형으로 표현한 그래프
사건의 발생 여부를 선형으로 표현한 그래프

 

위 그림은 시그모이드 함수를 사용하지 않고, 선형으로만 사건의 발생 여부를 표현했을 때의 그래프이다.

대부분 x값이 5보다 크면 사건이 발생하고, 5보다 작으면 사건이 발생하지 않는다고 나타내고 있다.

 

하지만 x가 9 임에도 불구하고, 사건이 발생하지 않아, 해당 경우일 때의 값을 그래프에 추가했다고 가정해보자.

기존에는 5보다 크다면 사건이 발생할 것이라고 예측했던 모델에 큰 문제가 발생하게 될 것이다.

분명 5보다 큰 값임에도 불구하고, 사건이 발생하지 않았기 때문이다.

 

즉, 새로운 값의 추가가 기존 분류 모델에 큰 영향을 미치게 되는 문제점이 발생한다.

 

 

'시그모이드(sigmoid) 함수'의 식

 

이런 문제점을 해결하기 위해, 도입된 식이 바로 시그모이드 함수이다.

그래프를 직선으로 표현하는 것 대신, 완만한 S자형 곡선으로 나타낼 수 있다면 위와 같은 상황을 방지할 수 있기 때문이다.

기존의 선형회귀가 아닌 분류 문제에서 보다 유용하게 사용할 수 있도록 로지스틱 회귀모델에 시그모이드 함수를 적용하게 된 것이다.

 

 

다음 글에서는 로지스틱(Logistic) 회귀 모델을 사용하여,

타이타닉에서 사고가 일어났을 때, 내가 특정 조건에 있다면 과연 살아남을 수 있을지에 대해 예측해보는 모델을 만들어보며 조금 더 구체적으로 공부해보는 시간을 갖도록 해보자.

 

 

 

전체 소스코드는 아래 링크를 통해 참조할 수 있다.

 

전체 소스 코드 : 

https://colab.research.google.com/drive/1sAVoWmdIV6VUUBYQExgEWOU_TTzcQggY

 

 

(이해가 다소 힘들거나, 틀린 부분이 있다면 댓글 부탁드리겠습니다! 😊)

💖댓글과 공감은 큰 힘이 됩니다!💖

 

저작자표시 비영리 변경금지 (새창열림)

'인공지능' 카테고리의 다른 글

[인공지능][실습] 로지스틱 회귀(Logistic Regression) - 붓꽃 데이터(Iris Data)를 사용하여 3종류의 꽃을 분류해보자  (1) 2021.05.16
[인공지능][실습] 로지스틱 회귀(Logistic Regression) - 나는 과연 타이타닉 침몰에서 살아남을 수 있었을까?  (0) 2021.05.14
[인공지능][실습] 다항회귀(Polynomial Regression)와 다중선형회귀(Mutiple Linear Regression)를 활용하여 생선의 무게를 예측해보자  (1) 2021.05.12
[인공지능][개념] 다항회귀(Polynomial Regression)와 다중선형회귀(Mutiple Linear Regression) + 규제(Regularization)에 대해 알아보자  (0) 2021.05.11
[인공지능][실습] 선형회귀(Linear regression)를 이용하여 생선의 무게를 예측해보자  (4) 2021.05.10
    '인공지능' 카테고리의 다른 글
    • [인공지능][실습] 로지스틱 회귀(Logistic Regression) - 붓꽃 데이터(Iris Data)를 사용하여 3종류의 꽃을 분류해보자
    • [인공지능][실습] 로지스틱 회귀(Logistic Regression) - 나는 과연 타이타닉 침몰에서 살아남을 수 있었을까?
    • [인공지능][실습] 다항회귀(Polynomial Regression)와 다중선형회귀(Mutiple Linear Regression)를 활용하여 생선의 무게를 예측해보자
    • [인공지능][개념] 다항회귀(Polynomial Regression)와 다중선형회귀(Mutiple Linear Regression) + 규제(Regularization)에 대해 알아보자
    BuNa_
    BuNa_
    안드로이드 개발자를 향해 달리고 있는 공대생입니다! 🧑 Android, Kotlin, Java, Python 등 학습하고 있는 내용과 프로젝트를 주로 업로드하고 있습니다. 지적과 조언은 언제나 환영입니다!😊 github : https://github.com/tmdgh1592

    티스토리툴바