SVMに入力するデータについて

前回のエントリーでSVMにはベクトルを入力すると言いました。また、学習のためには、そのベクトルがそのジャンルに含まれるか含まれないか、という目印も必要です。

これまでジャンル、という曖昧な言葉を使っていましたが、今後は、そのような事を表す言葉で、機械学習でよく使われる用語である「クラス」、という言葉を使おうと思います。

つまり、クラスとベクトルの2つの情報を使って学習させるということです。

以下は、TinySVMの訓練データのフォーマットです。TinySVMのページから、入力データに関する部分を以下に引用します。

1行が1つのデータに相当し、行頭に+1か-1、その後に整数と実数をコロンでつないだものが連なっています。行頭の+1か-1がクラスに属すかどうか(+1なら属す、-1なら属さない)を示し、その後のデータがベクトルを表現しています。

コロンの前がベクトルの添字、コロンの後がそのベクトルの添字で示される要素の値を示します。添字がなければ、その要素は0となります。

150115

クラスに属すか属さないかを、ベクトルの要素を使って識別するのですが、これらの要素のことを「素性」と呼びます。なお、すじょう、ではなく、「そせい」と読みます。

SVMに与える情報として、どのような素性が役に立ちそうか、どの素性を用いればより正確に分類ができるかは、解こうとする問題にもよるため、この素性が良い、というのは一概には言えませんし、ある種職人芸的な部分でもあります。

とりあえず入力データについては分かったので、次は評価について書いてみたいと思います。