PHP TNTClassifier распределение вероятности вероятности - PullRequest
0 голосов
/ 24 февраля 2019

Я использую модуль классификации текста поиска TNT, https://github.com/teamtnt/tntsearch,, и он работает хорошо, проблема в том, что я не знаю, как интерпретировать результаты - более конкретно вероятность правильного соответствия.Я читал, что он использует Наивный байесовский классификатор , но я не могу найти, какое распределение вероятностей является результатом.У меня есть собственный небольшой набор данных тестирования, состоящий из примерно 50 значений (50/10 = 5 категорий), и догадки довольно верны.

Однако число вероятности, которое предоставляет этот инструмент, является отрицательным числом где-то вдиапазон от -15 до -25.

Вопрос в том, какую ценность можно истолковать как недостоверную?Допустим, инструмент уверен только в <33%.Какое значение будет соответствовать этому предположению? </p>

1 Ответ

0 голосов
/ 25 февраля 2019

Я связался с разработчиками TNTSearch.Классификатор на самом деле не возвращает вероятность, а "наивысший балл".И только для лучшего соответствия.

Как советовали, я внес некоторые изменения в код.

В классе TeamTNT\TNTSearch\Classifier\TNTClassifier Я изменил биты в методе predict (функция softmax на основе здесь ):

public function predict($statement)
{
    $words = $this->tokenizer->tokenize($statement);

    $best_likelihoods = [];
    $best_likelihood = -INF;
    $best_type       = '';
    foreach ($this->types as $type) {
        $best_likelihoods[$type] = -INF;
        $likelihood = log($this->pTotal($type)); // calculate P(Type)
        $p          = 0;
        foreach ($words as $word) {
            $word = $this->stemmer->stem($word);
            $p += log($this->p($word, $type));
        }
        $likelihood += $p; // calculate P(word, Type)
        if ($likelihood > $best_likelihood) {
            $best_likelihood = $likelihood;
            $best_likelihoods[$type] = $likelihood;
            $best_type       = $type;
        }
    }

    return [
        'likelihood' => $best_likelihood,
        'likelihoods' => $best_likelihoods,
        'probability' => $this->softmax($best_likelihoods),
        'label'      => $best_type
    ];
}

Процентная вероятность можетзатем можно найти в $guess['probability']['$label'].

...