TIL 선형회귀와 논리회귀
2023.05.17 수
딥러닝 과정 중 머신러닝부터 배우고 있습니다.
선형회귀

이거죠 공부를 많이 할 수록 성적이 높아진다.
하지만 다 그런건 아니죠, 그저 추측일 뿐입니다.
우리는 그렇기에 많은 데이터를 구해 이것을 확인합니다, 정말 공부를 많이 하면 성적이 오를까? 공부시간을 인풋데이터로 넣고 아웃풋데이터로 공부시간을 받는 것을 표현하면
H(x) = Wx + b 이렇게 표현합니다 (W는 가중치, b는 편향)
아마 많은 데이터들을 실제로 대입하면 저렇게 빤듯한 직선을 나오지 않을 것입니다, 가설에 근접한 형태를 만들기도 하고 전혀 다른 형태를 만들기도 할 것입니다, 이러한 가설과 실제 값의 차이를 cost(손실함수)라고 하며 가설에서 정답값을 빼고 제곱하여 평균을 하여 구합니다. 즉, cost가 작아야 잘 학습되었다 볼 수 있습니다.
다중 선형회귀는 성적에 영향을 미치는 요소를 추가하는 것입니다. 예를 들어 공부시간, 게임시간이 성적에 어떤 영향을 주는지 구하기 위해서는 다중 선형회귀를 사용해야 겠죠
손실함수를 최소화하기 위해 경사하강법을 사용할 수 있다 예측값과 실제값의 오차를 최소화하기 위해 사용되며 Learning rate를 사용하여 한 번에 얼마만큼 이동할 수 있는지를 정해준다.
정확하게 이해하기 위해서 미분의 개념을 알고 수학적으로 들어가야하지만, 계산은 컴퓨터가 하기에 우리가 할 일은 Learning rate을 조절하고 알맞은 모델을 사용하여, cost값을 보고 그 값을 줄이기위해 학습환경을 만들어주는 일을 해야한다.
선형회귀가 연속된 값을 출력하여 최대한 예측값에 맞춘다면 논리회귀는 이분법적이다.
선형회귀에서 공부 1시간을 하면 성적이 30점 2시간을 하면 성적이 40점 이런 형태로 예측값을 만들어 그것에 가장 가까워지려고 한다면, 논리회귀는 시험 통과/불통과를 구분하는데 사용된다.이것을 표현하는데 선형회귀를 사용하여 공부시간이 많을수록 통과률이 높아진다고 표현하는 것은 이상하다고 강의에 나왔지만...

솔직히 왜 이상한지는 모르겠다.
이것을 논리회귀로 표현하면 다음과 같은 그래프로 나타낸다.

공부시간이 많을 수록 통과의 확률이 높아진다.
실제 환경에서 직선으로 모든게 이루어지지않습니다, 곡선으로 현상을 나타내는 경우가 많죠
이런 S자 곡선의 형태를 로지스틱 함수라고 하고딥러닝에서는 시그모이드 함수라고 합니다.

시그마이드함수는 입력값이 음수면 0에 가깝고 입력값이 양수면 1에 가깝게 표현됩니다.
선형회귀와 마찬가지로 손실을 나타내는 것이 있는데 그것을 Crossentropy라고 합니다.
다향논리회귀는 통과점이 여러개입니다.성적으로 치면 A,B,C고 몸무게도 치면 경도, 고도 비만 등 으로 표현가능합니다.이를 표현하기위해서는 원-핫 인코딩을 사용할 수 있습니다.클래스(라벨)가 3개라 치면(A,B,C)A [1,0,0]B[0,1,0]C[0,0,1] 이런 식으로 나타냅니다 클래스가 네개라면 [0,0,0,0]에 각 자리를 주면 되겠죠?
전처리는 불필요한 행을 지우거나(열에 null값이 있는), 정규화, 표준화를 진행하는 것을 의미합니다.변수에 null값이 담기면 학습에 오류가 발생하니 해당 행은 삭제되어야합니다.정규화는 변수의 값을 0~1사이로 받는 것을 의미합니다.500점 만점인 시험에서 50점을 받는 것과 100점 만점인 시험에서 50점을 맞는 것은 분명 차이가 있습니다, 그러니 이러한 경우 정규화를 통해 0~1사이의 값을 받아 표현합니다.표준화는 데이터의 분포를 정규분포로 바꿔줘 데이터의 중심을 0으로 바꿔줍니다
표준화를 시키게 되면 일반적으로 학습 속도(최저점 수렴 속도)가 빠르고, Local minima에 빠질 가능성이 적습니다.
(좋은 건 알겠지만, 개념을 이해한 것이 조금 애매합니다)
생각한 부분
개념도 알겠고 실습과 과제도 큰 무리없이 진행했지만, 정확하게 어떻게 설명해야할지 모르겠습니다.
여튼 목적은 cost를 줄이고 최대한 1에 가까운 결과를 만들게 반복학습 시키는 것이고 이를 위해 전처리를 거치고 알맞은 옵티마이저를 적용하고(경사하강법,SGD,Adam), lr을 조절하며 실행횟수를 조절하여 주어야 한다는 것은 이해했습니다.