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
- 선형 회귀는 직선이기 때문에 출력값으로 연속적인 값이 나온다.
- x라는 입력값이 들어온다.
- 선형 회귀를 통해 어떤 출력값이 나온다.
- 시그모이드 함수를 거쳐 해당 출력값을 우리가 원하는 예측값(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을 사용해 컴퓨터 친화적인 형태로 변환해준다.
- 클래스[라벨]의 개수만큼 배열을 0으로 채운다.
- 각 클랙스의 인덱스 위치를 정한다.
- 각 클래스에 해당하는 인덱스에 1을 넣는다.
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를 통해 노란색 그래프를 빨간색 크래프처럼 만들어 준다.
단항 논리 회귀와 다항 논리 회귀 요약
- 단항 논리 회귀에서는 Sigmoid를 써서 출력값을 0과 1로 나눈다. 다항 논리 회귀에서는 Softmax를 통해 예측값을 확률 형태로 만든다.
- 다항 논리 회귀의 경우 One-hot encoding을 통해 라벨의 0과 1의 형태로 만들어준다.
- CrossEntropy를 이용해 확률 분포 그래프의 차이를 계산해 최소화한다. ⇒ binary_crossentropy in 단항 / categorical_crossentropy in 다항
다양한 머신러닝 모델
💡 문제마다 유리한 방식과 모델이 다르므로 적절한 모델을 찾는 것이 중요하다.
- 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가 늘어날수록 성능이 좋아진다.
- k-Nearest Neighbors (KNN)
- 비슷한 특성을 가진 개체끼리 군집화하는 알고리즘
- 새로운 개체가 등장했을 때 일정 거리 안에 존재하는 다른 개체의 개수(k)를 보고 해당 개체의 위치를 결정한다.
- decision tree (의사결정나무)
- 예, 아니오를 반복하며 추론하는 방식
- 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점
- 데이터가 0과 1 사이의 범위를 갖도록 만든다.100점 만점에 500점 만점에
- 표준화(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 |