기계 학습 - 선형 회귀 - 경사도 하강 법 목표 함수 풀이
7109 단어 기계 학습
y = a + bx 의 목표 함수
지난 글 에서 우 리 는 선형 을 설명 했다. 본 고 는 선형 회귀 목표 함수 에 대한 문제 로 돌아 갔다.앞에서 알 았 듯 이 선형 회귀 의 목표 함 수 는:
J(a,b)=12m∑mi=1(a+bx(i)−y(i))2
J (a, b) 는 이원 함수 이다.우리 가 요구 하 는 것 은 두 개의 매개 변수 a 와 b 의 값 이다.만족 할 조건 은 a 와 b 가 이 값 을 취 할 때 J (a, b) 의 값 이 가장 작다 는 것 이다.우 리 는 지금 전에 말 한 알고리즘 인 경사도 하강 법 으로 그것 에 대해 구 해 를 할 것 이다.
경사 율, 도체 와 편 미분
경사도 하강 법 은 우리 앞에서 도 절 차 를 말 한 적 이 있다. 정리 해 보면 임 의 점 에서 시작 하여 이 점 에서 목표 함수 에 대해 도 도 를 구하 고 도체 방향 (경사도) 을 따라 '간다' (하강) 의 주어진 걸음 길 이 를 따라 이렇게 순환 하여 교체 하 며 '간다' 에서 도체 가 0 인 위치 까지 가면 극소 치 에 이른다.
왜 구 도 를 해 야 합 니까?아래 그림 에서 볼 수 있 듯 이 곡선 은 하나의 함 수 를 나타 내 는데 한 점 에서 의 가이드 수 치 는 바로 이 점 을 거 친 함수 곡선 접선 의 기울 임 률 이다.
도 수 는 함수 f (x) 가 x 축 에 있 는 한 점 x0 곳 에서 x 축 정방 향 의 변화 율 / 변화 추 세 를 따라 f ′ (x0) 로 기록 하 는 것 을 나타 낸다.
x 축의 어느 한 점 에서 f ′ (x0) > 0 이 라면 f (x) 의 함수 값 이 x0 시 에 x 축의 정방 향 을 따라 증가 하 는 것 을 설명 한다.좋 을 것 같 아.
일원 함 수 는 특정한 점 에서 x 축의 정방 향 변화 율 을 도수 라 고 한다.그러나 이원 또는 더 다 원 화 된 함수 (독립 변수 차원 > = 2) 라면 특정한 점 에서 특정한 차원 좌표 축 의 정방 향 변화 율 을 편도선 이 라 고 한다.
도체 / 편도선 은 변화 율 을 나타 내 고 변화 자 체 는 다른 개념 으로 나타 내 는데 이 개념 은 바로 미분 (대응 편도선, 이원 및 이상 함수 에 편 미분) 이다.
(편향) 도 수 는 함수 상의 한 점 에 대한 것 으로 하나의 값 이다.한편, 미분 은 하나의 함수 로 그 중의 모든 점 은 원 함수 에서 각 점 이 (편) 도체 방향 을 따라 변화 하 는 것 을 나타 낸다.
직관 적 이 고 엄격 하지 않 은 것 으로 볼 때 미분 은 (편) 도체 의 방향 을 따라 무한 한 증 가 를 하 는 것 이다.
우리 의 경사도 하강 알고리즘 을 생각해 보 자. 우리 가 해 야 할 일 은 하나의 점 에서 (도체 방향 을 따라) 한 걸음 앞으로 가 는 것 이 아니 냐?
우리 가 함수 의 (편) 미분 함 수 를 구 한 후에 특정한 변 수 를 그 안에 가 져 와 서 얻 은 (편) 미분 함수 에 대응 하 는 함수 값 은 바로 원 함수 가 이 점 에서 이 독립 변수 에 대한 유도 수치 이다.
그래서 우리 가 목표 함수 의 (편) 미분 함 수 를 구하 면 목표 함수 의 독립 변수 값 영역 에서 모든 가이드 수 치 를 구 할 수 있 습 니 다.
어떻게 함수 의 미분 함 수 를 구 합 니까?이것 은 우리 가 가장 기본 적 인 가이드 규칙 만 기억 하면 된다. 함수 (전체, 한 점 이 아 닌) 가이드 의 결 과 는 바로 미분 함수 이다.
본 고 에서 사용 할 수 있 는 것 은 상용 규칙 중에서 가장 자주 사용 하 는 몇 가지 일 뿐이다.
경사도 하강 구 해 목표 함수
J (a, b) 의 경우 두 개의 매개 변수 a 와 b 가 있 고 함수 J 는 각각 독립 변수 a 와 b 에 대해 미분 을 취한 결 과 는 다음 과 같다.
∂J(a,b)∂a=1(m)∑mi=1((a+bx(i))−y(i))
∂J(a,b)∂b=1(m)∑mi=1x(i)((a+bx(i))−y(i))
그래서 우리 가 해 야 할 일 은:
Step 1: a 와 b 의 초기 값 을 임의로 지정 합 니 다.
a = 0; b = 0;
Step 2: 경사도 하강 법 으로 a 와 b 를 풀 고 의사 코드 는 다음 과 같 습 니 다.
repeat until convergence{
a=a−α∂J(a,b)∂a
b=b−α∂J(a,b)∂b }
떨 어 지 는 높이 가 지정 한 한도 값 보다 작 으 면 떨 어 지 는 것 을 멈춘다.
위 에서 펼 친 식 을 위 코드 에 가 져 오 는 것 은:
repeatuntilconvergence{ sumA=0
sumB=0
fori=1tom{
sumA=sumA+(a+bx(i)−y(i)) sumB=sumB+x(i)(a+bx(i)−y(i)) }
a=a−αsumAm
b=b−αsumBm
}
유 니 버 설 선형 회귀 모델 의 목표 함수 풀이
y = a + bx 는 선형 회귀 모델 로 문제 가 없습니다.그러나 반대로 선형 회귀 모델 은 y = a + bx 의 형식 일 수 밖 에 없 습 니까?아니 지.
y = a + bx = > f (x) = a + bx 는 실제 적 으로 선형 회귀 모델 의 특례 이다. 독립 변 수 는 하나의 차원 만 있 는 특례 이다. 이 모델 에서 독립 변수 x 는 1 차원 벡터 로 [x] 를 쓸 수 있다.
통용 되 는 선형 회귀 모델 은 n 차원 독립 변 수 를 받 아들 이 는 것 이다. 즉, 독립 변 수 는 [x1, x2,..., xn] 형식 을 쓸 수 있다.그래서 해당 하 는 모델 함수 가 이렇게 쓰 여 있 습 니 다. f (x1, x2,..., xn) = a + b1x1 + b2x 2 +... + bnxn
이렇게 쓰 면 매개 변수 가 좀 혼 란 스 러 워 요.θa 대신θ도착 하 다θn. b1 에서 bn 까지 대신 쓰 면 다음 과 같 습 니 다.
f(1,x1,x2,...,xn)=θ0+θ1x1+θ2x2+...+θnxn
우 리 는 x0 = 1 을 설정 합 니 다. 따라서 f (x0, x1, x2,..., xn) =θ0x0+θ1x1+θ2x2+...+θnxn
그러면 대응 하 는 n 차원 독립 변수의 선형 회귀 모델 에 대응 하 는 목표 함 수 는 다음 과 같다.
J(θ0,θ1,...,θn)=1(2m)∑mi=1(y′(i)−y(i))2=1(2m)∑mi=1(θ0+θ1x(i)1+θ2x(i)2+...+θnx(i)n−y(i))2
재 설정: X = [x0, x1, x2,..., xn],Θ=[θ0,θ1,θ2,...,θn]
그리고 모형 함 수 를 f (X) = 로 간략하게 씁 니 다.ΘTX
습관 에 따라 우 리 는 여기에서 f (X) 를 h (X) 로 쓰기 때문에 모델 함 수 는 h (X) = 가 된다.ΘTX
해당 목표 함수: J (Θ)=1(2m)∑mi=1(hθ(X(i))−y(i))2
마찬가지 로 경사도 가 떨 어 지고 실현 하 는 과정 은:
repeatuntilconvergence{
Θ=Θ−α∂J(Θ)∂Θ }
theta j 를 겨냥 한 형식 으로 세분 화 하 는 것 은:
repeatuntilconvergence{
forj=1ton{
sumj=0
fori=1tom{
sumj=sumj+(θ0+θ1x(i)1+θ2x(i)2+...+θnx(i)n−y(i))x(i)j
}
θj=θj−αsumjm
}
}
이것 이 바로 경사도 가 떨 어 지 는 통용 형식 이다.
선형 회귀 의 초 매개 변수
선형 회귀 모델 로 서 그 자체 의 매개 변 수 는?Θ,훈련 을 시작 하기 전에,Θ(몇 차원 이 든) 구체 적 인 수 치 는 모 르 지만 훈련 과정 은 바로 풀이 이다.Θ
중 각 차원 의 수 치 를 계산 하 는 과정 입 니 다. 우리 가 경사도 하강 구 해 를 사용 할 때 경사도 하강 알고리즘 중의 보폭 매개 변 수 는:α,훈련 선형 회귀 모델 의 초 매개 변수 다. 훈련 프로그램 은 경사도 가 떨 어 지 는 계산 을 통 해 자동 으로 구 해 냈 다.Θ값어치α 해결 할 방법 이 없 으 니 손 으로 지정 해 야 합 니 다. 반대로 지정 되 지 않 았 다 면.α,경사도 하강 연산 은 전혀 진행 할 수 없다.
한편, 한 모델 은 여러 개의 초 매개 변수 와 관련 되 는데 전략 을 어떻게 제정 하 는 지 최소 시 도 를 한 상황 에서 모든 초 매개 변수 설정 결 과 를 최 적 으로 만 드 는 것 은 실천 에서 매우 중요 하고 통일 적 인 방법 으로 해결 할 수 있 는 문제 이다.
실제 응용 에서 조 참 방면 에 장 법 이 있 을 수 있 는 것 은 함부로 시도 하 는 것 이 아니 라 모두 가 모델 원리 와 데이터 에 대한 파악 에 달 려 있다.
선형 회귀 훈련 / 예측 프로그램 작성
만약 우리 가 코드 로 선형 회귀 프로그램 을 실현 하려 면 어떻게 해 야 합 니까? 물론, 당신 은 위의 설명 에 따라 처음부터 코드 로 한 번 실현 할 수 있 습 니 다.
하지만 그 럴 필 요 는 없습니다. 이미 만들어 진 방법 창고 가 많 기 때문에 직접 사용 할 수 있 습 니 다.
가장 흔히 볼 수 있 는 것 은 sklearn 라 이브 러 리 입 니 다. 아래 의 예 는 최초의 경험 과 임금 문제 에 대응 합 니 다. 우 리 는 앞의 7 개의 데 이 터 를 훈련 집 으로 하고, 뒤의 4 개 를 테스트 집 으로 삼 아 결 과 를 살 펴 보 겠 습 니 다.
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
experiences = np.array([0,1,2,3,4,5,6,7,8,9,10])
salaries = np.array([103100, 104900, 106800, 108700, 110400, 112300, 114200, 116100, 117800, 119700, 121600])
# , 4 ,
X_train = experiences[:7]
X_train = X_train.reshape(-1,1)
X_test = experiences[7:]
X_test = X_test.reshape(-1,1)
# ( )
y_train = salaries[:7]
y_test = salaries[7:]
#
regr = linear_model.LinearRegression()
# —— ,
regr.fit(X_train, y_train)
#
diabetes_y_pred = regr.predict(X_test)
#
plt.scatter(X_test, y_test, color='black')
plt.plot(X_test, diabetes_y_pred, color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
최종 결 과 는 이렇다.
요약:
선형 회귀 란 직선 배열 에 가 까 운 견본 (점, 데이터) 이다.과학적 인 계산 을 통 해 이 견본 현상 을 가장 잘 묘사 할 수 있 는 선형 함 수 를 찾 습 니 다. 어떻게 이 선형 함 수 를 찾 습 니까? 이런 점 들 은 엄격 한 직선 정렬 이 아 닙 니 다. 우 리 는 비슷 한 결 과 를 얻 을 수 밖 에 없습니다. 즉, 모든 견본 점 을 가지 고 들 어가 서 얻 은 결과 와 직선 상의 결과 의 차이 가 가장 적 으 면 그 선 이 견본 의 선형 행 위 를 가장 잘 묘사 하고 차 이 를 어떻게 계산 하 는 지 하 는 것 입 니 다.? 상기 거리 함수 에 대해 2 차 함수 입 니 다. 이 함수 의 극치 가 바로 최소 값 입 니 다. 어떻게 극치 를 구하 고 경사도 하강 법 을 사용 합 니까?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
형태소 분석은 데스크톱을 구성하는 데 도움이?문자×기계 학습에 흥미를 가져와 개인 범위의 용도를 생각해, 폴더 정리에 사용할 수 있을까 생각해 검토를 시작했습니다. 이번 검토에서는 폴더 구성 & text의 읽기 → mecab × wordcloud를 실시하고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.