티스토리 뷰
머신러닝 카테고리의 세 번째 글에서는 지도학습 중 하나인 선형회귀에 대한 개념과 동작원리를 설명하겠습니다. 이 글의 목차는 다음과 같습니다.
- 선형회귀의 개념
- 선형회귀 동작원리(Gradient Descent)
1. 선형회귀의 개념
선형회귀는 독립변수의 패턴에 따라 종속변수가 어떻게 변하는지 보여주는 것입니다. 즉, x값의 변화 추이에 따라 y값의 변화 추이를 알아보고 새로운 x값이 들어오면 가장 정확한 y값을 예측하도록 해주는 모델입니다. 선형회귀의 기본적인 모델은 다음과 같습니다.
우리가 잘 알고 있는 일차함수의 모습이 선형회귀 모델이 됩니다. 선형회귀의 목표는 위의 모델에서 파라미터 w와 b를 추정하는 것입니다. 우리가 가지고 있는 데이터셋은 x값과 f(x)값을 대표하고 이들의 선형적인 패턴을 가장 잘 설명하는 w와 b를 찾는 것이 궁극적인 목표인 것입니다.
위 그림에서는 f(x) = wx + b와 빨강색 점과의 차이를 의미하는 파랑색 실선이 존재합니다. 우리의 목표는 이 파랑색 실선의 제곱합의 평균값이 가장 작아지도록 만들어주는 f(x)를 찾는 것입니다. 머신러닝에서는 이 평균값을 MSE(평균절대오차)라는 손실함수로 정의하고 이 값을 최소화하는 모델을 만드는 것이 중요합니다.
2. 선형회귀의 동작원리
선형회귀의 동작원리는 MSE(평균절대오차)를 최소화하는 w와 b를 찾는 것이고 이를 Gradient Descent 기법을 이용하여 파라미터들을 추정합니다. Gradient Descent 기법은 위에서 정의한 손실함수를 각각 w와 b에 대해 미분을 한 다음 0이 되게 하는 w와 b를 찾는 것입니다. Gradient Descent의 원리는 미분계수를 이용해 최소값을 반복해서 찾아가는 것입니다. Starting point에서 미분을 시작해서 최소값에 도달할 때까지 미분을 반복하는 것이 핵심입니다.
미분을 반복하면서 최소값에 도달할 때까지 손실함수의 w와 b는 계속 업데이트되는 과정을 겪습니다. 최소값에 도달할 때의 w와 b가 손실함수의 값을 최소화하고 데이터의 선형적인 패턴을 가장 잘 설명하는 w와 b가 되는 것입니다.
w와 b를 업데이트 할 때 사용되는 가중치(이미지의 0.01)를 학습률(learning_rate)이라고 정의합니다. 이 학습률은 그래프의 최소값을 찾는 과정에서 얼마만큼 이동할지 결정해주는 역할을 합니다. 학습률은 모델의 정확도에 영향을 미치는 중요한 가중치입니다. 학습률이 작다면 최소값을 갖는 w와 b를 찾는데 시간이 매우 오래 걸리는 특징이 있지만 학습률이 크다면 최소값을 지나쳐 발산하는 문제점이 존재합니다.
Gradient Descent가 가지는 문제는 극소값을 최소값으로 오인하는 것입니다. 그래프의 특징에 따라 극소값이 되는 지점이 여러 곳이기 때문에 Starting point가 어디인지에 따라 최소값으로 오해해 학습이 중단될 수도 있습니다. 이 문제를 local minimum이라고 정의하며 차후에 이 문제를 해결하는 방법에 대해 소개하겠습니다.
[Reference]
홍익대학교 컴퓨터공학과 김태형교수님 기계학습심화 수업 강의록
'머신러닝' 카테고리의 다른 글
[5] KMeans 알고리즘 (0) | 2024.05.15 |
---|---|
[4] Support Vector Machine(SVM) (0) | 2024.05.12 |
[3] K 근접 이웃 알고리즘(knn) (0) | 2024.05.10 |
[1] 머신러닝의 분류와 과적합 (0) | 2024.05.03 |
[0] 머신러닝이란? (1) | 2024.05.01 |
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- #with recursive #입양시각 구하기(2) #mysql
- 머신러닝 #project #classification #dacon
- #docker #image #build #dockerfile
- #프로그래머스 #안전지대 #시뮬레이션
- python #프로그래머스 #겹치는선분의길이
- #tf idf
- 잘라서 배열로 저장하기 #2차원으로 만들기
- #django #mvt 패턴
- # 할인행사 #counter #딕셔너리 #프로그래머스
- #웹 프로그래밍 #서버 #클라이언트 #http #was
- #자연어 처리 #정수 인코딩 #빈도 수 기반
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- # 프로그래머스 #연속된 부분수열의 합 #이중 포인터 #누적합
- #attention #deeplearning
- #docker #container #docker command
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- # 프로그래머스 # 카펫 # 완전탐색
- nlp #토큰화 #nltk #konply
- #opencv #이미지 연산 #합성
- #seq2seq #encoder #decoder #teacher forcing
- 머신러닝 #lightgbm #goss #ebf
- #polars #대용량 데이터셋 처리
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- 머신러닝 #xgboost #
- #docker #docker compose