Skip to content

Instantly share code, notes, and snippets.

@genkuroki
Created December 2, 2017 06:15
Show Gist options
  • Save genkuroki/d734ee906886a6c53452349761215d93 to your computer and use it in GitHub Desktop.
Save genkuroki/d734ee906886a6c53452349761215d93 to your computer and use it in GitHub Desktop.
Test of GaussianProcesses.jl
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#Pkg.clone(\"https://github.com/STOR-i/GaussianProcesses.jl.git\")\n#Pkg.add(\"Plots\")\n#Pkg.add(\"Distributions\")\n#Pkg.add(\"Klara\")",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"trusted": true,
"scrolled": false
},
"cell_type": "code",
"source": "#Load functions from packages\n@time using GaussianProcesses\n@time using Plots\n@time using Distributions #: Normal, TDist\n@time using Klara #: MALA\n\n#Simulate the data\nsrand(112233)\nn = 20\nX = collect(linspace(-3,3,n))\nsigma = 1.0\nY = X + sigma*rand(TDist(3),n);\n\n# Plots observations\npyplot()\nscatter(X,Y;fmt=:png, leg=false)",
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": " 30.986445 seconds (6.37 M allocations: 404.580 MiB, 0.65% gc time)\n 90.308537 seconds (7.35 M allocations: 479.037 MiB, 0.19% gc time)\n 0.000027 seconds (4 allocations: 160 bytes)\n 0.000021 seconds (4 allocations: 160 bytes)\n",
"name": "stdout"
},
{
"output_type": "execute_result",
"execution_count": 2,
"data": {
"text/html": "<img src=\"data:image/png;base64,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\" />"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#Build the models\n\ngpe = GPE(X,vec(Y),MeanZero(),Matern(3/2,0.0,0.0),0.5) #Exact GP assuming Gaussian noise",
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 3,
"data": {
"text/plain": "GP Exact object:\n Dim = 1\n Number of observations = 20\n Mean function:\n Type: GaussianProcesses.MeanZero, Params: Float64[]\n Kernel:\n Type: GaussianProcesses.Mat32Iso, Params: [0.0, 0.0]\n Input observations = \n[-3.0 -2.68421 … 2.68421 3.0]\n Output observations = [-3.98707, -2.7855, -1.74722, -2.27384, -7.12662, -1.43191, -0.840899, 0.305618, -0.444213, -0.924319, -0.0303161, -0.368707, -0.706642, 2.07517, 5.68693, -1.02634, 3.25863, 5.46091, 4.45861, 4.60741]\n Variance of observation noise = 2.718281828459045\n Marginal Log-Likelihood = -51.895"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "l = StuTLik(3,0.1)\ngpmc = GPMC(X, vec(Y), MeanZero(), Matern(3/2,0.0,0.0), l) #Monte Carlo GP with student-t likelihood",
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 4,
"data": {
"text/plain": "GP Monte Carlo object:\n Dim = 1\n Number of observations = 20\n Mean function:\n Type: GaussianProcesses.MeanZero, Params: Float64[]\n Kernel:\n Type: GaussianProcesses.Mat32Iso, Params: [0.0, 0.0]\n Likelihood:\n Type: GaussianProcesses.StuTLik, Params: [0.1]\n Input observations = \n[-3.0 -2.68421 … 2.68421 3.0]\n Output observations = [-3.98707, -2.7855, -1.74722, -2.27384, -7.12662, -1.43191, -0.840899, 0.305618, -0.444213, -0.924319, -0.0303161, -0.368707, -0.706642, 2.07517, 5.68693, -1.02634, 3.25863, 5.46091, 4.45861, 4.60741]\n Log-posterior = -77.863"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "@time optimize!(gpe)",
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": " 3.929464 seconds (4.11 M allocations: 209.256 MiB, 2.24% gc time)\n",
"name": "stdout"
},
{
"output_type": "execute_result",
"execution_count": 5,
"data": {
"text/plain": "Results of Optimization Algorithm\n * Algorithm: L-BFGS\n * Starting Point: [0.5,0.0,0.0]\n * Minimizer: [0.6566151884189473,1.7118340256787345, ...]\n * Minimum: 4.578633e+01\n * Iterations: 11\n * Convergence: true\n * |x - x'| < 1.0e-32: false\n * |f(x) - f(x')| / |f(x)| < 1.0e-32: false\n * |g(x)| < 1.0e-08: true\n * f(x) > f(x'): false\n * Reached Maximum Number of Iterations: false\n * Objective Function Calls: 46\n * Gradient Calls: 46"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "set_priors!(gpmc.lik,[Normal(-2.0,4.0)])\nset_priors!(gpmc.k,[Normal(-2.0,4.0),Normal(-2.0,4.0)])\n\n@time samples = mcmc(gpmc;sampler=MALA(0.05),nIter=50000, thin=10, burnin=10000)",
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": "BasicMCJob:\n Variable [1]: p (BasicContMuvParameter)\n GenericModel: 1 variables, 0 dependencies (directed graph)\n MALA sampler: drift step = 0.05\n VanillaMCTuner: period = 100, verbose = false\n BasicMCRange: number of steps = 49991, burnin = 10000, thinning = 10 22.668948 seconds (34.37 M allocations: 4.492 GiB, 3.83% gc time)\n",
"name": "stdout"
},
{
"output_type": "execute_result",
"execution_count": 6,
"data": {
"text/plain": "23×4000 Array{Float64,2}:\n -1.44975 -1.44975 -1.02479 … -1.43093 -1.23015 -1.23015 \n 0.588195 0.588195 0.332809 1.08002 1.17153 1.17153 \n 0.718085 0.718085 0.211443 0.493442 0.385335 0.385335\n -1.32609 -1.32609 -1.15774 -0.333319 -0.200674 -0.200674\n -0.721646 -0.721646 -0.855224 -0.55112 -0.794651 -0.794651\n 0.851406 0.851406 0.986268 … 1.32336 1.21235 1.21235 \n -0.250237 -0.250237 -0.296884 -0.298572 -0.166915 -0.166915\n 0.154486 0.154486 0.387819 0.0714513 0.162703 0.162703\n -0.0969148 -0.0969148 -0.324955 -0.446952 -0.267948 -0.267948\n -0.380338 -0.380338 0.133223 0.765023 0.42936 0.42936 \n 0.378311 0.378311 0.555143 … -0.226185 -0.211079 -0.211079\n -0.918741 -0.918741 -0.744673 -0.589133 -0.436455 -0.436455\n -0.136525 -0.136525 0.123217 1.7611 1.83721 1.83721 \n 1.77061 1.77061 1.61585 -0.923194 -0.784206 -0.784206\n 1.73116 1.73116 1.87613 0.82272 0.86416 0.86416 \n -0.678761 -0.678761 -0.545683 … 0.386 0.503511 0.503511\n 0.830114 0.830114 0.782332 2.30027 2.27326 2.27326 \n 1.28389 1.28389 1.61891 2.18992 2.05585 2.05585 \n 0.247051 0.247051 0.492288 -0.479602 -0.876566 -0.876566\n -0.385056 -0.385056 -0.53043 -0.780789 -0.959797 -0.959797\n -0.372006 -0.372006 -0.116689 … -0.138475 -0.17703 -0.17703 \n -0.0997188 -0.0997188 -0.338012 0.869903 1.11409 1.11409 \n 1.1369 1.1369 1.10389 1.05892 1.07458 1.07458 "
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#Plot posterior samples\nxtest = linspace(minimum(gpmc.X),maximum(gpmc.X),50);\n\n#Set the parameters to the posterior values the sample random function\nfsamples = [];\nfor i in 1:size(samples,2)\n set_params!(gpmc,samples[:,i])\n update_target!(gpmc)\n push!(fsamples, rand(gpmc,xtest))\nend\n\n#Predict\np1=plot(gpe,leg=false, title=\"Exact GP\") #Exact GP (assuming Gaussian noise)\n\nsd = [std(fsamples[i]) for i in 1:50]\np2=plot(xtest,mean(fsamples),ribbon=2*sd,leg=false, title=\"Monte Carlo GP\") #GP Monte Carlo with student-t noise\nscatter!(X,Y)\n\nplot(p1,p2;fmt=:png)",
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 7,
"data": {
"text/html": "<img src=\"data:image/png;base64,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\" />"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "?StuTLik",
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"text": "search: \u001b[1mS\u001b[22m\u001b[1mt\u001b[22m\u001b[1mu\u001b[22m\u001b[1mT\u001b[22m\u001b[1mL\u001b[22m\u001b[1mi\u001b[22m\u001b[1mk\u001b[22m\n\n",
"name": "stdout"
},
{
"output_type": "execute_result",
"execution_count": 8,
"data": {
"text/plain": "# Description\n\nConstructor for the Student-t likelihood (aka non-standardized Student's t-distribution)\n\n```\np(y|f,σ) = Γ((ν+1)/2)/[Γ(ν/2)sqrt{πν}σ](1+1/ν((y-f)/σ)²)^(-(ν+1)/2),\n```\n\nwhere f is the latent Gaussian process and σ a non-fixed hyperparameter.\n\n# Arguments:\n\n```\n* `ν::Int64`: degrees of freedom\n* `lσ::Float64`: log of scale\n```\n\n# Link:\n\n```\n* https://en.wikipedia.org/wiki/Student's_t-distribution\n```\n",
"text/markdown": "# Description\n\nConstructor for the Student-t likelihood (aka non-standardized Student's t-distribution)\n\n```\np(y|f,σ) = Γ((ν+1)/2)/[Γ(ν/2)sqrt{πν}σ](1+1/ν((y-f)/σ)²)^(-(ν+1)/2),\n```\n\nwhere f is the latent Gaussian process and σ a non-fixed hyperparameter.\n\n# Arguments:\n\n```\n* `ν::Int64`: degrees of freedom\n* `lσ::Float64`: log of scale\n```\n\n# Link:\n\n```\n* https://en.wikipedia.org/wiki/Student's_t-distribution\n```\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "l = StuTLik(1, 0.01)",
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 15,
"data": {
"text/plain": "Type: GaussianProcesses.StuTLik, Params: [0.01]\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "dump(l)",
"execution_count": 16,
"outputs": [
{
"output_type": "stream",
"text": "GaussianProcesses.StuTLik\n ν: Int64 1\n σ: Float64 1.010050167084168\n priors: Array{Any}((0,))\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "julia-0.6-pauto",
"display_name": "Julia 0.6.1 procs auto",
"language": "julia"
},
"toc": {
"threshold": 4,
"number_sections": true,
"toc_cell": false,
"toc_window_display": false,
"toc_section_display": "block",
"sideBar": true,
"navigate_menu": true,
"moveMenuLeft": true,
"widenNotebook": false,
"colors": {
"hover_highlight": "#DAA520",
"selected_highlight": "#FFD700",
"running_highlight": "#FF0000",
"wrapper_background": "#FFFFFF",
"sidebar_border": "#EEEEEE",
"navigate_text": "#333333",
"navigate_num": "#000000"
},
"nav_menu": {
"width": "252px",
"height": "12px"
}
},
"language_info": {
"file_extension": ".jl",
"name": "julia",
"mimetype": "application/julia",
"version": "0.6.1"
},
"gist": {
"id": "",
"data": {
"description": "Test of GaussianProcesses.jl",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment