일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 다항회귀
- 코드잇
- for반복문
- 코드잇TIL
- 행렬
- 나혼자코딩
- 런던
- 유학생
- 머신러닝
- 영국석사
- 윈도우함수
- matplotlib
- 파이썬
- numpy
- SQL
- 코드잇 TIL
- CSS
- 경사하강법
- 결정트리
- sql연습문제
- 판다스
- HTML
- 코딩
- 선형회귀
- 코딩공부
- 데이터분석
- Seaborn
- 로지스틱회귀
- 오늘도코드잇
- 코딩독학
- Today
- Total
목록경사하강법 (6)
영국 척척석사 유학생 일기장👩🏻🎓
이전 글에서 feature scaling을 하는 이유 중 하나는 경사 하강법을 빨리 할 수 있도록 도와주기 때문이라고 했습니다. 어떤 방법으로 도와주는지 알아봅시다. 1. 선형 회귀, 경사하강법 선형 회귀는 위와 같은 데이터가 있을 때 데이터에 가장 잘 맞는 선 또는 가설 함수 를 찾는 것입니다. 데이터에 가장 잘 맞는다는 것은 데이터에 대한 평균 제곱 오차를 최소화한다는 뜻입니다. 평균 제곱 오차는 아래와 같이 계산합니다. 여기서 m은 데이터 개수, htheta(x^(i))는 i번째 데이터의 목표변수의 예측값, y^(i)는 i번째 데이터의 목표변수의 실제값을 나타냅니다. 그리고 손실 함수라는 것은 아래와 같이 평균 제곱 오차로 정의합니다. 손실 함수는 가설 함수를 평가하기 위한 함수입니다. 손실이 크면..
이전 글에서 로지스틱 회귀의 가설 함수와 손실 함수에 대해 알아보았습니다. 이제 경사 하강법을 알아봅시다. 우리가 해야 하는 것은 손실을 최소화하는 것인데 경사 하강법은 그 손실을 최소화하는 하나의 방법입니다. 경사 하강법을 하는 방법은 가설 함수와 손실 함수는 좀 다르지만 선형 회귀와 거의 똑같습니다. 처음에는 세타 값들을 모두 0으로 지정하거나 모두 랜덤하게 지정합니다. 어디선가는 시작해야 하기 때문입니다. 그러면 현재 세타 값들에 대한 손실, 즉 현재 가설 함수에 대한 손실을 계산할 수 있습니다. 여기서부터 시작해서 세타를 조금씩 조율하면서 손실을 계속 줄여나가야 하는 것입니다. 예를 들어서 세타0,1,2 이렇게 세타 값이 3개 있다고 가정해봅시다. 앞 글에서 설명한 대로 손실 함수를 세타0에 대해..
1. 다중 선형 회귀 경사 하강법 다중 선형 회귀에서도 선형 회귀와 마찬가지로 손실 함수가 아래와 같이 생겼습니다. 다중 선형 회귀에서는 입력 변수가 여러 개라서 가설 함수가 살짝 달라지지만, 손실 함수는 완전히 똑같습니다. 손실을 줄이기 위해서는 경사 하강법을 해야 하는데, 입력 변수가 하나일때와 차이가 있습니다. 입력 변수가 하나일때는 theta_0과 theta_1만 업데이트 하면 됩니다. 입력 변수가 하나일때는 위와 같이 하면 되는데, 입력 변수가 여러 개면 세타 값도 여러개입니다. 그러면 업데이트 할 세타 값디 많아지는 것 뿐입니다. 입력 변수가 n개 있다고 하면 theta_0 부터 theta_n까지 쭉 업데이트를 해야 경사 하강을 한 번 했다고 할 수 있습니다. 이렇게 나열된 식을 하나로 표현하..
경사 하강법을 하기 위해서는 두 변수 theta_0, theta_1을 아래와 같이 계속 업데이트 하면 된다고 이전 글에서 설명하였습니다. 이때 학습률 알파a는 경사를 내려갈때마다 얼마나 많이 그 방향으로 갈 건지를 결정하는 변수입니다. 이번 글에서 학습률 알파를 잘 못 고를 때 생기는 문제점에 대해서 알아보겠습니다. 이해를 쉽게 하기 위해 손실함수 J가 하나의 변수, thata로만 이루어졌다고 가정해보겠습니다. 1. 학습률 a가 너무 큰 경우 알파가 크면 클수록 경사 하강을 한 번을 할 때마다 thata의 값이 많이 바뀝니다. 그럼 아래와 같이 왼쪽과 오른쪽으로 성큼성큼 왔다갔다 하면서 진행이 됩니다. 심지어 a가 너무 크면 경사 하강법을 진행할수록 손실 함수 J의 최소점에서 멀어질 수도 있습니다. 2...
1. 선형 회귀 경사 하강법 앞에 글에서 손실함수 J의 최소점을 찾을 때까지 위 식을 반복하면 되었습니다. 이 식을 직접 구현하기 위해 error을 다음과 같이 정의하겠습니다. 벡터 x의 평균을 u_x로 나타내면 라고 표현할 수 있다고 이 전 글에서 설명하였습니다. 밑의 공식을 바탕으로 구현해보겠습니다. 2. gradient_descent 함수 함수 gradient_descent는 실제 경사 하강법을 구현하는 함수입니다. 파라미터로는 임의의 값을 갖는 파라미터들 theta_0, theta_1, 입력 변수 x, 목표 변수 y, 경사 하강법을 몇 번을 하는지를 나타내는 변수 iterations, 학습률 alpha를 갖습니다. 처음에 gradient_descent 함수에 넘겨주는 theta_0, theta_1..
경사 하강법을 이용하여 업데이트 하는 방법에 대해 알아보겠습니다. 세타제로와 세타원을 업데이트 하는 방법은 다음과 같습니다. 1. 세타0 업데이트 편미분을 하는 부분을 살펴봅시다. 여기 손실 함수 J가 있는데, 선형 회귀에서 우리의 손실 함수 J는 아래와 같습니다. 편미분 식에 대입하면 아래와 같습니다. 여기에 가설 함수 h는 다음과 같습니다. 이것을 위식에 대입하면 이걸 이제 세타0에 대해 편미분하면 아래와 같습니다. 가설 함수 h로 다시 돌려줍니다. 결국 편미분은 아래와 같이 나오는데 이걸 세타0을 업데이트 하는 기존 공식에 대입하면 됩니다. 2. 세타1 업데이트 세타1을 업데이트 하는 공식을 살펴봅시다. 편미분 하는 부분을 집중적으로 알아봅시다. 편미분 식에 손실 함수 J를 대입하면 아래와 같습니다..