abstract class ProbEvidenceMarginalMAP extends MetropolisHastings with MarginalMAPAlgorithm

An algorithm for marginal MAP. This algorithm works by searching for the assignment to the MAP elements that maximizes the probability of evidence of observing that assignment. Uses one time probability of evidence sampling at each iteration for the given number of samples. Since the probability of evidence is just an estimate, this algorithm is allowed to repeatedly take more probability of evidence samples until it believes with high confidence that one state is better than another state, or it has reached the maximum number of allowed runs. The maximization is done by simulated annealing.

Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ProbEvidenceMarginalMAP
  2. MarginalMAPAlgorithm
  3. MetropolisHastings
  4. BaseUnweightedSampler
  5. Sampler
  6. Algorithm
  7. AnyRef
  8. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ProbEvidenceMarginalMAP(universe: Universe, tolerance: Double, samplesPerIteration: Int, maxRuns: Int, proposalScheme: ProposalScheme, schedule: Schedule, mapElements: List[Element[_]])

    universe

    Universe on which to run the algorithm.

    tolerance

    Confidence level used deciding to accept or reject under uncertainty. This corresponds to a maximum allowed p-value. Thus, setting this to 0.05 means we only accept or reject if we are at least 95% confident that we're making the right decision. Must between 0 and 0.5.

    samplesPerIteration

    Number of probability of evidence samples to take per run. Must be strictly greater than 1. A reasonable starting point is 100.

    maxRuns

    Maximum number of runs of probability of evidence sampling allowed before giving up and returning the proposal with higher estimated probability of evidence. Thus, at each iteration of simulated annealing, this algorithm can take as many as samplesPerIteration * maxRuns probability of evidence samples. Setting to 1 corresponds to using no hypothesis test at all. Setting to Int.MaxValue corresponds to running indefinitely until we are confident that the proposal should be accepted or rejected.

    proposalScheme

    Scheme for proposing new values. This can propose any element in the universe, but updates to non-MAP elements are only used for generating new values for MAP elements.

    schedule

    Schedule that produces an increasing temperature for simulated annealing.

    mapElements

    List of elements over which to perform marginal MAP. These elements must not have evidence on them that is contingent on the values of non-MAP elements. Additionally, these elements must be "observable", in the sense that observing values for these elements and computing the probability of evidence of those observations should not uniquely return zero. Typically, this is satisfiable by elements that are not both continuous and deterministic. The algorithm will still run if this condition is not satisfied, but it will not converge.

Type Members

  1. class NotATargetException [T] extends AlgorithmException
    Definition Classes
    MarginalMAPAlgorithm
  2. type LastUpdate[T] = (T, Int)
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  3. class MMAPProbEvidenceSampler extends ProbEvidenceSampler with OneTimeProbEvidenceSampler with OnlineLogStatistics

    Special probability of evidence sampler used for marginal MAP.

    Special probability of evidence sampler used for marginal MAP. Unlike a regular probability of evidence sampler, this records its own variance. It does so in an online fashion, and computes it in log space to prevent underflow. Additionally, this algorithm may be run multiple times. The rolling mean and variance computation incorporates the samples taken from all runs.

  4. type Sample = Map[Element[_], Any]

    A sample is a map from elements to their values.

    A sample is a map from elements to their values.

    Definition Classes
    BaseUnweightedSampler
  5. type TimesSeen[T] = Map[T, Int]
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler

Abstract Value Members

  1. abstract def doKill(): Unit
    Attributes
    protected[com.cra.figaro.algorithm]
    Definition Classes
    Algorithm
  2. abstract def doMostLikelyValue[T](target: Element[T]): T
    Attributes
    protected
    Definition Classes
    MarginalMAPAlgorithm
  3. abstract def doResume(): Unit
    Attributes
    protected[com.cra.figaro.algorithm]
    Definition Classes
    Algorithm
  4. abstract def doStart(): Unit
    Attributes
    protected[com.cra.figaro.algorithm]
    Definition Classes
    Algorithm
  5. abstract def doStop(): Unit
    Attributes
    protected[com.cra.figaro.algorithm]
    Definition Classes
    Algorithm

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def accept(state: State): Unit
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  5. var acceptProbability: Double
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  6. def acceptRejectRatio: Double

    Get the acceptance ratio for the sampler.

    Get the acceptance ratio for the sampler.

    Definition Classes
    MetropolisHastings
  7. var accepts: Int
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  8. val active: Boolean
    Attributes
    protected
    Definition Classes
    Algorithm
  9. var allLastUpdates: Map[Element[_], LastUpdate[_]]
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  10. var allTimesSeen: Map[Element[_], TimesSeen[_]]
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  11. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  12. var chainCache: Cache
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  13. def check[T](target: Element[T]): Unit
    Attributes
    protected
    Definition Classes
    MarginalMAPAlgorithm
  14. def cleanUp(): Unit

    Clean up the sampler, freeing memory.

    Clean up the sampler, freeing memory.

    Definition Classes
    ProbEvidenceMarginalMAPMetropolisHastingsAlgorithm
  15. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  16. final def compareMeans(oldSampler: MMAPProbEvidenceSampler, newSampler: MMAPProbEvidenceSampler, logConstant: Double, runs: Int): Boolean

    Decides whether or not the mean of the old sampler, multiplied by the constant given, is likely to be less than the mean of the new sampler.

    Decides whether or not the mean of the old sampler, multiplied by the constant given, is likely to be less than the mean of the new sampler. Computes in log space to avoid underflow. This may mutate the state of the universe. This does not take into account conditions and constraints on the MAP elements directly; these should be incorporated in the log constant provided.

    oldSampler

    Probability of evidence sampler for the previous state of the MAP elements.

    newSampler

    Probability of evidence sampler for the next state of the MAP elements.

    logConstant

    Log of a multiplicative constant, by which we multiply the mean of the old sampler.

    runs

    Maximum allowed additional runs of probability of evidence sampling before this method should return a best guess. This is a kill switch to avoid taking an absurd number of samples when the difference between the means is negligible. Must be >= 0. Setting this to 0 is equivalent to performing no hypothesis test at all and just comparing the values.

    returns

    A decision to accept based on a one-sided t-test of the weights sampled from the two samplers.

    Attributes
    protected
    Annotations
    @tailrec()
  17. def computeMostLikelyValue[T](target: Element[T]): T
  18. def computeScores(): Double
    Attributes
    protected
    Definition Classes
    ProbEvidenceMarginalMAPMetropolisHastings
  19. var constraintsBound: Boolean

    Set this flag to true when constraints are bound between 0 and 1 to enable early rejection of states with constrained elements.

    Set this flag to true when constraints are bound between 0 and 1 to enable early rejection of states with constrained elements.

    Definition Classes
    MetropolisHastings
  20. var constraintsSum: Double
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  21. val currentConstraintValues: Map[Element[_], Double]
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  22. def currentMAPValues: List[ElemVal[_]]

    Record the current values of all MAP elements.

    Record the current values of all MAP elements.

    Attributes
    protected
  23. var debug: Boolean

    Set this flag to true to obtain debugging information.

    Set this flag to true to obtain debugging information.

    Definition Classes
    MetropolisHastings
  24. def decideToAccept(newState: State): Boolean

    Decide whether or not to accept the new (unconstrained) state, first taking into account conditions on the MAP elements.

    Decide whether or not to accept the new (unconstrained) state, first taking into account conditions on the MAP elements. Does not change the state of the universe. Updates the temperature, preserved elements, and probability of evidence sampler accordingly. Incorporates constraints on the MAP elements.

    Attributes
    protected
    Definition Classes
    ProbEvidenceMarginalMAPMetropolisHastings
  25. def decideToAcceptSatisfied(): Boolean

    Like decideToAccept, but assume all conditions on the MAP elements are satisfied.

    Like decideToAccept, but assume all conditions on the MAP elements are satisfied.

    Attributes
    protected
  26. var dissatisfied: Set[Element[_]]
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  27. def doInitialize(): Unit
    Attributes
    protected
    Definition Classes
    ProbEvidenceMarginalMAPMetropolisHastings
  28. def doSample(): Unit
    Attributes
    protected
    Definition Classes
    MetropolisHastingsBaseUnweightedSamplerSampler
  29. var elementsUsedBy: Map[Element[_], Set[Element[_]]]
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  30. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  31. def equals(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  32. val fastTargets: Set[Element[_]]
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  33. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  34. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
  35. def getDissatisfied: Set[Element[_]]
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  36. def getSampleCount: Int

    Number of samples taken

    Number of samples taken

    Definition Classes
    BaseUnweightedSampler
  37. def getTemperature: Double

    Get the current temperature.

    Get the current temperature. Used for debugging.

  38. def hashCode(): Int
    Definition Classes
    AnyRef → Any
  39. def initConstrainedValues(): Unit
    Attributes
    protected
    Definition Classes
    ProbEvidenceMarginalMAPMetropolisHastings
  40. def initUpdates(): Unit
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  41. def initialize(): Unit

    Called when the algorithm is started before running any steps.

    Called when the algorithm is started before running any steps. By default, does nothing. Can be overridden.

    Definition Classes
    Algorithm
  42. def isActive: Boolean
    Definition Classes
    Algorithm
  43. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  44. def kill(): Unit

    Kill the algorithm so that it is inactive.

    Kill the algorithm so that it is inactive. It will no longer be able to provide answers.Throws AlgorithmInactiveException if the algorithm is not active.

    Definition Classes
    Algorithm
  45. val mapElements: List[Element[_]]
  46. def mhStep(): State
    Attributes
    protected
    Definition Classes
    ProbEvidenceMarginalMAPMetropolisHastings
  47. def mostLikelyValue[T](target: Element[T]): T

    Returns an estimate of the max a posteriori value of the target.

    Returns an estimate of the max a posteriori value of the target.

    Definition Classes
    MarginalMAPAlgorithm
    Exceptions thrown

    AlgorithmInactiveException if the algorithm is inactive.

    NotATargetException if called on a target that is not in the list of MAP elements.

  48. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  49. def newLastUpdate[T](target: Element[T]): LastUpdate[T]
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  50. def newTimesSeen[T](target: Element[T]): TimesSeen[T]
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  51. final def notify(): Unit
    Definition Classes
    AnyRef
  52. final def notifyAll(): Unit
    Definition Classes
    AnyRef
  53. var oldModelProb: Double
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  54. var oldPropProb: Double
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  55. var preserve: Set[Element[_]]
    Attributes
    protected
  56. var probEvidenceSampler: MMAPProbEvidenceSampler
    Attributes
    protected
  57. def proposeAndUpdate(): State
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  58. var proposedElementsSortedUpdates: Map[Iterable[Element[_]], List[Element[_]]]
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  59. lazy val queryTargets: List[Element[_]]
    Definition Classes
    BaseUnweightedSampler
  60. var rejects: Int
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  61. def resetCounts(): Unit
    Attributes
    protected
    Definition Classes
    BaseUnweightedSamplerSampler
  62. def resume(): Unit

    Resume the computation of the algorithm, if it has been stopped.

    Resume the computation of the algorithm, if it has been stopped. Throws AlgorithmInactiveException if the algorithm is not active.

    Definition Classes
    Algorithm
  63. def runScheme(): State
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  64. def sample(): (Boolean, Sample)

    Produce a single sample.

    Produce a single sample.

    Definition Classes
    ProbEvidenceMarginalMAPMetropolisHastingsBaseUnweightedSampler
  65. var sampleCount: Int
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  66. def start(): Unit

    Start the algorithm and make it active.

    Start the algorithm and make it active. After it returns, the algorithm must be ready to provide answers. Throws AlgorithmActiveException if the algorithm is already active.

    Definition Classes
    Algorithm
  67. def stop(): Unit

    Stop the algorithm from computing.

    Stop the algorithm from computing. The algorithm is still ready to provide answers after it returns. Throws AlgorithmInactiveException if the algorithm is not active.

    Definition Classes
    Algorithm
  68. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  69. var temperature: Double
    Attributes
    protected
  70. def test(numSamples: Int, predicates: Seq[Predicate[_]], elementsToTrack: Seq[Element[_]]): (Double, Map[Predicate[_], Double], Map[Element[_], Double])

    Test Metropolis-Hastings by repeatedly running a single step from the same initial state.

    Test Metropolis-Hastings by repeatedly running a single step from the same initial state. For each of a set of predicates, the fraction of times the predicate is satisfied by the resulting state is returned. By the resulting state, we mean the new state if it is accepted and the original state if not.

    Definition Classes
    MetropolisHastings
  71. def toString(): String
    Definition Classes
    AnyRef → Any
  72. def undo(state: State): Unit
    Attributes
    protected
    Definition Classes
    MetropolisHastings
  73. val universe: Universe
    Definition Classes
    BaseUnweightedSampler
  74. def update(): Unit
  75. def updateTimesSeenForTarget[T](elem: Element[T], newValue: T): Unit
    Attributes
    protected
    Definition Classes
    ProbEvidenceMarginalMAPBaseUnweightedSampler
  76. def updateTimesSeenWithValue[T](value: T, timesSeen: TimesSeen[T], seen: Int): Unit
    Attributes
    protected
    Definition Classes
    BaseUnweightedSampler
  77. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  78. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  79. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from MarginalMAPAlgorithm

Inherited from MetropolisHastings

Inherited from BaseUnweightedSampler

Inherited from Sampler

Inherited from Algorithm

Inherited from AnyRef

Inherited from Any

Ungrouped