Skip to content

Some questions about the API #29

@willtebbutt

Description

@willtebbutt

The JuliaGPs org is trying to figure out how best to provide a high-level front-end for our GPs -- currently they're useful for researchers and people who know a bit more about GPs, but we've not built functionality which lets people just call "fit" and expect something sensible to happen.

We're investigating all of the ML frameworks that we can find in the Julia ecosystem to figure out which ones are likely to work for us (see e.g. https://github.com/willtebbutt/MLJAbstractGPsGlue.jl/). We might pick one, or we might pick a couple if there's a good reason to do so.

To that end, I have a couple of API-related questions, to try and establish where there is / is not flexibility in the current Models.jl API:

  1. Input and output types. JuliaGPs leans heavily on the idea of collections of inputs being represented as AbstractVectors of the same length as the number of outputs. For an explanation of this, see our API docs and design discussion docs. The Models.jl API presently requires that inputs are AbstractMatrixs. Would it be possible to generalise this to AbstractVectors?
  2. The same question applies to outputs: JuliaGPs requires a single output per input (including in the multi-output case -- we transform multi-output problems into single-output problems on an extended input space).
  3. Joint predictions. The current API requires that distributional predictions are marginal, in the sense that the output of predict must be a vector of distributions. Often, we're interested in joint predictions in JuliaGPs, so it would be nice to return a single distribution object when someone calls predict, which represents the joint distribution over the predictions at all locations requested by the user.

None of these are show-stoppers for us, but it would be good to know how set-in-stone they are.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions