정규 방정식 | Rstat101 Week 6 (심화) 회귀분석 정규방정식(Normal Equation) 손으로 풀기 상위 90개 답변

당신은 주제를 찾고 있습니까 “정규 방정식 – rstat101 week 6 (심화) 회귀분석 정규방정식(Normal equation) 손으로 풀기“? 다음 카테고리의 웹사이트 ppa.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 슬기로운통계생활 이(가) 작성한 기사에는 조회수 1,493회 및 좋아요 23개 개의 좋아요가 있습니다.

정규방정식(Normal equation 혹은 Ordinary least squares 혹은 linear least squares)은 통계학에서 선형 회귀상에서 알지 못하는 값(parameter)를 예측하기 위한 방법론이다.

정규 방정식 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 rstat101 week 6 (심화) 회귀분석 정규방정식(Normal equation) 손으로 풀기 – 정규 방정식 주제에 대한 세부정보를 참조하세요

학부 응용통계 중간고사 단골이죠. 회귀직선을 손으로 구해봅시다.

정규 방정식 주제에 대한 자세한 내용은 여기를 참조하세요.

정규방정식(Normal equation) – 네이버블로그

이번 포스팅에서는 정규방정식을 살펴보겠습니다. 쉽게 이야기하자면 정규방정식은 다항 방정식을 행렬로 나타내고, 역행렬을 통해 최적의 값을 찾는 방법 …

+ 여기에 자세히 보기

Source: blog.naver.com

Date Published: 11/12/2021

View: 4754

Normal Equation(정규방정식) – Guru_Park의 블로그

잔차의 제곱의 합을 최소로 한다는 조건, 즉 최소제곱법에 의하여 얻어지는, 미지수의 개수와 같은 수의 방정식이다. 라고 정의가 되어있는데, 이는 곧 …

+ 자세한 내용은 여기를 클릭하십시오

Source: guru.tistory.com

Date Published: 7/9/2021

View: 2021

앤드류 응의 머신러닝 (4-6) : 정규 방정식 – 브런치

정규 방정식은 특정 선형 회귀 문제에서 파라미터 θ의 최적값을 구하는 더 나은 방법입니다. 지금까지 선형 회귀에 사용했던 알고리즘은 비용 함수 J(θ)를 …

+ 여기에 자세히 보기

Source: brunch.co.kr

Date Published: 1/3/2022

View: 5222

[머신러닝 reboot] 단순 선형 회귀 분석 – 정규방정식 도출하기

그 시작은 정규 방정식이다. 정규방정식. 사실 그동안 비용함수를 최소화 하는 가중치를 찾기 위한 방법으로 경사하강법만을 알고 있었는데 …

+ 여기에 표시

Source: mazdah.tistory.com

Date Published: 12/22/2021

View: 5398

ML알고리즘-1.0. 선형 회귀(Linear Regression)와 정규방정식

선형 회귀 모델에서의 학습은 비용 함수(Cost function, 손실 함수 – Loss function)인 RMSE나 MSE를 최소로 만드는 θ θ 를 찾는 것이다. 3. 정규방정식( …

+ 여기에 표시

Source: gooopy.tistory.com

Date Published: 11/18/2021

View: 6438

[머신러닝 수학] 선형회귀모델의 정규방정식 – gyeo-ri.com

정규방정식은 비용함수가 최소가 되는 파라미터 벡터(theta)를 구하는 공식이다. 선형회귀모델에서 주로 사용하는 RMSE(평균제곱근오차) 또는 MSE(평균 …

+ 여기를 클릭

Source: gyeo-ri.tistory.com

Date Published: 5/27/2022

View: 6130

사영(Projection)과 정규방정식(Normal Equation) – by Yngie

사영(Projection)과 정규방정식(Normal Equation). 12 Sep 2020 | Linear-Algebra. Projection. 이번 시간에는 사영(Projection)에 대하여 알아보도록 하겠습니다.

+ 여기에 표시

Source: yngie-c.github.io

Date Published: 8/11/2022

View: 6198

[선형대] 정규방정식(Normal equation) – 파이프마임

정규방정식(Normal equation) … Ax=projW b A x = p r o j W b 일때 최소값이므로 오차도 최소값이 됩니다. b−Ax=b−projW b b − A x = b − p r o j W …

+ 여기에 자세히 보기

Source: seong6496.tistory.com

Date Published: 9/5/2021

View: 3675

정규방정식 – 생각정리

학습목표 이번 강의에서는 Least Sqaures Problem을 푸는 방법 중 하나인 정규방정식을 배워보도록 하겠습니다. 그리고 그 해를 유도하는 두 가지 …

+ 여기에 자세히 보기

Source: junklee.tistory.com

Date Published: 11/29/2022

View: 8330

주제와 관련된 이미지 정규 방정식

주제와 관련된 더 많은 사진을 참조하십시오 rstat101 week 6 (심화) 회귀분석 정규방정식(Normal equation) 손으로 풀기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

rstat101 week 6 (심화) 회귀분석 정규방정식(Normal equation) 손으로 풀기
rstat101 week 6 (심화) 회귀분석 정규방정식(Normal equation) 손으로 풀기

주제에 대한 기사 평가 정규 방정식

  • Author: 슬기로운통계생활
  • Views: 조회수 1,493회
  • Likes: 좋아요 23개
  • Date Published: 2020. 4. 5.
  • Video Url link: https://www.youtube.com/watch?v=2tvZVM9AAW4

위키백과, 우리 모두의 백과사전

정규방정식(Normal equation 혹은 Ordinary least squares 혹은 linear least squares)은 통계학에서 선형 회귀상에서 알지 못하는 값(parameter)를 예측하기 위한 방법론이다.

경사 하강법과의 비교 [ 편집 ]

경사 하강법과 마찬가지로 예측 알고리즘에 해당한다. 경사 하강법이 수학적 최적화 알고리즘으로서 적절한 학습비율(learning rate)를 설정해야하고 많은 연산량이 필요하지만 정규방정식에는 그와 같은 단점이 없다는 장점이 있다. 하지만 정규방정식은 행렬 연산에 기반하기 때문에 피처의 개수가 엄청나게 많을 경우 연산이 느려지는 것을 피할 수 없다. 하지만 경사 하강법은 아무리 많은 피쳐가 존재하더라도 일정한 시간 내에 해법을 찾는 것이 가능하다. 그러므로 예측 알고리즘을 선택할 때 있어 피쳐의 개수에 따라 알맞은 것을 선택하여야 한다.[1]

정규방정식(Normal equation)

ML 정규방정식(Normal equation) muke0822 ・ URL 복사 본문 기타 기능 공유하기 신고하기 저번 포스팅에서 손실 함수를 최소화하는 계수를 찾는 두 가지 방법 정규방정식(Normal euqation)과 경사하강법(Gradient descent)을 언급했습니다. 이번 포스팅에서는 정규방정식을 살펴보겠습니다. 쉽게 이야기하자면 정규방정식은 다항 방정식을 행렬로 나타내고, 역행렬을 통해 최적의 값을 찾는 방법이라고 할 수 있습니다. 우리는 어떤 식의 최솟값을 찾으려고 할 때 미분을 이용하곤 합니다. 여기서도 동일하게 a, b에 대한 최솟값을 찾기 위해 각 변수에 대해 편미분을 취해줍니다. 편미분에 관한 정보는 이곳과 이곳을 참고하면 좋습니다. 우리의 목적은 최적의 계수 a, b를 구하는 것입니다. 역행렬 이용하여 값을 찾기 위해서 식을 풀어서 정리하면 아래와 같습니다. 이를 행렬로 나타내면 아래와 같습니다. 간단히 하면 다음과 같습니다. 여기에 (XTX)-1을 양변에 곱해줌으로써 cost 값을 최소로 하는 a와 b를 구할 수 있습니다. 이렇게 보면 간단한 연산으로 계수를 구하기 쉬울 것처럼 보입니다. 하지만 데이터의 수가 늘어나고 행렬이 점점 커지다 보면, 역행렬을 구하기가 매우 어려워집니다. 이 계산에는 엄청난 연산량이 필요하며, 역행렬이 존재한다는 보장도 없기 때문입니다. 그러므로 대부분 경사하강법을 통해 선형 방정식의 계수를 찾습니다. 다음 포스팅에서는 경사하강법에 대하여 알아보겠습니다. 질문이나 지적 사항은 댓글로 남겨주시면 감사하겠습니다. 인쇄

Normal Equation(정규방정식)

728×90

– Normal Equation 이란.

데이터 분석에서 회귀를 진행했을때, 오차를 줄여 줄 수있도록 하는 방법론 중 하나이다. 네이버 지식백과에서는

잔차의 제곱의 합을 최소로 한다는 조건, 즉 최소제곱법에 의하여 얻어지는, 미지수의 개수와 같은 수의 방정식이다.

라고 정의가 되어있는데, 이는 곧 전체 오차의 합을 줄여나가 회귀식을 구하는데 목적이 있다 할 수 있다.

– Cost Function을 최소화 하는 법

여기서 argmin 은 최소가 될때까지 반복시키겠다는 의미이다. 따라서 cost function을 최소화 하기 위해, 각 항들의 오차를 제곱하여, 최소가 될때까지 반복시키는 것이 우리가 원하는 normal eq의 최종 형태이다.

– 일차식에서의 회귀식 표현해보기

식을 보게 되면, 좌측에 일차식을 나타내는 식이 5개 있고, 우측 Y = Xw으로 weight 가중치와 X 값의 행렬을 곱해서 Y값을 예측하고 있다. 이렇게 되면, J(오차의 제곱 합) 은

이 되게 되고, J를 w0,w1 으로 미분해주게되면, 경사하강법(gradient descent)로 인하여 dJ가 0이될때 J가 최소값을 가지게 된다.

– 행렬을 이용하여 w0, w1 가중치의 최소값 찾기

위의식을 정리하여 풀게 되면, (m 은 반복 수)

이 되게 되고 , 이는 곧 좌측변을 행렬로 표현하게 된다면,(우측변의 시그마Y부분은 나중에 정리해주겠다.)

가 되게 되는 데, (XtX부분이 밑의 식처럼 표현되기 때문에)

XtX 가 위의 식 처럼 행렬식으로 유도가 되기 때문이다.(자세한 부분은 생략)

– 최종 w 가중치 값 행렬식으로 표현하기

이제 우측의 y부분을 행렬식으로 나타내준다면, 행렬식으로 모든 부분이 표현 가능하다.

우측의 y부분은

처럼 표현이 되고, (X의 각항들을 y가 곱해줌을 행렬로 표현함으로 전치를 시켜 y와 곱해준다.)

따라서 전체 식은

이 되게 되고, w 가중치를 구해주기 위함 이므로 , XtX 를 우변으로 넘겨주면,

이 되게 된다. 이 식이 Normal Eq 를 이용하여, 가중치의 최솟값을 구해주기 위한 식이다.

– 일반식 표현

일반식으로 나타내주게 된다면,

이 되게 되는데, 이를 실제로 XtX를 역행렬 취하여, 구해주게 된다면, (1/ad-bc ~~~ 의 과정은 생략)

이 최종적으로 W가중치를 구하기 위해 X,y 값들을 이용하여 구해준 식이 된다. 어쨋든 중요한 사실은

요식만 머릿속에 박아넣고 기억하고 있으면 좋겠다 …

(Ndrew Ng 교수님은 머신러닝 수업에서 이부분을 따로 유도를 안하셨던걸로 기억하지만, 네이버 부트코스에서 수업을 듣다 정리가 잘되어 있어 참고하였습니다.)

https://www.boostcourse.org/ai222/

728×90

앤드류 응의 머신러닝 (4-6) : 정규 방정식

온라인 강의 플랫폼 코세라의 창립자인 앤드류 응 (Andrew Ng) 교수는 인공지능 업계의 거장입니다. 그가 스탠퍼드 대학에서 머신 러닝 입문자에게 한 강의를 그대로 코세라 온라인 강의 (Coursera.org)에서 무료로 배울 수 있습니다. 이 강의는 머신러닝 입문자들의 필수코스입니다. 인공지능과 머신러닝을 혼자 공부하면서 자연스럽게 만나게 되는 강의입니다.

Linear Regression with Mutiple Variables

다변수 선형회귀

Computing Parameters Analytically

(분석적 파라미터 연산)

Normal Equation (정규 방정식)

In this video, we’ll talk about the normal equation, which for some linear regression problems, will give us a much better way to solve for the optimal value of the parameters theta. Concretely, so far the algorithm that we’ve been using for linear regression is gradient

descent where in order to minimize the cost function J of Theta, we would take this iterative algorithm that takes many steps, multiple iterations of gradient descent to converge to the global minimum. In contrast, the normal equation would give us a method to solve for theta analytically, so that rather than needing to run this iterative algorithm, we can instead just solve for the optimal value for theta all at one go, so that in basically one step you get to the optimal value right there.

이번 강의는 정규 방정식을 설명합니다. 정규 방정식은 특정 선형 회귀 문제에서 파라미터 θ의 최적값을 구하는 더 나은 방법입니다. 지금까지 선형 회귀에 사용했던 알고리즘은 비용 함수 J(θ)를 최소화하는 경사 하강법입니다. 경사 하강법은 전역 최소값에 수렴하기 위해 많은 스텝과 반복을 하는 알고리즘입니다. 이와 반대로 정규 방정식은 파라미터 θ를 직접 계산하는 방법입니다. 반복적으로 알고리즘을 돌릴 필요 없이 파라미터 θ의 최적값을 한 번에 구합니다. 즉, 기본적으로 최적 값을 구하기 위해 단 한 번의 스텝이면 충분합니다.

It turns out the normal equation that has some advantages and some disadvantages, but before we get to that and talk about when you should use it, let’s get some intuition about what this method does. For this week’s planetary example, let’s imagine, let’s take a very simplified cost function J of Theta, that’s just the function of a real number Theta. So, for now, imagine that Theta is just a scalar value or that Theta is just a row value. It’s just a number, rather than a vector. Imagine that we have a cost function J that’s a quadratic function of this real value parameter Theta, so J of Theta looks like that. Well, how do you minimize a quadratic function? For those of you that know a little bit of calculus, you may know that the way to minimize a function is to take derivatives and to set derivatives equal to zero. So, you take the derivative of J with respect to the parameter of Theta. You get some formula which I am not going to derive, you set that derivative equal to zero, and this allows you to solve for the value of Theda that minimizes J of Theta. That was a simpler case of when data was just real number.

정규 방정식이 무엇인지 언제 사용하는 지를 먼저 설명하고 정규 방정식의 장단점을 나중에 설명합니다. 여기 단순화된 비용 함수 J(θ)가 있습니다.

여기서, 파라미터 θ는 실수이자 스칼라입니다. 벡터가 아니라 그냥 숫자입니다. 비용 함수 J(θ)는 실수 파라미터 θ에 대한 2차 함수입니다. 비용 함수 J(θ)를 그래프는 이차 함수 그래프 모양입니다. 2차 함수의 값을 최소화하는 방법은 무엇일까요?

미적분에서 함수를 최소화하는 방법은 함수를 미분한 후 미분이 0이 되는 값을 찾는 것입니다. 비용 함수 J(θ)를 미분하면 어떤 값이 나올 것입니다. 여기서 비용 함수 J(θ)를 미분하지 않을 것입니다. 이 식이 0되는 방정식을 만듭니다. 즉, 미분의 결과가 0일 때 비용 함수 J(θ)가 최소화되는 θ를 구할 수 있습니다. 데이터가 실수일 때 더 간단합니다.

In the problem that we are interested in, Theta is no longer just a real number, but, instead, is this n+1-dimensional parameter vector, and, a cost function J is a function of this vector value or Theta 0 through Theta m. And, a cost function looks like this, some square cost function on the right. How do we minimize this cost function J? Calculus actually tells us that, if you, that one way to do so, is to take the partial derivative of J, with respect to every parameter of Theta J in turn, and then, to set all of these to 0. If you do that, and you solve for the values of Theta 0, Theta 1, up to Theta N, then, this would give you that values of Theta to minimize the cost function J. Where, if you actually work through the calculus and work through the solution to the parameters Theta 0 through Theta N, the derivation ends up being somewhat involved. And, what I am going to do in this video, is actually to not go through the derivation, which is kind of long and kind of involved, but what I want to do is just tell you what you need to know in order to implement this process so you can solve for the values of the thetas that corresponds to where the partial derivatives is equal to zero. Or alternatively, or equivalently, the values of Theta is that minimize the cost function J of Theta. I realize that some of the comments I made that made more sense only to those of you that are normally familiar with calculus. So, but if you don’t know, if you’re less familiar with calculus, don’t worry about it. I’m just going to tell you what you need to know in order to implement this algorithm and get it to work.

문제는 파라미터 θ가 실수가 아니라 (n+1) 차원의 파라미터 벡터인 것입니다. 비용 함수도 J(θ0, θ1,…, θm)입니다. 비용 함수 J(θ0, θ1,…, θm)를 어떻게 최소화할 수 있을까요?

J(θ0, θ1,…, θm)를 편미분 한다면 최소값을 구할 수 있습니다. θj 각각의 파라미터에 대해 차례로 J 함수를 미분하고 모두 0이 되는 값을 찾습니다. 그러면 파라미터 θ0, θ1,…, θn까지 모든 파라미터 θ의 최적값을 구할 수 있고, 비용 함수 J(θ0, θ1,…, θm)의 최소값을 찾을 수 있습니다.

이번 강의에서 시간도 많이 걸리고 복잡한 편미분을 설명하지 않습니다. 편미분의 값이 0이 되는 파라미터 θ값을 구할 수 있도록 편미분 과정에서 몇 가지 사항만을 설명합니다. 좀 다르게 말하면, 비용 함수 J(θ)가 최소값을 가지는 θ를 구하는 것입니다. 이것은 미적분에 익숙하지 않은 분들에게 생소하지만, 미적분을 몰라도 걱정할 필요는 없습니다. 학습 알고리즘을 구현하고 작동시키는 데 필요한 것들만 알면 됩니다.

For the example that I want to use as a running example let’s say that I have m = 4 training examples. In order to implement this normal equation at big, what I’m going to do is the following. I’m going to take my data set, so here are my four training examples. In this case let’s assume that, you know, these four examples is all the data I have.

여기에 m=4인 학습 데이터 셋이 있습니다. 정규 방정식을 구현하기 위해 필요한 것들을 정리합니다.

What I am going to do is take my data set and add an extra column that corresponds to my extra feature, x0, that is always takes on this value of 1. What I’m going to do is I’m then going to construct a matrix called X that’s a matrix are basically contains all of the features from my training data, so completely here is my here are all my features and we’re going to take all those numbers and put them into this matrix “X”, okay? So just, you know, copy the data over one column at a time and then I am going to do something similar for y’s. I am going to take the values that I’m trying to predict and construct now a vector, like so and call that a vector y. So X is going to be a m by (n+1) – dimensional matrix, and y is going to be a m-dimensional vector where m is the number of training examples and n is, n is a number of features, n+1, because of this extra feature X0 that I had.

우선, 데이터 셋에 피처 x0 열을 하나 추가합니다. 피처 x0의 값은 항상 1입니다. 다음으로 행렬 X를 만듭니다. 행렬 X는 학습 데이터 셋의 모든 피처를 포함합니다. 행렬 X에 모든 데이터를 배치합니다. 한 번에 한 열씩 복사합니다. 다음으로 벡터 y를 만듭니다. 주택 가격을 그대로 복사합니다. 행렬 X는 m X (n+1) 차원의 행렬이고, y는 m차원 벡터입니다. m은 학습 데이터의 수이고, n은 피처의 수입니다. n+1인 이유는 x0를 추가했기 때문입니다.

Finally if you take your matrix X and you take your vector Y, and if you just compute this, and set theta to be equal to X transpose X inverse times X transpose Y, this would give you the value of theta that minimizes your cost function. There was a lot that happened on the slides and I work through it using one specific example of one dataset. Let me just write this out in a slightly more general form and then let me just, and later on in this video let me explain this equation a little bit more.

마지막으로 행렬 X와 벡터 y를 활용하여 파라미터 벡터 θ를 구하는 공식입니다.

여기서, 파라미터 벡터 θ는 비용 함수 J(θ)를 최소화하는 값입니다. 너무 많은 것을 설명했습니다. 좀 더 일반화된 공식으로 정리하고 정규 방정식을 설명합니다.

It is not yet entirely clear how to do this. In a general case, let us say we have m training examples so X1, Y1 up to Xm, Ym and n features. So, each of the training example x(i) may looks like a vector like this, that is a n+1 dimensional feature vector. The way I’m going to construct the matrix “X”, this is also called the design matrix is as follows. Each training example gives me a feature vector like this. say, sort of n+1 dimensional vector. The way I am going to construct my design matrix X is only construct the matrix like this. and what I’m going to do is take the first training example, so that’s a vector, take its transpose so it ends up being this, you know, long flat thing and make x1 transpose the first row of my design matrix. Then I am going to take my second training example, x2, take the transpose of that and put that as the second row of x and so on, down until my last training example. Take the transpose of that, and that’s my last row of my matrix X. And, so, that makes my matrix X, an

M by N +1 dimensional matrix.

파라미터 벡터 θ를 구하는 공식은 이해하기 어렵습니다. 우선은 4 개의 학습 데이터 셋에 대해 행렬 X를 피처 벡터 x^(i))^T로 표현할 수 있습니다.

공식을 일반화합니다. m개의 학습 데이터 셋이(x^(1) , y^(1))부터 (x^(m), y^(m))까지 있습니다. n개의 피처가 있으므로 학습 데이터 x^(i)는 (n+1) 차원 의 피처 벡터입니다. 행렬 X는 디자인 행렬이라고도 부릅니다.

피처 벡터는 (n+1) 차원 벡터입니다. 피처 벡터를 활용하여 디자인 행렬 X를 만듭니다. 첫 번째 학습 데이터를 피처 벡터 x^(1)로 정리한 후에 디자인 행렬 X에 넣기 위해 전치합니다. x^(1)의 전치하여 행 벡터로 디자인 행렬 X의 첫 번째 행에 넣습니다. 피처 x1의 데이터를 전치한 것이 디자인 매트릭스의 첫 번째 행 x^(1)이 됩니다. 두 번째 학습 데이터 x^(2) 벡터를 전치하고 행렬 X의 두 번째 행으로 넣습니다. 마지막 학습 데이터 x^(m)까지 반복합니다. 마지막 학습 데이터를 전치하고 행렬 X의 마지막 행으로 만듭니다. 행렬 X는 (m X n+1) 차원 행렬입니다.

As a concrete example, let’s say I have only one feature, really, only one feature other than X zero, which is always equal to 1. So if my feature vectors X-i are equal to this 1, which is X-0, then some real feature, like maybe the size of the house, then my design matrix, X, would be equal to this. For the first row, I’m going to basically take this and take its transpose. So, I’m going to end up with 1, and then X-1-1. For the second row, we’re going to end up with 1 and then X-1-2 and so on down to 1, and then X-1-M. And thus, this will be a m by 2-dimensional matrix. So, that’s how to construct the matrix X. And, the vector y–sometimes I might write an arrow on top to denote that it is a vector, but very often I’ll just write this as Y, either way. The vector y is obtained by taking all all the labels, all the correct prices of houses in my training set, and just stacking them up into an m-dimensional vector, and that’s Y. Finally, having constructed the matrix X and the vector y, we then just compute theta as X'(1/X) x X’Y.

여기 단 하나의 피처만 있는 예가 있습니다. 항상 1의 값을 가지는 x0를 제외하고 하나의 피처만 있는 디자인 행렬 X가 있습니다. 피처 x1 은 주택 크기입니다. 디자인 행렬 X는 이렇게 구성할 수 있습니다.

첫 번째 데이터 x^(1)을 전치하고, 두 번째 데이터 x^(2)를 전치하고, 마지막 데이터 x^(m)을 전치합니다. 단 하나의 피처 x1 만 있으므로 x^(m)1으로 표기합니다. 결국 디자인 행렬 X는 m X 2차원 행렬입니다. 이것이 디자인 행렬 X를 만드는 방법입니다.

그리고, 벡터 y에 위쪽에 화살표시를 하여 벡터를 나타내지만 y로 표기합니다. 벡터 y는 모든 레이블(Label)을 포함합니다. 모든 학습 데이터의 실제 주택 가격을 활용하여 m 차원 벡터를 만듭니다. 이것이 벡터 y를 만드는 방법입니다.

마지막으로, 행렬 X와 벡터 y를 계산합니다. 계산 공식은 다음과 같습니다.

I just want to make I just want to make sure that this equation makes sense to you and that you know how to implement it. So, you know, concretely, what is this X'(1/X)? Well, X'(1/X) is the inverse of the matrix X’X. Concretely, if you were to say set A to be equal to X’ x X, so X’ is a matrix, X’ x X gives you another matrix, and we call that matrix A. Then, you know, X'(1/X) is just you take this matrix A and you invert it, right! This gives, let’s say 1/A. And so that’s how you compute this thing. You compute X’X and then you compute its inverse.

여기서 잠시 계산하는 방정식의 의미를 이해합니다.

구체적으로 (X^TX)^-1은 무엇일까요? (X’X)^-1는 X^TX의 역행렬입니다. A를 X^TX로 정의하면, X도 행렬이고 X^T도 행렬이고, X^TX도 행렬입니다. 따라서, A는 행렬입니다. (X^TX)^-1는 행렬 A의 역행렬입니다. A^-1로 표현하면 이해하기 쉬울 것입니다. 즉, X^TX를 계산하고 나서 역행렬을 구하는 것입니다.

We haven’t yet talked about Octave. We’ll do so in the later set of videos, but in the Octave programming language or a similar view, and also the matlab programming language is very similar. The command to compute this quantity, X transpose X inverse times X transpose Y, is as follows. In Octave X prime is the notation that you use to denote X transpose. And so, this expression that’s boxed in red, that’s computing X transpose times X. pinv is a function for computing the inverse of a matrix, so this computes X transpose X inverse, and then you multiply that by X transpose, and you multiply that by Y. So you end computing that formula which I didn’t prove, but it is possible to show mathematically even though I’m not going to do so here, that this formula gives you the optimal value of theta in the sense that if you set theta equal to this, that’s the value of theta that minimizes the cost function J of theta for the new regression.

아직 옥타브 프로그램을 다루지 않았습니다. 이 과정 후반에서 다룰 것입니다. 옥타브 프로그램과 매트랩(matlab)에서 X’X의 역행렬에 X’y를 곱할 때 다음 식을 사용합니다.

X’ : 옥타브 프로그램에서 X의 전치(transpose)를 나타내는 기호

pinv() : 역행렬을 계산하는 함수

여기서, pinv(X’*X)는 X’X의 역행렬을 계산하는 함수입니다. 이 명령어를 이용하면 파라미터 θ의 최적값을 구할 수 있습니다. 증명을 하지 않았지만, 수학적으로 보여줄 수 있습니다. 최적의 파라미터 θ의 값은 선형 회귀에서 비용 함수 J(θ)를 최소화하는 값을 구할 수 있다는 의미입니다.

One last detail in the earlier video. I talked about the feature skill and the idea of getting features to be on similar ranges of Scales of similar ranges of values of each other. If you are using this normal equation method then feature scaling isn’t actually necessary and is actually okay if, say, some feature X one is between zero and one, and some feature X two is between ranges from zero to one thousand and some feature x three ranges from zero to ten to the minus five and if you are using the normal equation method this is okay and there is no need to do features scaling, although of course if you are using gradient descent, then, features scaling is still important.

지난 강의에서 피처 스케일링(feature scaling)을 자세히 배웠습니다. 피처 스케일링은 피처 값의 범위를 비슷한 범위로 조절하는 것입니다. 정규 방정식은 피처 스케일링이 필요 없습니다. 예를 들면, 피처 x1은 값의 범위가 0과 1 사이이고, 피처 x2는 0과 1000 사이고, 피처 x3는 0에서 0.00005 사이에 있습니다. 각 피처 값의 범위가 제각각이어도 상관없습니다. 정규 방정식은 피처 스케일링이 필요 없지만, 경사 하강법은 피처 스케일링이 필요합니다.

Finally, where should you use the gradient descent and when should you use the normal equation method. Here are some of the their advantages and disadvantages. Let’s say you have m training examples and n features.One disadvantage of gradient descent is that, you need to choose the learning rate Alpha. And, often, this means running it few times with different learning rate alphas and then seeing what works best. And so that is sort of extra work and extra hassle. Another disadvantage with gradient descent is it needs many more iterations. So, depending on the details, that could make it slower, although there’s more to the story as we’ll see in a second. As for the normal equation, you don’t need to choose any learning rate alpha. So that, you know, makes it really convenient, makes it simple to implement. You just run it and it usually just works.And you don’t need to iterate, so, you don’t need to plot J of Theta or check the convergence or take all those extra steps. So far, the balance seems to favor normal the normal equation.

마지막으로, 경사 하강법과 정규 방정식을 언제 사용할지를 정리합니다. 각각의 장점과 단점이 있습니다. m개의 학습 데이터가 있고, n개의 피처가 있습니다. 경사 하강법의 첫 번째 단점은 학습률 α를 결정해야 합니다. 여러 번 경사 하강법을 테스트해서 가장 잘 동작하는 학습률 α를 찾아야 합니다. 또한 반복이 많다는 것도 단점입니다. 경사 하강법에 대한 이야기는 조금 있다가 더 하겠습니다.

정규 방정식은 학습률 α가 필요 없습니다. 매우 편리하고 구현도 간단합니다. 반복도 없습니다. 비용 함수 J(θ) 그래프를 그리거나 최소값으로 수렴하는 것을 확인할 필요가 없습니다. 정규 방정식이 훨씬 더 나은 방법일지도 모릅니다.

Here are some disadvantages of the normal equation, and some advantages of gradient descent. Gradient descent works pretty well, even when you have a very large number of features. So, even if you have millions of features you can run gradient descent and it will be reasonably efficient. It will do something reasonable. In contrast to normal equation, In, in

order to solve for the parameters data, we need to solve for this term. We need to compute this term, X transpose, X inverse. This matrix X transpose X. That’s an n by n matrix, if you have n features. Because, if you look at the dimensions of X transpose the dimension of X, you multiply, figure out what the dimension of the product is, the matrix X transpose X is an n by n matrix where n is the number of features, and for almost computed implementations the cost of inverting the matrix, rose roughly as the cube of the dimension of the matrix. So, computing this inverse costs, roughly order, and cube time. Sometimes, it’s slightly faster than N cube but, it’s, you know, close enough for our purposes. So if n the number of features is very large, then computing this quantity can be slow and the normal equation method can actually be much slower.

정규 방정식의 단점과 경사 하강법의 장점을 정리합니다. 경사 하강법은 피처가 많을 때 효율적입니다. 수백 만개의 피처를 다룰 때 경사 하강법은 효율적으로 잘 동작합니다. 하지만, 정규 방정식은 파라미터 θ를 구하기 위해 X^TX의 역행렬을 계산해야 합니다. n 개의 피처가 있을 때 행렬 X’X은 n X n 차원 행렬입니다. X’의 차원과 X의 차원을 곱하면 n X n 차원 행렬입니다. 역행렬을 계산하는 시간은 대략 행렬의 차원의 세제곱만큼 증가합니다. 즉, 역행렬 계산의 걸리는 시간은 보통 세제곱만큼 걸립니다. 가끔 세제곱보다 빠를 수도 있지만, 차이는 미미합니다. 피처의 수가 엄청 크다면 역행렬에 대한 계산속도는 느려지고 정규 방정식 계산은 훨씬 더 느려집니다.

So if n is large then I might usually use gradient descent because we don’t want to pay this all in q time. But, if n is relatively small, then the normal equation might give you a better way to solve the parameters. What does small and large mean? Well, if n is on the order of a hundred, then inverting a hundred-by-hundred matrix is no problem by modern computing standards. If n is a thousand, I would still use the normal equation method. Inverting a thousand-by-thousand matrix is actually really fast on a modern computer. If n is ten thousand, then I might start to wonder. Inverting a ten-thousand- by-ten-thousand matrix starts to get kind of slow, and I might then start to maybe lean in the direction of gradient descent, but maybe not quite. n equals ten thousand, you can sort of convert a ten-thousand-by-ten-thousand matrix. But if it gets much bigger than that, then, I would probably use gradient descent. So, if n equals ten to the sixth with a million features, then inverting a million-by-million matrix is going to be very expensive, and I would definitely favor gradient descent if you have that many features. So exactly how large set of features has to be before you convert a gradient descent, it’s hard to give a strict number. But, for me, it is usually around ten thousand that I might start to consider switching over to gradient descents or maybe, some other algorithms that we’ll talk about later in this class.

만일 피처의 개수 n이 크다면 경사 하강법을 사용합니다. 경사 하강법은 세제곱만큼 시간이 필요하지 않습니다. 만약 피처의 개수 n이 작다면, 정규 방정식을 사용합니다. 그렇다면 크다와 작다의 기준은 무엇일까요?

현대의 컴퓨터의 계산 능력에 비추어 볼 때 정규 방정식 계산은 시간은 다음과 같습니다.

n이 100 단위일 때 100 X 100 행렬의 역행렬은 쉽게 계산합니다.

n이 1,000 단위일 때 1,000 X 1,000 행렬의 역행렬은 쉽게 계산합니다.

n이 10,000 단위일 때 10,000 x 10,000 행렬의 역행렬은 느리지만 계산합니다. 고민이 필요합니다.

n이 100,000 단위일 때 100,000 x 100,000 행렬의 역행렬은 확실히 오래 걸립니다.

하지만, n이 이보다 더 큰 경우 경사 하강법이 더 효율적입니다. n이 백만 개라면 100만 X 100만 행렬의 역행렬은 많은 시간이 필요합니다. 경사 하강법을 강력히 추천합니다. 사실 피처가 몇 개일 때 경사 하강법을 사용해야 할지를 제시하는 것은 어렵습니다. 전문가들마다 다소 차이가 있지만, 피처가 만개 정도일 때 경사 하강법이나 다른 알고리즘을 고민합니다.

To summarize, so long as the number of features is not too large, the normal equation gives us a great alternative method to solve for the parameter theta. Concretely, so long as the number of features is less than 1000, you know, I would use, I would usually is used in normal equation method rather than, gradient descent.

정리하면, 피처의 수가 많지 않을 때 정규 방정식이 파라미터 θ를 구하는 것이 좋습니다. 정확히

feature의 수가 1,000보다 적을 때 정규 방정식을 사용합니다.

To preview some ideas that we’ll talk about later in this course, as we get to the more complex learning algorithm, for example, when we talk about classification algorithm, like a logistic regression algorithm, We’ll see that those algorithm actually… The normal equation method actually do not work for those more sophisticated learning algorithms, and, we will have to resort to gradient descent for those algorithms. So, gradient descent is a very useful algorithm to know. The linear regression will have a large number of features and for some of the other algorithms that we’ll see in this course, because, for them, the normal equation method just doesn’t apply and doesn’t work. But for this specific model of linear regression, the normal equation can give you a alternative that can be much faster, than gradient descent. So, depending on the detail of your algortithm, depending of the detail of the problems and how many features that you have, both of these algorithms are well worth knowing about.

나중에 배울 내용을 살짝 이야기하면, 더 복잡한 분류(classification) 알고리즘 중에 로지스틱 회귀 알고리즘은 정규 방정식보다 경사 하강법이 더 낫습니다. 경사 하강법은 매우 유용한 알고리즘입니다. 선형 회귀는 매우 많은 피처를 가지는 경우가 많고, 다른 알고리즘들은 정규 방정식을 적용하기 어렵습니다. 하지만, 선형 회귀의 특정 모델은 정규 방정식이 경사 하강법보다 더 빠릅니다. 결국, 어떤 알고리즘을 사용하는지에 따라 학습 문제가 무엇인지에 따라 경사 하강법과 정규 방정식을 적절히 사용해야 합니다.

앤드류 응의 머신 러닝 동영상 강의

정리하며

경사 하강법은 비용 함수 J(θ)가 전역 최소값에 수렴하기 위해 많은 스텝과 많은 반복을 하는 알고리즘입니다. 이와 반대로 정규 방정식은 J(θ)의 최소값에 해당하는 파라미터 θ를 한 번에 구합니다. 공식은 다음과 같습니다.

hθ(X) = θ0x0 + θ1×1 + θ2×2 + θ3×3 + θ4×4 +… 일 때

= θ^T*X

이때, θ를 구하는 공식은 다음과 같다

θ = (X^T *X)^-1 * X^T * y

이것을 옥타브 프로그램에서 θ를 구하는 코드는 다음과 같다. (X이 전치 행렬 X^T를 X’로 표현)

pinv(X’*X)*X’*y

그리고, 정규 방정식은 피처 스케일이 필요 없습니다.

경사 하강법 장점과 단점은 다음과 같습니다.

1) 학습 비율 알파를 결정해야 합니다.

서로 다른 학습 비율 알파를 가지고 여러 번 경사 하강법을 시도하고 최적의 값을 찾아야 합니다.

2) 반복이 많습니다.

다수의 스템을 시도하여 최적의 값을 찾습니다.

3) Featue의 수가 많을수록 효과적

수백만 개의 Feature가 있을 때

정규 방정식의 장점과 단점은 다음과 같습니다.

1) 학습 비율 알파가 없습니다

2) 반복도 없이 계산만 합니다.

3) 역행렬을 계산하는 시간이 많이 걸립니다.

역행렬 계산 시간은 보통 세제곱만큼 걸립니다.

가설 함수에서 경사 하강법과 정규 방정식 중 어느 것을 선택해야 할까요? Feature의 개수가 10,000개를 넘어가면 고민을 해야 합니다. 10,000 x 10,000 행렬부터 역행렬을 구하는 것이 느려집니다. 전문가들은 F피처가 1만 개 정도 일 때 경사 하강법이나 뒤에 배울 알고리즘을 고민합니다.

문제 풀이

아래의 훈련용 데이터셋을 보고 행렬 X와 벡터 y를 구하시오.

정답 4번입니다.

[머신러닝 reboot] 단순 선형 회귀 분석

반응형

인공지능 공부해보겠다고 설레발치기 시작한 것이 어언 2년여가 다되간다.

그간 나름 책도 좀 보고 동영상 강좌도 좀 보고…페이퍼나 논문은 하나도 안보고…ㅠ.ㅠ

그간 읽은 책들과 읽는 중인 책 그리고 읽기 위해 사놓은 책을 좀 정리해보면

읽은 책

• 텐서플로우 첫걸음

• 골빈해커의 3 분 딥러닝

• 머신러닝 워크북

• 밑바닥부터 시작하는 딥러닝

읽는 중인 책

• 핸즈 온 머신러닝

• 머신러닝 탐구생활

읽다가 보류한 책

• 강화학습 첫걸음

• 기초 수학으로 이해하는 머신러닝 알고리즘

• 처음 배우는 딥러닝 수학

• 프로그래머를 위한 선형대수

사놓기만 한 책

• 머신러닝 실무 프로젝트

• 딥러닝의 정석

• 러닝 텐서플로우

• 머신러닝 딥러닝 실전 개발 입문

하지만 공부를 해 가면 해 갈수록 궁금한 것은 더 많아지고 이제는 과연 내가 뭔가를 이해 하고는 있는 건가 하는 생각에

자괴감이 들기 시작했다. 똑같은 내용을 공부하고 있는데 볼수록 새로운 느낌?

결국 자괴감을 이기지 못하고 처음부터 다시 시작하는 길을 선택했다. 처음 시작부터 이해하지 못하고 넘어간 부분들을

차근차근 정리하고, 이해하고 넘어가야 할 것 같아서…(그런 의미에서 현재 읽고있는 2권의 책은 꽤 도움이 되는 것 같다)

특히나 전반적으로 내용을 이해하지 못하게 하는 주된 이유 중 하나가 어려운 용어들과 복잡한 공식들이기도 하고

머신러닝의 기초가 되는 선형 회귀 등을 제대로 이해하지 않고 겁대가리 없이 덥썩 딥러닝으로 직행한 무모함도 충분히

일조를 했기에 다시 처음부터 하나 하나를 정리하는 것으로부터 시작하기로 했다. 그리고

패배적인 자기 만족일지는 모르겠으나 어차피 이 공부는 내가 이 분야의 전문가가 되기 위한 것이라기 보다는 나의 지적 만족을

위한 것이니 쉬엄쉬엄 간들 어떠랴 싶다. 태공망 여상은 나이 80에 주문왕을 만나 그 재능을 펼치기 시작했다는데 그렇다면

나에게는 아직 30년이란 시간이 남은 것 아닌가(뜻밖의 나이 공개가…ㅠ.ㅠ)

느려도 황소 걸음이랬으니 차분하게 한걸음 한걸음 가보자.

그 시작은 정규 방정식이다.

정규방정식

사실 그동안 비용함수를 최소화 하는 가중치를 찾기 위한 방법으로 경사하강법만을 알고 있었는데 이번에 핸즈 온 머신러닝을

읽으면서 처음 정규방정식이란 것이 있다는 것을 알게 되었다.

문제는 이 정규방적이라는 것이 행렬식으로 표현이 되어있어 문돌이의 사고방식으로는 이 것이 어떻게 경사하강법과 동일한

기능을 하게 되는지 이해가 가지 않는 것이었다. 그래서 새로운 시작의 첫 출발을 단순 선형회귀의 비용함수로부터 정규방정식을

도출하는 과정을 정리해보고자 한다.

선형 회귀 비용함수로부터 정규방정식 도출하기

복습

•선형회귀의 가설함수 식에서 편향을 제거하자. 방법은 그냥 b = 0으로 초기화 하는 것이다.

• 비용함수도 다시 한 번 확인하자 .

사전 확인1 – ∑를 행렬로…

• ∑ 로 표현되는 제곱 의 합은 그 수들을 요소로 하는행렬과 그 행렬의 전치행렬의 곱과 같다 ( 복잡하니

1 행짜리 행렬로 확인해보자 ).

사전 확인2–전치행렬의 성질

• 전치행렬은 다음과 같은 성질이 있다 .

• 우선 cost 함수는 W 에 대한 함수이므로 함수 표기를 바꿔보자 ( 함수명 MSE 는 최소제곱법의 영문 표기인 Mean Square Error 의 약어이다 ).

• 이제 명확하게 이 함수는 x 와 y 에 대한 함수가 아니라 W 에 대한 함수로 보일 것이다 .

• 함수는 W 에 대한 함수인데 정작 함수 식에는 W 가 안보이니 내부 함수도 원래대로 치환하자 .

• 사전 확인한 내용을 상기하면서 ➀ 번 식으로 변환해 보자

• 전치행렬의 성질에 따라 ➁ 번 식으로 전개할 수 있다 .

• W 를 포함한 식들을 다시 정리하면 ➂ 번 식이 된다 .

• 다시 한 번 전치행렬의 성질에 따라 식을 전개하면 ➃ 번 식이 된다 .

• 이 변형은 최초의 시그마 식을 전개해서 진행해도 동일한 결과가 나온다 .

•최종 정리된 식은 ➀과 같고 이제 이 값을 미분하여비용함수가 최솟값을 갖는 W를 찾을 것이다. • 비용함수가 최솟값을 갖기 위해서는 비용함수를 미분한 값이 0 이 되어야 한다 . • 미분 과정을 명확하게 하기 위해 식을 한 번 더 정리해 주자 ( 식 ➁ ). 주의할 것은 W 에 대해 미분 한다는 점이다 . • 행렬 A 에 대해 자신과 자신의 전치행렬과의 곱은 제곱과 같다고 했다 . 그리고 전치행렬의 성질에 따라 W 와 X 의 곱의 전치행렬은 X 의 전치행렬과 W 의 전치행렬의 곱과 같다 (W 와 X 의 순서가 바뀜에 주의 ).

• 이제 거의 다 왔다 . • 미분한 함수는 식 ➁ 와 같고 이제 거추장스러운 1/m 도 없앨 수 있다 ( 사실 진작에 1/m 을 없애고 보다 깔끔하게 식을 전개할 수도 있었 으나 나같은 문돌이는 갑자기 저런거 하나 없어져도 극도의 멘붕에 시달릴 수 있기에 끝까지 가져왔다 … -.-).

• 최종 미분식을 W 에 대해 정리해보자 .

• 이렇게 해서 단순 선형 회귀의 비용함수로부터 정규방정식을 도출해보았다 .

선형 회귀 비용함수로부터 정규방정식 도출하기2

• 정규방정식은 다른 형태로도 도출할 수 있다 . 우선 최초의 식을 전개해보자 .

• 이후 전개한 식을 W 에 대해 미분한다 .

• 최종 정리한 후 시그마를 행렬로 변환해보자

• 하지만 아직 이해하지 못한 것이 하나 있다 . • 가설함수에서 편향을 제거하지않고 WX + b 의 형태로 이 과정을 진행하게 되면 최종 정규방정식은 좌측과 같이 나온다 . 이 것이 앞서 도출해본 정규 방정식과 동일한 식이란 것을 문돌이의 두뇌로는 이해하기 힘들다 … ㅠ . ㅠ (분모와 분자 각각 – 뒤에 붙어있는 값들은 대체 어쩔…ㅠ.ㅠ)

•일단 정규방정식은 좌측의 식으로 알아두자 • 정규방정식은 행렬식으로 경사 하강법에 비해 많은 연산량이 필요 하지도 않고 학습률 설정 등 골치아픈 하이퍼파라미터의 설정을 신경쓰지 않아도 된다 . • 하지만 행렬 연산이다보니 특성의 수가 늘어나면 계산속도가 많이 느려지게 된다 . 다만 샘플 수에 대해서는 선형적으로 비례한다고 한다 . • 또한 정규방정식으로 학습된 선형 모델은 예측이 매우 빠르다고 한다 ( 핸즈 온 머신러닝 )

정리

이렇게 해서 새롭게 시작하는 인공지능 학습의 첫 단추를 꿰었다. 하지만 이렇게 차근차근 분석을 하면서도 여전히 어떤 부분에 대해서는 완전하게 이해하지 못한 채 그저 직관적인 이해로 두루뭉술하게 넘어가고 있는 상황이다. 사실 이러한 상태가 가장 환장하는 상태이다. 전체적인 흐름은 대충 이해가 가는데 어떤 디테일한 부분에서 뭔가 막혀있는 듯한 느낌…

첫 대상인 정규방정식도 정리를 하고 보니 아직은 부족한 상태라는 것을 알게 되었다. 이러한 과정이 큰 도움이 되는 것 같다.

아무튼 이번에는 용어 하나, 공식 하나도 집중해서 보면서 차근차근 진행을 해나가 보자. 머신러닝 reboot는 이제 시작이다!

반응형

ML알고리즘-1.0. 선형 회귀(Linear Regression)와 정규방정식

728×90

반응형

선형 회귀(Linear Regression)

통계학의 꽃이라고도 불리는 선형 회귀(Linear Regression)는 수많은 머신러닝 알고리즘의 기반이 되기도 하기 때문에, 반드시 그 원리를 이해해야하는 알고리즘 중 하나다.

선형 회귀의 원리를 단순하게 말하자면, 관찰값으로부터 가장 거리가 짧은 데이터를 대표할 수 있는 선을 긋는 것이며, 그 선을 회귀식이라고 한다. 관찰값으로부터 가장 짧은 거리인지를 평가하는 방법은 최소제곱법(Least Square Method)이 주로 사용된다.

1. 회귀식

$$\hat{y} = \theta_0 + \theta_1x_1 + \theta_2x_2 + \cdots + \theta_nx_n \ \ \ \cdots①$$

$$\hat{y} = h_\theta(x) = \theta \cdot x \ \ \ \cdots②$$

회귀식은 기본적으로 해가 $n$개인 일차 연립방정식의 형태이며, 계수와 특성의 값의 곱의 합에 편향(Bias, 절편 – Intercept)을 더한 것이다.

$\theta_n$는 해당 관찰값의 계수로, 관찰값 $x_n$가 예측값에 미치는 영향을 보여준다.

계수 $\theta$는 음과 양의 부호를 가질 수 있으며, 이를 통해 해당 특성(변수, 필드)가 종속변수(예측값)에 어떠한 영향을 주는지 볼 수 있다.

1.1. 식 ①의 설명

$\hat{y}$: 예측값으로, 종속변수(Dependent variable)이라 한다.

$n$: 특성의 수, 독립변수(Independent variable)의 수이다.

$x_i$: $i$번째 특성값으로, $i$번째 독립변수를 의미한다.

$\theta_j$: $j$번째 모델 파라미터로, 머신러닝 알고리즘 스스로가 학습을 통해 찾아내는 값이다.

1.2. 식 ②의 설명

식 ①을 벡터 형태로 바꾼 것으로, $\theta$와 $x$가 열 벡터(Column vector) 라면, 예측은 $\hat{y} = \theta^Tx$가 된다.

열 벡터란 하나의 열(Column)을 가진 2D 배열이며, $\theta^T$는 열벡터 $\theta$의 전치(Transpose)이다.

두 열 벡터 $\theta$와 $x$의 길이는 서로 동일하므로, 전치 벡터와 길이가 동일한 벡터를 곱하면, 동일한 위치의 원소끼리 곱하고, 더하는 효과가 발생한다.

$\theta$: 편향 $\theta_0$와 계수 $\theta_1, \theta_2, \cdots, \theta_n$에 대한 모델 파라미터 벡터다.

$x$: $x_0, x_1, \cdots, x_n$까지의 데이터의 특성 벡터다. $x_0$는 편향과 곱해지는 값이므로 무조건 1이다.

$\theta \cdot x$: 벡터 $\theta$와 $x$의 점곱으로, $\theta_0x_0 + \theta_1x_1 + \theta_2x_2 + \cdots + \theta_nx_n$과 같다.

$h_\theta$: 모델 파라미터 $\theta$를 사용한 가설(Hypothesis) 함수다.

2. 손실함수 RMSE & MSE

선형 회귀 모델의 학습은 훈련 데이터 셋(Train dataset)에 가장 잘 맞는 모델 파라미터($\theta$)를 찾아내는 것이다.

이를 위해 모델이 훈련 데이터에 얼마나 잘 맞는지 측정해야한다.

선형 회귀 모형은 평균 제곱근 오차(Root Mean Square Error, RMSE) 를 사용하여, 모델의 성능을 평가하며, RMSE를 최소화하는 $\theta$를 찾아내는 것이 선형 회귀 모델의 학습 과정 이다.

를 사용하여, 모델의 성능을 평가하며, 이다. RMSE 공식은 다음과 같다.

$$RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(\hat{y_i} – y_i)^2}$$

$$ RMSE(X, h_{\theta}) = RMSE(\theta) = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(\theta^Tx^{(i)} – y^{(i)})^2} $$

평균 제곱근 오차(RMSE)의 원리는 표준편차와 동일하다. 예측값과 실제 관측값의 편차 제곱의 합의 평균에 제곱근을 씌워 제곱의 합을 보정해주는 것이다.

평균 제곱근 오차(RMSE)에 대하여 더 자세히 알고자하는 경우, 다음 포스트 ” 딥러닝-5.2. 손실함수(3)-평균제곱근오차(RMSE)

예측값과 실제값의 편차의 평균에 가장 근사한 지표는 RMSE지만, 실제 선형 회귀 모델을 만들 때는 평균 제곱 오차(Mean Square Error, MSE) 가 더 많이 사용된다.

가 더 많이 사용된다. MSE 공식은 다음과 같다.

$$ MSE = \frac{1}{n}\sum_{i=1}^{n}(\hat{y_i} – y_i)^2 $$

$$ MSE(X, h_{\theta}) = MSE(\theta) = \frac{1}{n}\sum_{i=1}^{n}(\theta^Tx^{(i)} – y^{(i)})^2 $$

RMSE보다 MSE를 사용하는 이유는 제곱근을 사용하지 않았기 때문에 실제 값보다 증폭된 결과가 도출되긴 하지만, 공식이 더 간단하며, 미분하기도 쉽다.

어차피 MSE로 도출된 결과들을 비교하기 때문에 다른 모델과 비교할 때, 보다 엄격한 결과가 나오는 RMSE를 굳이 사용할 필요가 없다.

어차피 MSE로 도출된 결과들을 비교하기 때문에 다른 모델과 비교할 때, 보다 엄격한 결과가 나오는 RMSE를 굳이 사용할 필요가 없다. MSE에 대해 보다 자세히 알고자 하는 경우, 다음 포스트 ” 딥러닝-5.1. 손실함수(2)-평균제곱오차(MSE)

선형 회귀 모델에서의 학습은 비용 함수(Cost function, 손실 함수 – Loss function)인 RMSE나 MSE를 최소로 만드는 $\theta$를 찾는 것이다.

3. 정규방정식(Normal equation)

$$\hat{\theta} = (X^TX)^{-1}X^Ty$$

$\hat{\theta}$: 비용 함수를 최소화하는 $\theta$값이다.

$y$: $y^(1)$부터 $y^{(m)}$까지 포함하는 타깃 벡터다.

정규방정식(Normal equation, Ordinary least squares, linear least squrares)는 선형 회귀에서 모델 파라미터인 $\theta$를 예측하기 위해 사용하는 최적화 알고리즘 이다.

이다. 위 정규방정식은 MSE를 통해 유도 된다.

3.1. 정규방정식의 유도

MSE 공식은 다음과 같다. $MSE(\theta) = \frac{1}{n}\sum_{i=1}^{n}(\theta^Tx^{(i)} – y^{(i)})^2$

위 공식을 보면, MSE 공식은 $\theta^T$에 대하여 이차함수의 개형을 갖는 것을 알 수 있다.

그러므로, MSE을 $theta^T$에 대하여 편미분의 결과가 0이 나오게 하는 $\theta^T$의 값이 MSE를 최소로 만드는 값임을 알 수 있다.

위 내용을 이용하여, 정규방정식을 유도해보자.

3.2. 정규방정식과 경사하강법의 차이점

대표적인 최적화 알고리즘인 경사하강법(참고: ” 딥러닝-6.0. 최적화(1)-손실함수와 경사하강법

MSE를 유도하여 만들어진 정규방정식은 행렬 연산을 통해 한 번에 최적해를 구한다.

정규방정식은 행렬 연산을 통해 결과를 구하기 때문에 피처의 크기(Column * Row의 양)가 커지면 커질수록 계산 시간이 오래 걸린다.

경사하강법은 계산이 일어나 기본적으로 소모되는 시간이 크긴 하지만, 아무리 피처의 크기가 크더라도 일정 시간 안에 최적해를 찾아낼 수 있다.

즉, 피처의 크기가 지나치게 크다면 선형 회귀에서도 경사하강법을 사용하는 것이 좋으며, 피처의 크기가 적당한 수준이라면, 정규방정식을 사용하도록 하자.

[참고]

다음 포스트에서는 파이썬 넘파이(Numpy) 함수만을 사용해서 선형 회귀 모델을 구현해보고, 사이킷런을 사용해서 선형 회귀 모델을 사용해보도록 하자.

728×90

반응형

[머신러닝 수학] 선형회귀모델의 정규방정식

정규방정식(Normal Equation) : 선형 모델의 파라미터를 예측하기 위한 방법

정규방정식은 비용함수가 최소가 되는 파라미터 벡터(theta)를 구하는 공식이다. 선형회귀모델에서 주로 사용하는 RMSE(평균제곱근오차) 또는 MSE(평균제곱오차)와 같은 비용함수를 파라미터 값에 대하여 미분하고, 그 값이 0이 되는 파라미터의 값을 구한다. 선형모델에서 정규방정식을 유도하는 과정은 다음과 같다.

정규방정식은 비교적 모델이 단순한 경우(특성 또는 샘플의 개수가 적은 경우) 활용할 수 있으나, 모델이 복잡해질수록 경사하강법(Gradient Descent) 등과 같은 다른 파라미터 추정 알고리즘에 비해 연산 시간이 크게 증가하는 단점이 있다.

참고자료

1. 핸즈온 머신러닝 2판(오렐리앙 제롱 저, 박해선 옮김) – 한빛미디어(2020)

2. [네이버 블로그] 행렬로 푸는 최소자승 회귀모형 : piramvill2.org/?p=3224

사영(Projection)과 정규방정식(Normal Equation) · Data Science

Follow me : |

Increscunt animi virescit volnere virtus by Friedrich Nietzsche

© 2021 Yngie. This work is liscensed under CC BY-NC 4.0.

This blog is forked from ratsgo’s blog

[선형대] 정규방정식(Normal equation)

반응형

앞선 포스팅에서 최소제곱방법을 다뤘었는데 행렬표현으로 하지 않고 직관적인 설명 위주로 했습니다.

가장 간단한 (x,y) 에 대한 설명을 하였습니다.

이번에는 변수의 갯수를 n개까지 늘리는 소위 말하는 정규방정식 유도 방법을 포스팅하겠습니다.

이전 포스팅과 같은 최소제곱방법이지만 좀 더 일반적인 상황이고 초점이 파라미터가 아니라 x에 있습니다.

변수가 n 개까지 늘어나고 m 개의 데이터라고 보시면 될 것 같습니다.

즉, 변수 n개에 대한 m개의 방정식을 푸는 연립방정식이 되겠습니다.

보통 식이 많은 연립방정식은 선형대에서 배우는 linear system으로 넘겨 행렬 문제로 바꿔버립니다.

즉, linear system으로 표현하면 Ax = b 를 푸는 문제가 됩니다.

n개의 변수와 n 개의 방정식이라면 정확하게 답이 하나 나오는 상황이 되지만

변수와 방정식의 갯수가 다르면 원래 데이터와 구한 값 간에 에러가 발생할 수 밖에 없습니다.

이를 최소화하는 문제가 최소제곱문제(Least Squares Problem)가 됩니다.

최소화된 값을 해(solution)라고 하면 정규방정식(Normal equation)은 그 해를 구하는 공식이 됩니다.

최소제곱문제(Least Squares Problem)

최소제곱문제를 수학적으로 정의하면 다음과 같습니다.

변수 n개와 m개의 방정식인 Linear system Ax=b 에 대하여, $R^m$에서의 유클리안 내적이 가능할 때, 에러인 $ \|b-Ax\| $ 가 최소화되는 벡터 x를 구하여라.

만약 x가 존재하면 이를 Ax=b의 least squares solution 이라 하고 $ \|b-Ax\| $ 를 least squares error 라고 합니다.

실제로 구할 때는 b-Ax 가 가장 작아지는 값을 구하기 위해 벡터를 사용합니다.

b-Ax 는 벡터의 뺄셈이 됩니다.

b- Ax 가 그림처럼 그려진다면 변하는 것은 Ax 이므로 Ax 와 직각이 되게끔 움직여준다면 b-Ax 가 가장 짧은 선이 될 것입니다. 이는 b를 Ax로 정사영한 것과 같으니 W가 A를 포함하는 벡터 스페이스라면 $ Ax = \mathrm{proj}_{W} \ b $ 이 됩니다.

이를 정리하면 다음과 같습니다.

W가 유한차원의 내적이 가능한 공간 V의 서브공간이고 $ b \in V $ 이면, $ \mathrm{proj}_W \ b $ 을 제외한 모든 $ w \in W $ 에 대하여,

$$ \|b-\mathrm{proj}_W \ b \| < \| b-w \| $$ 정규방정식(Normal equation) $ Ax = \mathrm{proj}_{W} \ b $ 일때 최소값이므로 오차도 최소값이 됩니다. $$ b - Ax = b - \mathrm{proj}_{W} \ b $$ 이고 $ A^T$ 를 양변에 곱합니다. $$ A^T(b-Ax) = A^T(b-\mathrm{proj}_{W} \ b) \tag{1} $$ 여기서 $ b-\mathrm{proj}_{W} \ b $ 는 열공간 A 와 직교하므로 $ A^T $ 의 영공간에 있습니다. 따라서 $ A^T(b-\mathrm{proj}_{W} \ b) = 0 $ 이 됩니다. (1)에 적용하면 $ A^T(b-Ax) = 0 $ 이므로 정리하면 정규방정식을 얻습니다. $$ A^{T} Ax = A^Tb $$ 구하고자 하는 건 x 이므로 정리하면 다음과 같습니다. $$ x = (A^{T}A)^{-1} A^T b$$ 정리 정규방정식에 대한 유도과정이었습니다. 최소제곱문제를 풀기위한 방정식이고 이를 활용해서 수치해석이나 머신러닝에 많이 쓰입니다. 활용도가 좀 있으니 잘 알아두면 좋을 것 같습니다. 관련 포스팅 [Python] 회귀(Regression) [수치해석] 최소 제곱 방법(Least square approximation)

키워드에 대한 정보 정규 방정식

다음은 Bing에서 정규 방정식 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 rstat101 week 6 (심화) 회귀분석 정규방정식(Normal equation) 손으로 풀기

  • 회귀분석
  • 정규방정식
  • 대학통계

rstat101 #week #6 #(심화) #회귀분석 #정규방정식(Normal #equation) #손으로 #풀기


YouTube에서 정규 방정식 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 rstat101 week 6 (심화) 회귀분석 정규방정식(Normal equation) 손으로 풀기 | 정규 방정식, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment