선형 회귀 (Linear Regression)

박경민·2023년 1월 27일
0

[Machine Learning]

목록 보기
5/35

01 선형 회귀

집 값을 예측하는데 있어서 사용할 변수를 집 크기라 해보자. 데이터는 다음과 같다.

집 크기가 주어졌을 때, 집 값을 얼마라고 예측하는 것이 합리적일까?
선형 회귀는 다음과 같은 상황에서 데이터를 가로지르는 위의 빨간선을 긋는 것이다.
빨간선을 통계학에선 최적선 이라 한다.
그리고 선형 회귀에선 다음 집 값을 예측할 때 저 빨간선 위의 점을 기준으로 예측한다.

기본적이면서 중요한 선형 회귀에 대해 알아보자.


02 선형 회귀 용어

학습의 유형에는 지도 , 비지도, 강화 학습이 있다고 했다. 선형 회귀는 어떤 학습에 맞을까?

선형 회귀는 위에서 보았듯 집 크기에 따른 집 값의 정답 을 계속해서 제공하면서 학습시키는 지도학습 에 해당한다.

✅ 변수

목표변수 맞추려는 값 (집 값)
입력변수 맞추는데 사용하는 값 (집 크기)

✅ 데이터 표현법

학습데이터의 개수 : m
입력변수 : x
목표변수 : y
데이터의 인덱스를 변수 위에 괄호로 쓴다.
x(4) 는 4번 데이터의 입력 변수이다.
y(5) 는 5번 데이터의 목표 변수이다.


04 가설 함수

가설함수 란 우리가 선형 회귀의 최적선을 찾기 위해 여러 함수를 시도해보는 것이다.
우리가 알고 있는 일차함수는 다음과 같다.

y = ax + b

그러나 선형 회귀를 공부할 땐 조금 특별하게 이를 표현한다.

세타0이 상수, 세타1이 계수 역할을 한다. 왜 이렇게 쓸까?

만약 집 가격을 예측하는데 여러개의 입력변수가 온다면 이렇게 될 수도 있다.

결국 변수와 변수 앞의 계수를 문자로 난잡하게 하지 않고 세타로 일관성있게 표현하고 싶어서 세타를 쓰는 것이다.


05 가설 함수 노트


06 평균 제곱 오차 (MSE)

평균 제곱 오차 는 가설 함수를 평가하는 방법 중 하나이다.
데이터가 가설함수와 평균적으로 얼마나 떨어져있는지 계산한다.

오차 = 예측값 - 실측값
오차를 제곱, 모든 제곱을 더하고, 그것을 데이터 개수로 평균하는 것이다.
굳이 제곱하는 이유는 오차가 양수로 통일되어야 함이고, 많은 오차 중 상대적으로 더 큰 오차를 부각시켜야 하기 때문이다.


07 평균 제곱 오차 일반화하기


08 MSE 노트


09 손실 함수

손실함수 (loss Function)
가설 함수의 성능을 평가하는 함수, 함수가 작을수록 데이터에 더 잘 맞다.

평균 제곱 오차가 클수록 손실도 크다. (안좋다.)
1/2m 은 계산을 위한 장치.

손실함수의 인풋인 세타값을 설정해서 아웃풋을 본다. 반면 손실함수에서의 x 와 y 는 정해진 값을 대입하는 것으로 손실함수에서는 상수이다.


손실함수 노트


11 경사 하강법 (Gradient descent)

J 의 그래프를 가정하자.

손실함수의 아웃풋을 최소화, 극소점을 찾는 것이다.

세타값을 조절하며 극소점을 향해 내려간다는 뜻으로 경사하강법의 이름을 붙인 것이다.

손실함수 J 의 인풋이 두 개일때 시각적으로 표현하면 3차원 그래프가 그려진다.

3차원에서의 기울기는 편미분을 한 후, 좌표를 대입해 벡터값을 만드는 것이다.
벡터가 나타내는 것은

  • J 가 얼마나 기울었는지
  • 현재 지점에서 가장 가파르게 올라가는 방향이라고 했다.

극소점으로 가장 가파르게 내려가는 방향이 필요하므로, 벡터에 - 를 붙이기만 하면 된다. 이런식으로 극소점을 찾는 걸 가설함수를 개선한다고 하고, 극소점에 매우 가까워지면 최적화되었다고 한다.


12 경사하강법 테크닉

아래로 내려가기 위해선 손실함수의 기울기 를 이용한다. (기울기의 반대로 내려간다.)

최적화를 위해선 세타를 계속 개선시켜야 한다고 했다. (움직이는 건 세타)

현재 세타1과 세타2가 각각 -3,-3 이라고 할 떄, 구한 기울기 벡터는 다음과 같다. 벡터는 기울기이자 가파르게 올라가는 방법이므로, -를 붙여서 빼는데, 이때 학습률 알파를 곱해서 뺀다.

학습률이 클수록 많이 움직이는 것이다. 일정한 알파를 곱해서 빼면 저렇게 세타가 이동한다.

일반화해보자.

알파 뒤에 붙어있는 복잡한 값은 손실함수를 세타0에 대해서 편미분한 값, 손실함수를 세타1에 대해서 편미분한 값 이된다.


13 경사하강법 계산


14 선형 회귀 구현하기 쉽게 표현하기

✅ 에러 정의하기

모든 데이터들의 예측값과 실제 데이터의 차이를 한 번에 표시해보자.
변수의 이름은 에러이다!

✅ 세타0 업데이트
에러의 평균을 뮤에러라고 표현하면 세타0에 대한 업데이트 공식을 다음과 같이 표현한다.

✅ 세타 1 업데이트
오차 뒤에 x 가 또한번 곱해지는 것을 게산해야 한다. (x 또한 행렬로 행렬 간의 곱이다, 동그라미로 표시)

최종 세타 1 업데이트는 다음과 같다.
에러와 x 행렬 곱의 뮤를 빼준 것!

간단하다.


profile
Mathematics, Algorithm, and IDEA for AI research🦖

0개의 댓글