前回は、TinySVMのインストールと実行をしてみました。ここで少し、実行時に使ったパラメータについて観察してみます。
TinySVM svm_learnのパラメータ
svm_learnの実行のテストに使ったコマンドは上に書いたとおりですが、前回のエントリーで、最後から2番めのパラメータは入力データのパス、最後のパラメータがsvm_learnが出力するモデルファイルのパスであることを書きました。
ところで、それよりも前のパラメータは何でしょうか…。この答えが、図にも書いてあるように、SVM自体のパラメータとなっています。図にはかなりいい加減に「SVMの性格を決めるパラメータ」と適当に書いてありますが、ただ、このパラメータを変えると、同じ入力データでも生成されるモデルは変わってきます。
パラメータの詳しい説明は、Manpage of SVM_LEARNにあるとおりですが、これらについての説明は、SVMの数式を若干出す必要があることもあって、とりあえず今は省略します。
良いモデルを作るには
結局モデルを作るためには、良い入力データを与え、それにマッチしたSVMを用いることが重要です。
ところで、SVMで入力するデータはベクトルです。ベクトルといっても、大きさと向きを持った量というよりは、行列の行ベクトル(若しくは列ベクトル)という感じで、数を並べたものと考えるほうが良いでしょう。
画像を分類したり、文書を分類したりする時、そのままのデータをSVMは理解できません。従って、人間がそれらのデータからベクトルを作成してSVMに与えるのです。
このベクトルの作り方が上手でないと、SVMが優秀だとしても、良いモデルは作れません。従って、この入力データ作り、というのが、また一つの問題としてあるのです。
次回は、SVMに与える入力データの形式についてまとめてみたいと思います。