<진도표>

[이번주 과제 - 3주차]
1. 진도 공부 : 4장 다양한 분류 알고리즘
2. 기본 미션 : 4-1절 문제 풀고 인증샷
3. 선택 미션 : 4-2절 과대적합/과소적합 손코딩 코랩 화면 인증샷
1. 진도 공부
1) 혼자 공부 하는 머신러닝 + 딥러닝 4장 - 로지스틱 회귀
링크 : https://sirokun.tistory.com/20
혼자 공부하는 머신러닝 + 딥러닝 4장 - 로지스틱 회귀
1. 로지스틱 회귀 - 선형 방정식을 학습하여 모델을 만든 뒤 이를 이용해 분류하는 모델(이름이 회귀이나 분류 모델에 속함) - 위와 같이 선형 방정식 형태로 나타나는데 이때 z값의 범위는 시그
sirokun.tistory.com
2) 혼자 공부 하는 머신러닝 + 딥러닝 4장 - 확률적 경사 하강법
링크 : https://sirokun.tistory.com/21
혼자 공부하는 머신러닝 + 딥러닝 4장 - 확률적 경사 하강법
1. 확률적 경사 하강법 <점진적인 학습> - 앞서 훈련한 모델을 버리지 않고, 새로운 데이터에 대해서만 조금씩 더 훈련하는 방식. - 이렇게 진행할 경우 훈련에 사용한 데이터를 모두 유지할 필요
sirokun.tistory.com
이번주에는 로지스틱 회귀에 대한 내용이 주를 이뤘습니다.
선형회귀는 익숙했지만 로지스틱 회귀는 약간 낯설다고 느껴졌는데요. 그래서인지 저번주보다 약간 어려움을 느낀게 많았습니다. 특히 확률적 경사하강법에서는 어려운 용어가 꽤 나와서 이해하는데 어려움이 있었지만, 그래도 저자님이 친절하게 강의해주신 동영상이 있어서 이를 여러번 반복해 들어보고, 정리하여 게시글을 적은 덕분에 확실히 이해하고 이번주를 마칠 수 있었습니다.
특히 로지스틱 회귀 알고리즘은 이름에 회귀가 들어가지만 분류 알고리즘이라는 것을 명심해야겠다는 생각이 많이 들었고, 확률적 경사하강법은 후반부에서 딥러닝을 배울때도 중요하게 강조되는 내용이라 하니 꼼꼼하게 복습해야할 필요성이 있다고 느껴졌습니다.
2. 기본미션 : 4-1절 문제 풀고 인증샷

기본미션은 4-1 문제 풀고 인증샷입니다.
간단하게 풀이를 해보면 아래와 같습니다.
<1번문제 풀이>
1) 이진 분류 : 2개의 클래스를 분류하는 문제
2) 다중 분류 : 2개보다 많은 클래스를 분류하는 문제
3) 단변량 회귀 : 종속 변수가 하나인 회귀 모델
4) 다변량 회귀 : 종속 변수가 2개 이상인 회귀 모델
<2번문제 풀이>
1) 시그모이드 함수 : 이진 분류에서 확률을 출력하기 위해서 사용하는 함수
2) 소프트맥스 함수 : 다중 분류에서 확률을 출력하기 위해서 사용하는 함수
3) 로그 함수 : 로그의 진수에 변수가 포함되어 있는 함수
4) 지수 함수 : 변수가 거듭 제곱의 지수에 포함되어 있는 함수
<3번문제 풀이>
decision_function()메서드의 출력값은 z값이 된다. 시그모이드의 함수는 이 z값을 이용해 확률을 구하는 함수이므로, 문제에 주어진 출력 값을 시그모이드 함수식에 집어넣으면 됩니다9.
시그모이드 함수의 식은 아래와 같습니다.

이때 출력값이 0이면, z에 0을 집어 넣으면 되므로

따라서 시그모이드 함수 값은 1/2 = 0.5가 됩니다.
3. 선택미션 : 4-2절 과대적합/과소적합 손코딩 코랩 화면 인증샷
선택미션은 4-2절 과대적합/과소적합 손코딩 코랩화면 인증샷입니다. 해당 손코딩은 4-2절 확률적 경사하강법에서 마지막 에포크 과대적합/과소적합에 나온 내용에 해당됩니다.
과대적합/과소적합 손코딩 인증샷은 진도 공부를 하면서 정리한 게시물에 적어놓기도 했습니다.
링크 : https://sirokun.tistory.com/21
혼자 공부하는 머신러닝 + 딥러닝 4장 - 확률적 경사 하강법
1. 확률적 경사 하강법 <점진적인 학습> - 앞서 훈련한 모델을 버리지 않고, 새로운 데이터에 대해서만 조금씩 더 훈련하는 방식. - 이렇게 진행할 경우 훈련에 사용한 데이터를 모두 유지할 필요
sirokun.tistory.com
책에 있는 과대적합/과소적합 코드 내용을 합치면 아래와 같습니다.
import numpy as np
sc = SGDClassifier(loss='log', random_state=42)
train_score = []
test_score = []
#타깃에 존재하는 값들 종류 파악
classes = np.unique(train_target)
#에포크 횟수별로 점수 기록하기
for _ in range(0, 300):
sc.partial_fit(train_scaled, train_target, classes=classes)
train_score.append(sc.score(train_scaled, train_target))
test_score.append(sc.score(test_scaled, test_target))
import matplotlib.pyplot as plt
#에포크 횟수 동안 기록한 점수를 그래프로 그려보기
plt.plot(train_score)
plt.plot(test_score)
plt.xlabel('epoch')
plt.ylabel('accuracy')
plt.show()
위의 코드를 실행하면 아래와 같은 그래프가 나오게 됩니다.

그래프를 그려본 결과 데이터가 작아서 잘 드러나지 않지만, 100번째 에포크 이후에는 훈련 세트와 테스트 세트 사이의 점수차이가 더 벌어지는 것을 확인할 수가 있습니다. 즉, 100번 이후에서 과대적합이 생기는 것을 확인 할 수 있습니다. 이런 식으로 그래프, 혹은 둘의 차이를 이용해 최적화된 에포크 횟수를 구할 수 있을 것이라고 생각합니다.
이것으로 3주차 후기를 마쳐보겠습니다. 이번 주에는 로지스틱 회귀를 배워 2장에서 배웠던 분류의 좀 더 깊은 내용에 들어가 보았습니다. 분류에 대해서 더 깊게 이해할수 있어 좋았지만 깊어진 만큼 더 어려운 내용이 전보다 많이 등장했기에 이해하는데 좀 오래 걸리지 않았나 싶기도 한데요. 그래도 이번 장이 가장 중요하다고 책에서도 강조하고 있기도 했고, 이해하기 쉽게 설명도 해주고 강의에서도 친절하게 내용을 소개하고 있어서 약간은 수월하게 할 수 있지 않았나 싶습니다.
슬슬 본격적으로 어려운 느낌이 들지만 벌써 절반이나 온만큼 다시 힘내서 마지막까지 달려보도록 하겠습니다!
'혼공단 > 혼공단 5기' 카테고리의 다른 글
| 혼자 공부하는 머신러닝 + 딥러닝 5장 - 교차 검증과 그리드 서치 (0) | 2021.02.18 |
|---|---|
| 혼자 공부하는 머신러닝 + 딥러닝 5장 - 결정 트리 (0) | 2021.02.18 |
| 혼자 공부하는 머신러닝 + 딥러닝 4장 - 확률적 경사 하강법 (0) | 2021.02.12 |
| 혼자 공부하는 머신러닝 + 딥러닝 4장 - 로지스틱 회귀 (0) | 2021.02.11 |
| [혼공단 5기] 혼자 공부하는 머신러닝 + 딥러닝 2주차 후기 및 미션 인증 (0) | 2021.02.04 |