Youtube : https://www.youtube.com/watch?v=BgB2NB7fLiM&list=PLetSlH8YjIfXMOuS4piqzJRvSZorDnNUm&index=7
: 1/0(발생, 비발생)의 결과값을 내놓기 위해서 선형 회귀식은 적절하지 않음.
파란색 선형회귀선이 이 데이터 분포를 잘 설명하느냐? 아니오.
0/1의 아웃풋을 갖기를 바라는 반면, 선형회귀의 아웃풋은 음의 무한대부터 양의 무한대까지임. 즉, 좌변과 우변의 범위가 달라짐.
: 0/1 아웃풋을 내기 위한 설명 변수들의 함수를 찾는 것 (=출력값이 특정 범주에 속할 확률을 예측함)
어떻게?
- 선형 회귀와 같이 y 값을 직접 사용하지 않고, "Logit function"이라고 불리는 y 값을 사용함
- Logit function : 설명 변수들에 대한 선형 모형으로 추정
: 로지스틱 회귀에서 성공 확률에 대한 로그 승산을 선형식으로 추정함.
성공 확률 P와 승산(odds). 타겟에 대한 실패 확률에 대한 성공 확률의 비율
log odds의 범위는 음의 무한대부터 양의 무한대로, 회귀식의 범위와 일치함. 그리고 대칭성 또한 존재함.
로지스틱 회귀 방정식과 성공 확률(P)에 대한 식
P : 사후확률에 대한 추정값
선형 회귀 coefficient의 matrix form
: 데이터셋의 우도를 최대화하는 회귀 계수를 찾는 방법
i번째 객체(설명 변수)의 우도를 찾는 식. 위의 식에서 yi = 1은 P(y=1)을 의미하는 것임. 아래 식은 P(y=0)일 때와 P(y=1)일 때의 우도를 한 번에 표현하는 식임
데이터가 서로 독립적이라면, 전체 데이터셋의 우도는 위와 같이 표현됨 (저 기호는 product, 즉 모든 요소를 다 곱하는 걸 의미함.)
그리고 로그 우도를 구하기 위해 양변에 로그를 취하면 위와 같음. (product에 로그 취하면 시그마가 됨) - 이 식을 maximize 해야 함!
* 우도는 베타에 대해 비선형적이므로, MLR(다중 선형 회귀)의 해(베타 혹은 웨이트)와 같이 해가 explicit하지는 않음.
-> MLE 및 Gradient Descent와 같은 최적화 알고리즘을 통해 해를 찾아야 함.
: 오차(y - y hat, target-prediction)를 최소화하는 기법.
순서)
ㄱ. 초기화 : 모델의 파라미터(예, 가중치)를 무작위 값이나 특정 값으로 초기화
ㄴ. 그래디언트 계산 : 현재 파라미터에 대해 손실 함수의 그래디언트(미분 값) 계산
ㄷ. 파라미터 업데이트 : 그래디언트의 반대 방향으로 파라미터 조정함으로써 손실 함수의 값을 감소시킴 (learning rate라는 하이퍼 파라미터가 업데이트 크기를 결정함)
ㄹ. 수렴 체크 : 손실 함수의 값이 더 이상 감소하지 않거나, 미리 정한 기준에 도달할 때까지 위의 단계를 반복함.
J(w) : loss(cost) function. J(w)를 최소화하는 게 목표임.
<Gradient descent 업데이트 방식>
w의 변화량이 충분히 작을 때, w에 대한 함수는 위와 같이 무한 급수로 표현될 수 있음(테일러 전개). 또한 w 변화량에 대한 이차항(위의 식에서 우변 세번째 항부터) 뒤로는 0으로 근사될 수 있음.
<로지스틱 회귀 모델의 구조 정리>

분모의 괄호 안에 있는 식이 위의 그림에서 h를 뜻함.
h : 입력(설명 변수)x와 가중치 w(beta)의 선형 조합
y : 로지스틱 회귀 함수를 통해 계산된 모델의 예측값. (이는 h를 사용해 0과 1사이 값으로 변환됨)
L : 손실 함수 (예측값 y와 실제 타겟 t 간 제곱 차이) - 전에는 타겟은 y, 예측값은 y hat으로 나타냈었음. (여기서 손실 함수는 제곱 손실 함수임. 제곱 손실 함수는 선형 회귀에서 사용됨.)
** 선형 조합이란 ?
여러 벡터들에 스칼라곱을 하고 그 결과를 더하는 것 (선형식이라 해서 꼭 1차식인 건 아님.)
<그래디언트 계산과 파라미터 업데이트 과정>
여기서 alpha(learning rate) 설정에는 여러 의견이 분분함.
가중치 업데이트에 대한 추가 설명
: 로지스틱 회귀 모델의 학습 과정(가중치(파라미터, w0, w1..)를 최적화하여 데이터에 가장 잘 맞도록 조정됨)이 완료된 후, 새로운 데이터(설명 변수)에 대한 예측(성공 확률 p)을 수행하는 단계.


: p value, coefficients, odd ratio 종합해서 결과를 봐야
선형 회귀는 X1가 1만큼 커지면 Y hat은 b1만큼 커짐. 이렇게 직관적인 결과를 보여주는데 로지스틱 회귀는 그렇지 않음.
로지스틱 회귀의 주요 해석 도구 : 오즈 비(odd ratio)
: 설명 변수가 1만큼 증가하면, 승산 비율이 얼마나 증가하는가? (선형 회귀처럼 특정 설명 변수의 영향력을 직관적으로 해석하기 위한 것)

선형 회귀의 해석과 유사하게, 하나의 설명 변수(x1) 값이 한 단위 증가할 때, 다른 변수들의 값이 고정된 상태에서, 성공의 odds가 어떻게 변화하는지를 나타내는 비율.

: 타겟 y의 종류가 3가지 이상일 때(0,1의 두 가지가 아니라 여러개일 때), baseline을 설정해야 함. 그리고 baseline class와 비교 class끼리 relative log odds에 대한 회귀식을 형성해야함.
다변량 로지스틱 회귀에 k개의 클래스(범주)가 있으면, (k-1)개의 모델을 생성해서 풀 수 있음.
로지스틱 다항 회귀 분석에서, 각각의 변수가 특정 두 범주 구분에 대한 판별력은 떨어질 수 있어도, 다른 범주 구분에 대한 판별력을 줄 수 있음.
최적의 모델 찾는 방법
1) 각 알고리즘별 베스트 하이퍼 파라미터 조합 찾기 (validation set 사용)
예) k means neighbor - k(3), classification tree - minimum split(10), NN - hidden node(10) 등
2) 그 알고리즘별 베스트 하이퍼 파라미터 조합들 중 가장 나은 알고리즘 고르기 (test set 사용)
예) classification tree가 가장 낫다.
단순 정확도
BFP 기준으로 성별을 맞춘 케이스는 7/10*100 = 70% (단순 정확도)
Confusion Matrix (예시는 위의 단순 정확도에 대한 것)


confusion matrix로 계산할 수 있는 '분류' 모델 성능 평가 지표 (measures)
1) Misclassification error : 전체 중 모델이 틀리게 분류한 비율
= (FN+FP) / (TP+FN+FP+TN)
2) Accuracy : 전체 중 모델이 바르게 분류(대각 행렬)한 비율
= (TP+TN) / (TP+FN+FP+TN) = 1-misclassification error
3) Recall : 진짜 불량 제품을 얼마나 잘 걸렀는가 (실제 False 중 모델이 False라고 예측한 비율)
4) Precision : 모델이 불량이라고 예측한 것 중, 실제 불량이 몇 개인가 (모델이 False라고 예측한 것들 중 진짜 False)
5) Balanced correction rate(BCR) : root{ (실제 True 중 모델이 True라고 예측한 것의 비율) (실제 False 중 모델이 False라고 예측한 것의 비율) }
6) F1 score : (2Recall*Precision) / (Recall+Precision) = Recall과 Precision의 기하평균
-> BCR과 F1 score를 많이 씀
단순 Accuracy의 단점 : 0.999 acc이라고 해도 해당 모델이 정확하다고는 말할 수 없음.
confusion matrix와 cut-off의 종속 관계


ROC example

cut-off를 아래로 내릴수록 TPR과 FPR이 높아짐.
모든 cut-off에 대해 각각 TPR과 FPR을 계산한 예시
FPR(x), TPR(y)의 비율
ROC를 수치로 나타내기 위한 AUROC (ROC 밑면 넓이)
*이런 알고리즘들의 기하학적 정의(매트릭스로의 정의 - 선형대수학)를 추가적으로 이해해야 함