c

# ProbEvidenceMarginalMAP 

### Companion object ProbEvidenceMarginalMAP

#### 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.

Linear Supertypes
Known Subclasses
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

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
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
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
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( ... )