Why don't you just add another output state that stands for "nothing"

On 05/07/2014 11:52 PM, anas elghafari wrote:
Thank you, Kyle, for your answer. I think there is some massaging of the numbers going on. For example, I tried to specify a silent state (a state where all emission probabilities are 0).The result was that all emissions at that state were of the first signal. I.e. the probability of the first emission was rounded up to 1 (code below).

My question: is there a way to specify a silent state? There are some applications that require such a thing (e.g. DNA sequences where one of the things that could happen is the deletion of a symbol. The deletion state would show up in the sequence of states, but would
emit no signal)

--------------
Code sample: trying to build an HMM with the second state (state 1) as a silent state:

def testHMM():
    startprob = np.array([0.5, 0.5])
    transmat = np.array([[0.5, 0.5], [0.5, 0.5]])
    emissions = np.array([[0,0.8,0.2], [0,0,0]])
    model = hmm.MultinomialHMM(2, startprob, transmat)
    model.emissionprob_ = emissions
    return model

>>> m = HMM_test.testHMM()
>>> m.sample(20)
(array([2, 1, 1, 1, 2, 0, 1, 0, 1, 1, 0, 1, 0, 2, 0, 0, 1, 1, 1, 1], dtype=int64),
 array([0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0]))

In this example, singal 0 should've never shown up (since its probability is 0 in both states). However, it is the only signal emitted by state 1.

Anas




2014-05-07 21:34 GMT+02:00 Kyle Kastner <kastnerk...@gmail.com <mailto:kastnerk...@gmail.com>>:

    If you are manually specifying the emission probabilities I don't
    think there are any hooks/asserts to guarantee that variable is
    normalized I.E. if you assign to the emissionprob_ instead of
    using the fit() function, I think it is on you to make sure the
    emission probabilities you are assigning *are* actually
    probabilities. From my perspective that is desired behavior, but
    maybe someone with more experience on this HMM implementation can
    comment.

    For future reference,
    Hidden Markov Models were recently split into their own project:
    seen here https://github.com/hmmlearn/hmmlearn

    Kyle


    On Wed, May 7, 2014 at 10:41 AM, anas elghafari
    <anas.elghaf...@gmail.com <mailto:anas.elghaf...@gmail.com>> wrote:

        Hi scikit community,

        I am playing around with the Hidden Markov Mode module
        (multinomialHMM) and one thing I don't understand is why
        scikit accepts emission probabilities that add up to more or
        less than 1.

        Here is an example with two states and three emission signals:

        >>> import numpy
        >>> from sklearn import hmm
        >>> startprob = numpy.array([0.5, 0.5])
        >>> transition_matrix = numpy.array([[0.5, 0.5], [0.5, 0.5]])
        >>> model = hmm.MultinomialHMM(2, startprob, transition_matrix)
        >>> model.emissionprob_ = numpy.array([[0, 0, 0.2], [0.6,
        0.35, 0.05]])

        As you can see, I am specifying the emission proabilities for
        state 0 as [0, 0, 0.2]. Scikit accepts this and generates
        predications with no complaints. Is this desired behavior? Do
        these probabilities get normalized?

        Thanks,

        Anas

        
------------------------------------------------------------------------------
        Is your legacy SCM system holding you back? Join Perforce May
        7 to find out:
        &#149; 3 signs your SCM is hindering your productivity
        &#149; Requirements for releasing software faster
        &#149; Expert tips and advice for migrating your SCM now
        http://p.sf.net/sfu/perforce
        _______________________________________________
        Scikit-learn-general mailing list
        Scikit-learn-general@lists.sourceforge.net
        <mailto:Scikit-learn-general@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/scikit-learn-general



    
------------------------------------------------------------------------------
    Is your legacy SCM system holding you back? Join Perforce May 7 to
    find out:
    &#149; 3 signs your SCM is hindering your productivity
    &#149; Requirements for releasing software faster
    &#149; Expert tips and advice for migrating your SCM now
    http://p.sf.net/sfu/perforce
    _______________________________________________
    Scikit-learn-general mailing list
    Scikit-learn-general@lists.sourceforge.net
    <mailto:Scikit-learn-general@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/scikit-learn-general




------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
&#149; 3 signs your SCM is hindering your productivity
&#149; Requirements for releasing software faster
&#149; Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce


_______________________________________________
Scikit-learn-general mailing list
Scikit-learn-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
&#149; 3 signs your SCM is hindering your productivity
&#149; Requirements for releasing software faster
&#149; Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
_______________________________________________
Scikit-learn-general mailing list
Scikit-learn-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

Reply via email to