## table of contents

BAYESOL(1) | BAYESOL(1) |

# NAME¶

bayesol - a Bayes solution calculator for use with dbacl.

# SYNOPSIS¶

**bayesol** [-DVNniv] -c *riskspec* [FILE]...

**bayesol** -V

# DESCRIPTION¶

**bayesol** is a Bayes solution calculator designed to combine
the output of **dbacl**(1) with a prior distribution and a risk
specification, and calculate the optimal Bayesian decision (which minimizes
the posterior risk).

The risk specification is read from the text file *riskspec*
and must be written in a simple format described below. The **dbacl**(1)
output can either be read from FILE or from STDIN.

# EXIT STATUS¶

On success, **bayesol** returns a positive integer
corresponding to the category with the lowest risk. In case of a problem,
**bayesol** returns zero.

# OPTIONS¶

- -c
- Classify using
*riskspec*. See the section RISK SPECIFICATION. - -i
- Fully internationalized mode. Forces the use of wide characters internally, which is necessary in some locales. This incurs a noticeable performance penalty.
- -n
- Print risk scores for each
*category*. Each score is (approximately) the logarithm of the expected risk under that category. The lowest score (ie closest to -infinity) is best, etc. - -N
- Print recursive risk scores for each
*category*. Each score is (approximately) the logarithm of the best score based on the remaining categories, after the previously best scoring categories have been removed, and a normalizing factor was added. A full description is given in the technical report listed at the end of this manpange. The largest score (ie closest to +infinity) is best, etc. - -v
- Verbose mode. Prints to STDOUT the category with minimum posterior risk.
In case several categories are possible, prints the first category in the
order in which they appear in the categories section of
*riskpspec*. - -D
- Print debug output. Do not use.
- -V
- Print the program version number and exit.

# RISK SPECIFICATION¶

**bayesol** needs to read a text file *riskspec*
containing a risk specification. The format of this text file is as
follows

- categories {
*cat1*,*cat2*,...,*catN*}

prior {*p1*,*p2*,...,*pN*}

loss_matrix {

"*regex1*"*c1*[*formula11*,*formula12*,...,*formula1N*]

"*regex2*"*c2*[*formula21*,*formula22*,...,*formula2N*]

.

.

"*regexM*"*cM*[*formulaM1*,*formulaM2*,...,*formulaMN*]

}

In the above, *cat1*, *cat2*,..., *catN*,
are category names, *p1*, *p2*,..., *pN*, are
non-negative numbers, *regex1*, *regex2*,...,
*regexM*, are (possibly empty) regular expression strings, *c1*,
*c2*,..., *cM*, are instances of the category names
*cat1*, *cat2*,..., *catN*, and the formulas are
numbers or mathematical expressions.

Every category which appears in the categories section must appear
at least once in the loss_matrix section, with an empty "" regular
expression. To construct the actual loss matrix used in the decision
calculations, **bayesol** selects, for each category appearing in the
categories section, the first row whose regular expression is matched within
FILE or STDIN, or the first row with empty regular expression if there are
no matches.

Each formula can be either a single number, or an algebraic
combination of the operators exp(), log(), +, -, *, /, ^ and parentheses ().
The string "inf" is parsed as the value infinity. Also, the string
"complexity" is recognized, and converted to the complexity for
that category as reported by **dbacl**(1). Finally, if the corresponding
regular expression contains submatches delimited by parentheses, their
numerical values can be used inside the formulas as the special variables
$1, ..., $9. Note that submatches which aren't numerical are converted to
the value zero.

Case is important. Spaces and newlines can be liberally inserted. Comments must start with a # and extend to the end of the line.

# USAGE¶

Typically, **bayesol** is used together with **dbacl**(1).
An invocation looks like this:

% dbacl -c one -c two -c three sample.txt -vna | bayesol -c toy.risk -v

See /usr/share/doc/dbacl/costs.ps for a description of the algorithm used. See also /usr/share/doc/dbacl/tutorial.html for a more detailed overview.

# SOURCE¶

The source code for the latest version of this program is available at the following locations:

http://www.lbreyer.com/gpl.html

http://dbacl.sourceforge.net

# AUTHOR¶

Laird A. Breyer <laird@lbreyer.com>

# SEE ALSO¶

**dbacl**(1), **mailcross**(1), **mailfoot**(1),
**mailinspect**(1), **mailtoe**(1), regex(7)

Bayesian Classification Tools | Version 1.14.1 |