< 미분(derivative) >
- 어떤 함수의 정의역 속 각 점에서, 독립변수의 값의 변화량과 함수값의 변화량 비율의 극한 혹은 극한의 집합을 치치역으로 가지는 새로운 함수
- 미분법(differentiation) : 미분함수(도함수)를 구하는 작업
- 미분은 함수에 있어서 특정 순간의 변화량을 의미
- x값에서의 작은 변화가 함수 f(x)를 얼마나 변화시키는가?
- 미분의 두 가지 방식
- 해석미분(Analytical differentiation)
- 종이와 펜을 가지고 논리적인 전개로 미분을 수행
- 고등학교 시절에 미분문제푸는 것처럼 하는 방법
- 수치미분
- 해석미분을 이용해서 문제를 해결할 수 없을 떄, 근사값을 이용해서 미분을 수행하는 방법
- delta_x 라는 0에 근사한 값을 이용
- Python에서 delta_x가 소수점 8자리 이하로 내려가면 오류가 발생 (반올림에서 오류)
- 일반적으로 delta_x를 0.00001 정도로 설정
- 중앙차분방식으로 미분 수행 (이 방식이 가장 정확한 값을 도출함)
- 해석미분(Analytical differentiation)
< 수치미분 >
1. 일변수 함수의 수치미분
- 입력으로 들어오는 x가 아주 미세하게 값이 변화할 때, 함수 f는 얼마나 변하는지를 수치적으로 계산해서 return
- Python 에서는 일급함수를 지원하므로, 하나의 함수를 다른 함수의 인자로 전달 가능
2. 다변수 함수의 수치미분
- 입력함수들은 서로 독립이므로 개별적으로 편미분해서 계산
< Regression >
※ 학습된 결과를 바탕으로 미래의 무엇을 예측하느냐에 따라서 크게 2가지로 구분
1. Regression
- Linear Regression : Training Data Set을 이용해서 학습된 결과를 만들고, 연속적인 숫자값을 예측
- Logistic Regression
2. Classification
- binary classification
- multinomial classification
공부시간(x)과 시험점수(t)를 이용해서 데이터를 표현하고, scatter(산점도)를 그려보자
해당 코드의 실행결과는 아래와 같다.
해당 그래프에서, 빨간 직선이 산점도와 제일 유사함을 확인할 수 있다.
※ 목표 : 이 직선들 중, 산점도와 가장 유사한 직선을 찾는 것
< loss function (손실함수) >
※ 최소 제곱법(least squared method)으로 계산
- 각 데이터와 직선의 오차 제곱의 평균
- 상수항은 모양에 영향을 주지 않으므로 제외
그림에서 확인할 수 있듯이, loss function은 2차함수 형태로 나타난다.
이 때, 변곡점에 해당하는 W 값이 우리가 찾고자 하는 값이다.
그러면, 어떤 W를 설정했을 때, loss function 값이 최소인지 알려면 어떻게 해야할까?
- 접선의 기울기가 0인 곳이 우리가 원하는 값
- 미분하면 접선을 구할 수 있다.
=> 미분한 값이 양수면 W 값을 줄이고, 음수면 W 값을 늘인다.
매번 W의 기울기를 체크하면서, 값이 변하도록 조절해주면 목표 W 값에 점점 가깝게 만들 수 있다.
※ 알파 : learning rate(학습율)
- 오직 기울기만으로 W 값을 조절하면 값이 급격하게 변할 수 있다.
- 이를 조절하기 위해 두는 상수
- 문제마다 customizing 하여 조절
※ 만약 적절한 learning_rate를 정하지 못했을 경우에는 어떻게 될까?
1. learning_rate 값이 클 경우
→ Overshooting : w값이 수렴하지 못하고 발산할 수 있다.
2. learning_rate 값이 작을 경우
→ 학습에 많은 시간이 소요될 수 있다.
'Python > Data Analysis' 카테고리의 다른 글
Data Analysis / ML / Normalization (0) | 2020.10.04 |
---|---|
Data Analysis / ML / Linear Regression Model (0) | 2020.10.04 |
Data Analysis / ML / Basic Concept(1) (0) | 2020.09.22 |
Data Analysis / pandas / DataFrame(4) (0) | 2020.09.15 |
Data Analysis / pandas / DataFrame(3) (0) | 2020.09.11 |