GPy를 사용한 고스 프로세스 회귀
고스 프로세스 회귀
샘플링된 입력
x
에 대응하는 출력y
새 입력 x'
으로 출력되는 예측치 y'
의 기대치와 색산을 되돌려주는 회귀 모델을 만듭니다.유한한 견본점에서 함수를 예측하는 진실한 형식에 쓰인다.
https://jp.mathworks.com/help/stats/gaussian-process-regression-models.html
고스 프로세스 회귀 모델을 처리하기 위해 GPy라는 python 라이브러리를 사용합니다.
https://gpy.readthedocs.io/en/deploy/#
실제 함수 그리기
입력은 2차원으로 하고, 진정한 함수는 여현 함수를 통과하는 값의 합계로 한다.
temp.py
import numpy as np
# 関数の定義
def func(x):
fx = np.sum(np.cos(2 * np.pi * x))
return fx
xa = np.linspace(-1, 1, 101)
ya = np.linspace(-1, 1, 101)
Xa, Ya = np.meshgrid(xa, ya)
Za = np.zeros([101, 101])
for i in range(len(Xa)):
for j in range(len(Ya)):
x = np.array([Xa[i,j], Ya[i,j]])
Za[i,j] = func(x)
# 描画
import matplotlib.pyplot as plt
fig1 = plt.figure(figsize=(8,8))
ax1 = fig1.add_subplot(111)
ax1.contour(Xa, Ya, Za, cmap="jet", levels=10, alpha=1)
plt.xlim(-1,1)
plt.ylim(-1,1)
샘플링
낭비하지 않고 샘플링하는 방법으로는 소볼 시퀸스와 라틴 하이퍼큐브 삼플링 등이 있다.
이것들을 사용하지 않고, 여기는 간단하게 무작위로 견본점을 확정한다.
샘플 점수는 처음에 20점을 적게 계산했다.
temp.py
import random
random.seed(1)
# ランダムにサンプリング
n_sample = 20
Xa_rand = [random.random()* 2 - 1 for i in range(n_sample)]
Ya_rand = [random.random()* 2 - 1 for i in range(n_sample)]
xlist = np.stack([Xa_rand, Ya_rand], axis=1)
Za_rand = []
for x in xlist:
Za_rand = np.append(Za_rand, func(x))
# 描画
ax1.scatter(Xa_rand, Ya_rand)
방금 전의 그림에 견본점을 그리다.하반부는 괜찮고 상반부는 샘플이 적어 SKY입니다.
고스 프로세스 회귀
고스 프로세스 회귀 모델을 구축하다.
GPy.kern
에서 내장 함수를 선택하십시오.여기는 2차원 RBF 커널입니다.GPy.models.GPRegression
에서 회귀모델을 구축하고 model.optimize
에서 조화모델의 매개 변수를 조정한다.temp.py
import GPy
# 学習用データ
Input = np.stack([Xa_rand, Ya_rand], axis=1)
Output = Za_rand[:,None]
# ガウス過程回帰モデルを構築
kernel = GPy.kern.RBF(2)
model = GPy.models.GPRegression(Input, Output, kernel)
model.optimize(messages=True, max_iters=1e5)
# 描画
model.plot(levels=10)
plt.gcf().set_size_inches(8, 8, forward=True)
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.xlabel("x1")
plt.ylabel("x2")
응답 서피스를 그립니다.불과 20점과 상당히 적은 점수였지만 의외로 대략적인 골짜기를 재현할 수 있었다.
상반부의 오차가 매우 크다.
신뢰 영역 그리기
반응 곡면의 단면을 봐라.
x2=0 단면
x1=0 단면
연한 남색 끈은 2.5~97.5%의 신뢰 구간을 나타낸다.
신뢰 구간의 폭이 클수록 회귀 결과의 편차가 크다.
가장 큰 곳은 역시 자신이 없다.
샘플링 수 증가 시
n_sample = 40
n_sample = 100
샘플링의 수량이 많을수록 신뢰 구간의 폭이 좁아지고 회귀 결과의 편차가 작아진다.
총결산
GPy를 사용하여 고스 프로세스 회귀 모델을 구축했다.
Reference
이 문제에 관하여(GPy를 사용한 고스 프로세스 회귀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nmmg0031785/items/06c94b688ce9a29d346c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)