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(좌) vs. unsupervised(우)

 * 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]

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

w=1, J=0인 경우

 - 모든 training exampel에서 y-hat과 y의 값이 차이가 없기 때문에 J는 0이다. 

 

② w=0.5, J=0.58

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를 "동시에" 업데이트 시켜야 한다는 것이다.

w,b를 동시에 변경(correct)
w,b를 동시에 변경 X(incorrect)

 

 

 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가 너무 클 때

 

 - 따라서 적절한 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 산점도, 그래프 깃허브 정리

https://github.com/jiuuu26/Artificial-Intelligence/blob/main/Supervised%20Machine%20Learning%3A%20Regression%20and%20Classfication/Supervised%20vs.%20Unsupervised%20Machine%20Learning.md