2024. 2. 1. 13:57ㆍ학습/머신러닝

3단원 목차 - 로지스틱회귀 시작
1. 로지스틱회귀 전 롤 베이스
2. 로지스틱회귀 이론
3. 로지스틱회귀 평가지표
4. 로지스틱회귀 실습
01 머신러닝 헷갈리지 마라고 미리 정리

02 로지스틱회귀 전에 타이타닉 살펴보기




03 로지스틱회귀 이론
타이타닉 데이터 셋을 이용해서 여자가 생존률이 더 높을거고 남자는 낮을 거라고 뇌피셜로 가정하고 정확도를 계산해봤다. 근데 좀 더 데이터 사이언틱하게 ( )를 계산해보려고 한다. x는 "연속형 변수"이고 y는 이진수 중에 특정값이(우리는 1)이 될 *확률이 보편적이라 이렇게 설정했다. 데이터의 산점도 그래프를 보면 선형회귀식이 잘 맞지 않는다는 것을 알 수 있다. 눈으로도 알 수 있지만 또, 숫자값을 예측하는거라 데이터가 위아래로 튀는데 우리는 원하는 확률 범주가 (0보다 크고 1보다 작은 값) 있기 때문에 맞지 않는다. 좀 더 스무스하게 곡선을 그린다면? 모든 데이터를 포함한 선형 그래프가 만들어질 것 같다. = 선형회귀식에서 y값만 변형해준다.

y값 변형을 시키고 싶으면 "오즈비"라는 개념을 알아야 이해할 수 있다. 오즈비란 승산비와 같은 단어로 도박사들이 자주 쓰는 개념이다. 성공 확률이 80%(실패는 20%)라고 할 때, 80% / 20% = 4라는 값이 나오면서 이는 1번 실패하면 4번 성공할 수 있는 의미를 가진다. 오즈비라는 개념을 공식화 하면 P/1-P인데 이걸 그대로 가져가면 그래프가 갑자기 급격하게 상승하는 모양으로 처음 그렸던 선형회귀 1차방정식 모양보다 못하게 된다. 여기에 log를 씌워주면 우리가 원하는 곡선 모양을 띄게 된다. log는 해당 값을 낮춰주는 역할을 한다. 만들어봤더니 우리가 원하는 데이터 셋에 입혀도 될 만큼 비슷하게 그려진다. 바로 차용한다.

↓ 변형

Logit 그래프라는 개념으로 만들었다. 처음 만들었던 것보다 선형적이면서 데이터를 잘 설명할 수 있게 됐다. 우린 로짓 우변에 선형회귀를 가져올거라 로지스틱+회귀라고 불리게 된다. 이걸 타이타닉 그래프로 본다면 데이터당 이사람이 생존할 확률을 알려주는 그래프가 된다. 100% 되는 확률은 없다. 근데 자료를 보다보니 0.51이라는 y값을 가진 사람은 생존하는 걸까 마는걸까? 우린 여기에 기준을 만들어 준다. 로지스틱은 "확률"을 전해주는 것이고 "기준"을 정해주는 것은 임곗값이다. 일반적으로 0.5로 다 임곗값을 갖고 로지스틱을 계산해준다.


*확률은 일반적으로 0과 1 사이의 값을 가진다. 0은 사건이 발생하지 않을 확률을 나타내며, 1은 사건이 발생할 확률을 나타낸다. 따라서 확률은 항상 0에서 1 사이의 범위에 있다. 1에 가까울수록 사건이 발생할 가능성이 높다는 의미이다.
순서 : 승객의 정보가 들어온다 > logit을 계산한다 > 승객의 정보(x)당 y(확률)의 값이 0.53이다/ 어떤 사람은 0.54이다 > 치우칠수록 생존 쪽으로 값을 확 올려버린다. > 가운데(0.5)에 잘 안모여 있으니까 분류하기 굉장히 쉽다는 특징이 있다.
다시 한번 강조하자면, 로지스틱은 y가 0이다/1이다 값을 예측하는게 아니라 y가 1일 확률을 예측하는거고 그 다음에 임곗점(컷오프)를 통해서 0.5 이상이면 생존(=1)이다. 이하면 0으로 판단하여 분류예측에 사용한다.
지금까지 설명하기 쉬운 정해진 조건 안에서만 설명했다. 전제조건은 x는 연속형 변수, y는 이진 분류(0, 1)에 대해서만 시각화했다. 제일 쉬우니까b 굳이 x에 연속형 아니어도 성별을 인코딩(0, 1)을 통해서 넣을 수 있음. 여러개 넣을 수 있고, 연속형, 범주형 다 넣을 수 있다. 이진 분류를 쓰는 로지스틱함수가 아니더라도 다중분류를 이용한 다른 함수를 쓸 수도 있다. softmax라는 함수가 있다. 원리가 뭐냐면 Y=A, B, C 일 때 (이진분류에서는 생존확률이 80%이면 사망확률이 20%잖아) 다중에서는 모든 확률을 다 예측해준다. 대신 합이 1이 되도록! A는 60%, B는 20%, C는 20% 이렇게 각각 클래스에 대해서 분류가 되고 확률을 도출한다. 함수를 통해 각각 클래스에 대한 이런 확률도 뽑아내어 다중 분류가 가능하다. 지금 배운 건 가장 쉬운 연속형 변수이면서 이진 분류만 설명한 것이다. 알겠지?
04 추가로 수식 해석하기(외우기X, 이해하기O)
로짓의 수식을 P에 대해서 이항할 수도 있다. P에 대한 수식을 로지스틱 함수라고 한다.

💡'로짓'의 장점은 어떤 값을 가져오더라도 반드시 특정 사건이 일어날 확률(Y값이 특정 값일 확률, 예를 들어 Y=1 생존할 확률)을 넣기에 좋다. 왜? 0과 1안으로 들어오게 하는 특징을 가지고 있기 때문이다.
로그를 씌워서 로짓을 만들고 이 값을 Y축으로 놓고 우변에 회귀식을 붙여버리는 것이다. 붙여버려서 값을 넣어 적합한다.

기존의 회귀식은 y=w0+w1x 근데 여기서 y값이 부적절했다. 확률값을 넣으려면 y가 0, 1로 값이 제한되지 않기 때문에 > 로짓이라는 개념을 적용했고 > 결과가 정확하게 y는 0이다 1이다 그 값을 예측하는게 아니라 y가 1일 확률을 예측하는 것이다. > 그 다음 0.5 컷오프를 통해서 0.5보다 크면 생존, 작으면 아니다라고 따로 만든거다. > 그래서 위의 전자와 같은 식이 만들어졌고 > 이항해서 후자와 같이 양변에 자연지수를 취한 수식이 만들어지는 것이다. > 왜 이렇게 이항하는가? > (오즈비 수식에 대한 진짜*2 부가적인 설명) > 우리가 선형회귀 수식 때 x가 1단위 증가하면 y가 w1만큼 증가한다고 해석했었다. 몸무게가 1kg증가하면 키가0.86증가하는 경향이 있다고 봤다. 회귀식도 동일하게 해석할 수 있는데 조금 더 부가적인게 들어가서 불편할 뿐이다. > x가 1단위 증가하면 오즈비(그사람이 생존할 or 사전이 일어날 오즈비)는 e의 w1만큼 증가한다. 정확하게 딱 그만큼 증가하는 게 아니라 exponential만큼 증가하는 게 된다. (이부분 adsp나 빅분기에 자주 나옴) > 시험에서 로지스틱회귀에서 베타가 증가하면 딱 그만큼 y도 증가한 것이다? 하면 틀린거지. > 사실 위와 같은 원리가 있어서 정확하게 그만큼은 아니고 그것보다 훨씬 많음. e(자연로그)가 2.7얼마만큼 증가한다고 이해하면 된다.
여기까지 수식을 알아봤다. 사실 선형회귀와 동일하게 원리를 아는 것도 중요한데 결국 코드로 치는 건 함수를 잘 쓰는 능력이기 때문에 여기까지 이해해보고 마지막으로 정리하고 실습으로 넘어가도록 한다.

💡'로지스틱함수'는 가중치 값을 안다면 X값이 주어졌을 때 해당 사건이 일어날 수 있는 P의 확률을 계산할 수 있게 된다. 이때, 확률 0.5를 기준으로 그보다 높으면 사건이 일어남(P(Y) = 1), 그렇지 않으면 사건이 일어나지 않음(P(Y) = 0)으로 판단하여 '분류' 예측에 사용한다.
수식은 평가 지표에서도 얘기할거지만 알고리즘에서 수식은 지금 배운게 처음에 어려운 편이다. 뒤에서는 수식보다 시각화를 통해서 배울 예정이다. 회귀할 때는 지금 배운 게 이해하기 쉬운 편이어서 수식을 배웠다. 다음은 '분류 평가 지표'로 이동한다.
'학습 > 머신러닝' 카테고리의 다른 글
| Machine Learning 8 : 로지스틱회귀 실습 (0) | 2024.02.02 |
|---|---|
| Machine Learning 7 : F1-Score (0) | 2024.02.02 |
| Machine Learning 5 : 다중선형회귀, 실습 (0) | 2024.02.01 |
| Machine Learning 4 : R-Square (0) | 2024.02.01 |
| Machine Learning 3 : 선형회귀 (0) | 2024.01.30 |