juuuding
[Supervised Machine Learning: Regression and Classfication] Introduction to Machine Learning 본문
[Supervised Machine Learning: Regression and Classfication] Introduction to Machine Learning
jiuuu 2023. 10. 12. 15:22💡Machine Learning Overview
- 기계 학습의 2가지 주요 유형: supervised / unsupervised (지도/비지도)
Supervised Learning
* Supervised learning: 모델이 올바른 입력, 출력 쌍을 가지고 학습한 후, 이 전에 본 적 없는 새로운 입력 x를 입력 받아 적절한 출력 값 y를 생성하는 것을 시도할 수 있다. 학습 알고리즘 예제를 제공한다.
[Regression]
- 무한히 많은 가능한 output들로 수를 예측한다.
ex) Housing price prediction
[Classification]
- 적은 가능한 output들로 범주를 예측한다.
ex) Breast cancer detection
+ classfication과 regression이 다른 점은 classification에서는 0,1,2와 같이 작고 유한한 제한된 집합을 예측한다.
Unsupervised Learning
* supervised learning은 "올바른 답"으로 라벨링 된 데이터로부터 학습하는 것이고, unsupervised learning은 라벨링 되지 않은 데이터에서 흥미로운 어떤 점을 발견하는 것이다. unsupervised learning에서는 오직 입력 값 x의 데이터만 있고 출력 값 라벨 y는 있지 않으며, 이 데이터에서 알고리즘이 structure을 발견하는 것이다.
[Clustering]
- 비지도 학습의 한 유형으로, 레이블이 없는 데이터를 가져와 비슷한 점에 있는 데이터끼리 자동으로 그룹화하는 것이다.
ex) 키워드로 관련 기사 그룹화, DNA microarray 등
[Anomaly detection]
- 예외 항목 탐지로 비정상적 이벤트를 감지하는 것이다.
ex) 사기의 징후가 될 수 있는 금융 시스템 및 기타 여러 애플리케이션에서 매우 중요한 역할을 한다.
[Dimensionality reduction]
- 차원 축소로 큰 데이터 집합을 가져와 최대한 적게 손실하며 더 작은 데이터 집합으로 압축하는 것이다.
💡Linear Regression with One Variable
Linear Regression Model
* linear regression (선형 회귀)란 데이터에 직선을 맞추는 것이다.
[Terminology]
- x : "input" variable, feature
- y : "output" variable, "target" variable
- m : 훈련 예제의 수
- (x,y) : 하나의 훈련 예제
- (x(i), y(i)) : i번째 훈련 예제
- y-hat : y에 대한 추정 값 (참일 수도 아닐 수도). y는 실제 참 값인 target
* f_w,b(x)=wx+b
+ 하나의 변수로 이루어진 linear regression은 "Univariate linear regression(일변량 선형 회귀)"이라고 한다.
Cost Function
* Model: f_w,b(x)=wx+b
- w,b는 parameter / coefficients / weights. 함수 f에서 얻은 직선이 데이터에 잘 맞도록 매개변수 X와 b의 값을 잘 선택해야 한다.
[Cost function]
- training set의 크기가 커져도 비용 함수가 자동으로 커지지 않게 하기 위해 평균 제곱 오차를 사용한다. m이 아닌 2m을 나누는 이유는 나중 계산 시 조금 더 깔끔하게 보이기 위함이다. 최종적으로는 cost function을 작게 만드는 w와 b를 찾아야 한다. 즉 모든 (x(i), y(i)) 에서 y_hat(i)과 y(i)가 가까울 수 있는 w와 b를 찾는 것이다.
Cost Function Intuition
- 위의 내용을 정리하자면,
model: f_w,b(x)=wx+b
parameter: w,b
cost function: 𝐽(𝑤,𝑏)
goal: cost function 최소화
[Simplified model]
* simplified model은 b를 0으로 하여 매개변수는 w 하나로 설정한 모델이다.
① w=1, J=0
- 모든 training exampel에서 y-hat과 y의 값이 차이가 없기 때문에 J는 0이다.
② w=0.5, J=0.58
- y 값의 차이를 계산하여 cost function 값을 도출하면 약 0.58이 나온다.
▷ 앞선 결과 값들과 w=0일 때, w=-0.5일 때 J 값들을 계산하여 그래프로 그리면 다음과 같은 그림이 나온다.
- 여기서 어떻게 w의 값을 결정해야할까? 선형 회귀의 목표는 cost function인 J의 값을 최소화하는 것이므로, J가 최소값을 가질 수 있는 w를 선택하면 된다. 위의 경우는 매개변수가 w 하나인 model이고 일반적으로는 매개변수가 w,b 두 가지인 경우를 다루어야 한다. 따라서, J가 최소값을 갖는 w,b를 결정하면 되는 것이다.
Visualizing the Cost Function
[General model]
- 일반적인 모델은 매개변수가 w,b 두가지로 이루어진 모델이다. 아래의 그림은 w=0.06, b=50으로
f_w,b(x) = 0.06x+50 그래프이다.
- 이 경우에는 simplified model과 다르게 cost function이 soup bowl 모양과 같이 3차원으로 그려진다.
- 위와 같은 3차원 그래프를 수평으로 slice 한 다음 같은 J 값을 가진 값끼리 이어 선을 그려주면 다음과 같이 된다.
Visualization examples
① w=0, b=360
② w=-0.15, b=500
③ w=0.13, b=71 -> J 최소
💡Training Linear Regression
Gradient Descent
*경사 하강법은 선형 회귀에 대한 비용 함수 뿐만 아니라 모든 함수를 최소화하는데 사용할 수 있는 알고리즘이다. 경사 하강법의 대략적인 적용법은 다음과 같다.
① w, b를 특정 값으로 정하여 시작한다. 보통 w=0, b=0으로 시작한다.
② cost function인 J를 줄일 수 있는 방향으로 w,b를 변화시킨다.
③ J가 최소값에 정착하거나 가까워질 때까지 계속 진행한다. 여기서 최소값은 1이상일 수 있다.
- 위의 그림으로 보자면 한 꼭대기에서 최대한 효율적으로 한 골짜기에 도착해야하는 것이다. 그러기 위해서는 가장 가파른 내리막을 선택해야한다.
Implementing Gradient Descent
[Gradient descent algorithm]
- 경사 하강법은 국소 최소점에 수렴할 때까지 아래의 식을 계속해서 반복하는 것이다. 우변을 좌변에 대입하며 매개변수를 조금씩 업데이트시키는 것이며, 식에서 alpha는 learning rate(학습률)로 내리막길에서 얼마나 큰 걸음을 내딛을 지에 대한 값이다. 이 경사 하강법에서 가장 중요한 점은 w와 b를 "동시에" 업데이트 시켜야 한다는 것이다.
Gradient Descent Intuition
- 경사 하강 알고리즘에서 learning rate(alpha)는 w와 b가 얼마나 많은 업데이트를 거쳐야 하는지 결정하는 값이다. learning rate는 0~1 사이의 수로 양수 값을 지닌다. 따라서 b=0이라고 가정하고 w만 업데이트하는 상황만 고려했을 때, 경사하강법의 도함수가 양수면, 즉 지점의 기울기가 양수이면 w는 감소하고 기울기가 음수이면 w가 증가한다.
w=w-alpha*(positive) -> w 감소
w=w-alpha*(negative) -> w 증가
Learning Rate
- 만약 경사 하강법에서 learning rate(alpha)가 너무 작으면 경사 하강을 매우 느릴 것이고, 너무 크다면 최소 값에 도달하지 못하고(수렴하지 못하고) 분산될 것이다.
- 따라서 적절한 alpha 값을 정해야하며, 국소 최소 값에 가까워질수록 도함수 값, 즉 기울기는 점점 작아지면서 업데이트 되는 정도도 점점 작아질 것이다. 그러므로 alpha 값을 변경하지 않아도 국소 최소 값에 도달할 수 있게 된다.
Gradient Descent for Linear Regression
[Linear regression model]
[Cost function]
[Gradient descent algorithm]
따라서 국소 최소 값으로 수렴할 때까지 아래의 식을 반복하는 것이다.
- 앞서 말했듯이 여기서 중요한 점은 꼭! w와 b를 동시에 업데이트 해주어야 한다는 것이다.
- 위의 그림에서 볼 수 있는 거처럼 w와 b를 초기화하는 위치에 따라 국소 최소 값이 달라질 수 있으며, 국소 최소 값은 하나 이상일 수 있다. 아래는 squared error cost인데, 학습을 적절하게 선택한다면 항상 global minimum으로 수렴할 수 있다.
Running Gradient Descent
["Batch" gradient descent]
- "Batch"란 경사하강법의 모든 단계가 훈련 데이터 일부가 아닌 모든 훈련 데이터를 사용하는 것을 의미한다. m=47이면 47개의 모든 훈련 데이터를 사용하여 경사 하강을 시행한다. "Batch"외의 다른 gradient descent는 subsets gradient descent이다.
🔎 Matplotlib 산점도, 그래프 깃허브 정리