2023. 7. 22. 22:15ㆍ혼공학습단 10기
04-1 로지스틱 회귀
k-최근접 이웃 분류기
데이터 준비하기
k-최근접 이웃 분류기의 확률 예측
다중 분류
- multi class classification
- 타깃 데이터에 2개 이상의 클래스가 포함된 문제
5개 샘플의 예측 결과
5개중 4번째 샘플 결과 분석
k-최근접 이웃의 한계
- 가능한 확률값이 정해져 있다.
-> k=3인경우, 0/3, 1/3, 2/3, 3/3만 가능
로지스틱 회귀
- logistic regression
- z = a x (Weight) + b x (Length) + c x (Diagonal) + d x (Height) + e x (Width) + f
- 확률값은 0 ~ 1의 값을 가진다.
- z가 큰 음수일 때 0
z가 큰 양수일 때 1
-> 시그모이드 함수(sigmoid function)
로지스틱 회귀로 이진 분류 수행하기
도미와 빙어 이진분류
데이터 준비하기
로지스틱 회귀
학습 결과 분석
첫번째 열이 음성, 두번째 열이 양성
회귀 모델 방정식의 계수
계산 결과
로지스틱 회귀로 다중 분류 수행하기
LogisticRegression 클래스 특징
- 반복적인 알고리즘 사용, max_iter
- 릿지 회귀와 같이 계수의 제곱을 규제 ( = L2 규제 ), C
-> C가 작을수록 규제가 커짐
훈련
5개 샘플 예측, 예측 확률
계수 확인
- z를 7개 계산
-> 클래스마다 z값을 각각 계산하여 가장 큰 값의 z값을 출력하는 클래스가 예측 클래스가 된다.
- 소프트맥스(softmax)함수를 사용하여 7개의 z값을 확률로 변환
z값 계산 및 소프트맥스 계산
기본 미션
2. 로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는 무엇인가요?
1) 시그모이드 함수
2) 소프트맥스 함수
3) 로그 함수
4) 지수 함수
정답 - 1)
풀이 - 소프트맥스 함수의 경우 다중 분류에서 사용한다.
04-2 확률적 경사 하강법
점진적인 학습
- 먼저 학습한 모델을 버리지 않고 새로운 데이터에 대해서만 조금씩 더 훈련
- 확률적 경사 하강법( Stochastic Gradient Descent )
-> 대표적인 점진적 학습 알고리즘
확률적 경사 하강법
- 경사 하강법 : 가장 가파른 경사를 따라 원하는 지점에 도달하는 것
- 확률적 : 전체 샘플을 사용하지 않고 하나의 샘플을 훈련 세트에서 랜덤하게 골라 가장 가파른 길을 찾는 것
- 확률적 경사 하강법
-> 훈련 세트에서 랜덤하게 하나의 샘플을 선택하여 가파른 경사를 조금 내려간다.
-> 다음 훈련 세트에서 랜덤하게 또 다른 샘플을 하나 선택하여 경사를 조금 내려간다.
-> 전체 샘플을 모두 사용할 때까지 반복
- 모든 샘플을 다 사용했는데도 원하는 지점에 도달하지 못한 경우?
-> 훈련 세트에 모든 샘플을 다시 채워 넣어서 다시 램덤하게 하나의 샘플을 선택해서 경사를 내려간다
-> 에포크( epoch ) : 확률적 경사 하강법에서 훈련 세트를 한 번 모두 사용하는 과정
- 미니배치 경사 하강법 (minibatch gradient descent )
-> 1개씩 말고 무작위로 몇 개의 샘플을 선택해서 경사를 내려감.
- 배치 경사 하강법 ( batch gradient descent )
-> 전채 샘플을 사용하여 경사로를 따라 이동.
손실 함수
- loss function
- 어떤 문제에서 머신러닝 알고리즘이 얼마나 엉터리인지를 측정하는 기준
- 값이 작을 수록 좋다. 그러나 최솟값은 모른다.
- 가능한 많이 찾아보고 만족할만한 수준을 찾는다.
- 샘플 하나에 대한 손실을 정의
- cost function : 훈련 세트에 있는 모든 샘플에 대한 손실 함수의 합
로지스틱 손실 함수
- logistic loss function, binary cross-entropy loss function
- 양성 클래스(target = 1)일 때 손실 : -log(예측확률)
- 음성 클래스(target = 0)일 때 손실 : -log(1-예측확률)
- 양성 클래스인 경우
-> 예측 x 타겟
ex) 0.9 x 1 -> -0.9
- 음성 클래스인 경우
-> (1-예측) x 타겟
ex) 0.2 -> 0.8, 0 -> 1
0.8 x 1 -> -0.8
- log를 사용하는 이유
-> 에측 확률의 범위가 0 ~ 1 사이 -> 로그 함수는 이 사이에서 음수가 된다.
-> 로그 함수는 0에 가까울 수록 아주 큰 음수가 된다.
- -log를 사용하는 이유
-> log가 음수이므로 -log는 양수가 되어 이해하기 쉽다.
-> -log는 0에 가까울 수록 아주 큰 양수가 된다.
- 다중 분류
-> 크로스 엔트로피 손실 함수 (cross - entropy loss function)
-회귀
-> 평균 제곱 오차 (mean squared error)
SGDClassifier
데이터 준비하기
손실함수 지정
- loss = 'log' : 로지스틱 손실 함수 지정
수행할 에포크 횟수
- max_iter = 10 : 전체 훈련 세트를 10회 반복
-> 훈련 세트와 테스트 세트 정확도가 낮다
-> 10회 반복은 부족
partial_fit()
-> 모델을 이어서 훈련
-> 훈련 세트와 테스트 세트의 정확도가 향상됨.
에포크 과대/과소 적합
- 에포크 횟수가 적음
-> 모델이 훈련 세트를 덜 학습
-> 과소적합
- 에포크 횟수가 충분함
-> 모델이 훈련 세트를 완전히 학습
-> 과대적합
- 훈련 세트 점수는 에포크가 진행될소룩 꾸준히 증가
- 테스트 세트 점수는 어느 순간 감소하기 시작
-> 이 지점이 과대적합이 시작하는 지점
조기종료
- early stopping
- 과대 적합이 시작하기 전에 훈련을 멈춤
실습
선택 미션
-> 백 번째 에포ㅌ크 이후에는 훈련 세트와 테스트 세트의 점수가 조금씩 벌어지는 것으로 보임
-> 에포크 초기에는 과소적합되어 훈련 세트와 테스트 세트의 점수가 낮음.
-> 에크포 100이 적절한 반복 횟수로 보임
SGDClassifier 특징
-> 일정 에포크 동안 성능이 향상되지 않으면 자동으로 멈춤.
-> tol 매개변수로 향상될 최솟값을 지정
-> loss의 기본값은 'hinge' : 서포트 벡터 머신을 위한 손실 함수
'혼공학습단 10기' 카테고리의 다른 글
[혼공학습단10기] 혼자 공부하는 머신러닝+딥러닝 4주차 Ch_5 트리알고리즘 (0) | 2023.07.29 |
---|---|
[혼공학습단 10기] 혼자 공부하는 머시러닝 + 딥러닝 2주차 Ch_3 회귀 알고리즘과 모델 규제 (0) | 2023.07.15 |
[혼공학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 1주차 Ch_2 데이터 다루기 (0) | 2023.07.08 |
[혼공학습단 10기] 혼자 공부하는 머신러닝 + 딥러닝 1주차 - Ch_1 나의 첫 머신러닝 (2) | 2023.07.07 |