728x90
반응형

 

들어가기에 앞서


  • 논리 회귀 (Logisitc regression) : 입력값과 범주 사이의 관계를 구하는 것으로, 선형 회귀로 풀 수 없는 문제를 풀 수 있다.
  • 전처리 (pre-processing) : raw(가공되지 않은) 데이터는 단위와 분포가 제각각이라 바요 사용하기가 어렵다. 데이터를 사용해 모델을 학습시키기 위해 데이터를 가공하는 과정을 전처리라고 하는데, 정확도에 상당한 영향을 끼친다.

이진 논리 회귀 (Binary Logistic regression)


  • 출력값을 0과 1이라는 이진 클래스(Binary class)로 나누어 문제를 푸는 방법
  • 예시 - 0이면 미이수(fail), 1이면 이수(pass)x축이 공부 시간이고 y축인 그래프로, 좌측이 선형 회귀이고 우측의 S-커브 형태의 그래프가 논리 회귀 그래프이다. 우측 그래프는 Logistic function(=Sigmoid function)을 사용한 것이다.
    • 이수 확률을 0(미이수)과 1(이수) 사이의 숫자로 나타낼 수 있게 된다.
    • 입력값으로 양수, 음수 등 어떤 값이든 받을 수 있지만 출력 결과(y)는 항상 0과 1 사이 값이 나오게 된다.
  • 머신러닝에선 결과가 명확히 나뉘기보다는 확률적으로 나타난다.
  • ex) 15시간 공부했을 때 pass할 확률 약 80%
  • 명확한 결과로 나누고 싶다면 임계치(Threshold, 그림에서 초록색 점선)를 설정해 임계치를 넘었냐 넘지 못했냐를 기준으로 결과를 나눠준다.
  • 확률 예측이 중요할 땐 임계치를 높일 수 있다. 이와 같이 임계치의 값은 자율적이다.
  • Sigmoid fuction / Logistic function : 위 그림과 같은 S-커브를 함수로 표현한 것

Sigmoid function


  • 선형 회귀는 직선이기 때문에 출력값으로 연속적인 값이 나온다.
    1. x라는 입력값이 들어온다.
    2. 선형 회귀를 통해 어떤 출력값이 나온다.
    3. 시그모이드 함수를 거쳐 해당 출력값을 우리가 원하는 예측값(0~1)에 따라 확률로 나타내준다.논리 회귀의 실질적인 계산은 선형 회귀와 동일하다. 다만 sigmoid function을 더해 출력값이 0과 1 사이의 값이 되도록 할 뿐이다.
  • 수식보다는 함수의 모양에 집중 ⇒ x값(입력값)이 음수 쪽으로 가면 0에 가까운 값이 되고, 양수 방향으로 가게 되면 1에 가까운 값을 출력한다. 즉, 시그모이드 함수를 통과하면 0에서 1 사이 값이 출력된다.

이진 논리 회귀의 가설과 손실 함수(⇒ BinaryCrossEntropy, binary_crossentropy)


  • 가설의 수식 : $H(x) = \frac{1}{1 + e^{-(Wx + b)}}$ (분모의 지수 자리에 선형 회귀 함수 삽입)
  • 손실 함수 수식이 엄청 어려운데, 수식보다는 개념 이해하기!
  • logistic regreession도 선형 회귀때와 마찬가지로 손실 함수를 최소화하는 것이 목표!
    • logistic regression의 값은 결국 0이나 1 사이의 값으로 나와야 하기 때문에, 정답 라벨이 0일 경우 가설로부터 나온 예측값이 0에 가까워야 한다. 즉, 예측 라벨이 0일 때 확률이 1(=100%), 1일 때 확률이 0(=0%)가 되도록 만들어야 한다.
    • CrossEntropy : 이때 확률분포그래프를 그려주는 손실 함수손실함수의 형태가 노란색과 같을 때 정답과 정반대로 1일 확률이 100%, 0일 확률이 0%가 돼버린다. 노란 그래프를 빨간 그래프로 바꿔주는 것이 CrossEntropy 함수의 역할이다.출처 링크. 가로축이 확률이고 세로축이 cost일 때의 그래프 모양.
    • cost가 낮을수록 정확도가 높다. 왼쪽 그래프에서 cost가 낮아질수록 확률이 1에 가까워진다는 것은 정답이 1이라는 것이다.

💡 Keras에서 이진 논리 회귀는 binary_crossentropy 손실 함수를 사용한다.

다항 논리 회귀 (Multinomial logistic regression)와 One-hot encoding


  • 다항 논리 회귀 : 다항 분류에 속하며, 세 개 이상의 클래스[라벨]로 구분하는 문제를 풀 때 사용 ex) 성적 분류
  • One-hot encoding : 다항 분류 문제에서 라벨을 0과 1을 사용해 컴퓨터 친화적인 형태로 변환해준다.
    1. 클래스[라벨]의 개수만큼 배열을 0으로 채운다.
    2. 각 클랙스의 인덱스 위치를 정한다.
    3. 각 클래스에 해당하는 인덱스에 1을 넣는다.
    성적 클래스[라벨] One-hot encoded
    A 0 [1, 0, 0, 0, 0]
    B 1 [0, 1, 0, 0, 0]
    C 2 [0, 0, 1, 0, 0]
    D 3 [0, 0, 0, 1, 0]
    F 4 [0, 0, 0, 0, 1]

다항 논리 회귀 - Softmax 함수


  • 이진 논리 회귀에선 Sigmoid를 통해 출력값이 0과 1 사이의 값이 나오도록 했다.
  • 다항 논리 회귀에선 세 개 이상의 라벨을 구분해야 하므로 Sigmoid를 이용해 0과 1로만 구분할 수가 없다. 그래서 다항 논리 회귀에선 Softmax 함수를 사용해준다.
  • Softmax 함수 : 예측 결과를 확률(=Confidence)로 표현하기 위해 선형 모델에서 나온 결과(Logit)를 모두 더하면 1(=100%)이 되도록 만들어준다.
  • 머신러닝 알고리즘으로 나온 결과값 2.0/1.0/0/1을 컴퓨터가 해석하기 쉽게 “확률값”처럼 보이도록 Softmax 함수를 사용해 각각 가중치를 주어 0.7/0.2/0.1로 변환한다. 이 값들과 One-hot encoding 된 정답인 1.0/0.0/0.0 간의 차이가 최소여야만 한다.

다항 논리 회귀 - 손실 함수(CrossEntropy, categorical_crossentropy)


  • x축이 라벨이고 y축이 확률인 그래프 (단항 논리 회귀와 同)
    • 정답값은 One-hot encoding 돼 빨간색의 확률분포 그래프가 된다. x축 항이 여러개가 됐을 뿐 단항 논리 회귀 때(→이진 논리 회귀 때)와 동일하다.
    • 따라서 확률분포의 차이를 최소화해야 한다는 것도 동일하다. 이 때도 역시 CrossEntropy를 통해 노란색 그래프를 빨간색 크래프처럼 만들어 준다.

단항 논리 회귀와 다항 논리 회귀 요약


  1. 단항 논리 회귀에서는 Sigmoid를 써서 출력값을 0과 1로 나눈다. 다항 논리 회귀에서는 Softmax를 통해 예측값을 확률 형태로 만든다.
  2. 다항 논리 회귀의 경우 One-hot encoding을 통해 라벨의 0과 1의 형태로 만들어준다.
  3. CrossEntropy를 이용해 확률 분포 그래프의 차이를 계산해 최소화한다. ⇒ binary_crossentropy in 단항 / categorical_crossentropy in 다항

다양한 머신러닝 모델


💡 문제마다 유리한 방식과 모델이 다르므로 적절한 모델을 찾는 것이 중요하다.

  1. Support vector machine (SVM)
    • feature(특징) : 각 그래프의 축(그림에서 ‘귀의 길이’와 ‘충성심’)으로, feature를 추가해 더 고차원의 그래프를 그릴 수 있다.
    • hyper plane : In geometry, a hyperplane is a subspace whose dimension is one less than that of its ambient space. / a hyperplane is the linear transformation kernel of any nonzero linear map from the vector space to the underlying field. / 클래스를 구분해주는 선
    • support vector : 엔지니어가 구분을 위해 그은 선과 강아지와 고양이에서 그인 선 / Support vectors are data points that are closer to the hyperplane and influence the position and orientation of the hyperplane.
    • margin : support vectors 間 거리
    • margin이 클수록 분류기(classifier)의 성능이 좋은 것이다.
    • 예외 발생시 feature를 추가하는 방식으로 해결한다. 따라서 feature가 늘어날수록 성능이 좋아진다.
  2. k-Nearest Neighbors (KNN)
    • 비슷한 특성을 가진 개체끼리 군집화하는 알고리즘
    • 새로운 개체가 등장했을 때 일정 거리 안에 존재하는 다른 개체의 개수(k)를 보고 해당 개체의 위치를 결정한다.
  3. decision tree (의사결정나무)
    • 예, 아니오를 반복하며 추론하는 방식
  4. Random forest출처: http://www.joics.org/gallery/ics-1467.pdf
    • 의사결정나무를 여러개 합친 모델 (trees → forest)
    • 각각의 의사결정나무들이 결정한 결과를 두고 투표(Majority votin)하는 방식

전처리 (Preprocessing)


  • 정의 : 단위나 범위의 통합과 같은 데이터 정제 작업
  • null 값이 있는 행 삭제, 정규화(Normalization), 표준화(Standardization) 등의 작업 有
  • 아웃라이어 : 현실에서 발생할 수 있는 예외적인 데이터 삭제
  • 정규화 (Normalization)
    • 데이터가 0과 1 사이의 범위를 갖도록 만든다.100점 만점에 500점 만점에
      실제 점수 50점 50점
      정규화 점수 0.5점 0.1점
  • 표준화(Standardization) - 수식 생략
    • 데이터의 분포를 평균이 0이고 표준편차가 1인 표준정규분포로 만들어준다.→ 데이터의 중심이 0에 맞춰지게 된다. (Zero-centered)→ 표준화를 하면 학습 속도(최저점 수렴 속도)가 빠르고, Local minimum의 굴곡이 작아지기 때문에 Local minimum에 빠질 가능성도 적어진다.
    • → 표준편차를 1로 맞춰주면 정규화(Standardization) 된다.
  •  
반응형

'Programming > TIL and WIL' 카테고리의 다른 글

221015 TIL - 머신러닝 네모 그려주는 좌표  (0) 2022.10.18
221013 Today I Learned (TIL)  (1) 2022.10.13
221011 Today I Learned (TIL)  (0) 2022.10.11
221010 Weekly I Learned (WIL)  (0) 2022.10.11
221009 Today I Learned (TIL)  (0) 2022.10.09

+ Recent posts