ソリューショングループN早速、訓練データとテストデータを作成してみたいと思います。非常に簡単な例として、一次関数のグラフを書いて、適当に点をプロットして、そのグラフよりも下にある点を+1、そのグラフよりも上にある点を-1としたものをデータとして与えることを考えます。適当にPerlでプログラムを書いてみました。2:$y\n";}}第一引数がxの範囲(0<x<与えた値)、第二引数がxの範囲(0<y<与えた値)、第三引数がグラフの傾き、第四引数が出力データ数です(あまり細かいチェックはしていません...)。このプログラムを実行すると、次の出力が得られます。2:45.21とりあえず、一次関数の傾きが1のものと5のもののデータを、訓練用とテスト用それぞれ100データ生成し、訓練用のデータを学習させ、識別までさせてみようと思います。イメージとしては、次のような感じです。49次に、傾きが5のもの。50両方共、PrecisionもRecallも高い数値が出ています。狙いどおりの結果になったと思います。これより先の文章は(これまでにも増して)、さらにいい加減なものですが...これを、仮に、モデルを入れ替えて識別させてみるとどうでしょう。y<xのモデルにy<5xのデータを与えてみた場合と、y<5xのモデルにy<xのモデルを与えてみた場合の出力を試しに見てみようと思います。2上のほうが、y<5xのデータに対して、y<xのモデルで識別した場合です。Precisionが100%ですね。逆にy<xのデータに対してy<5xのモデルで識別した場合はRecallが100%となっています。考えてみればなんとなく分かることですが、学習によって推定された境界線と、実際にテストとして与えたデータを重ねてみると、上記の結果になることは視覚的に分かると思います...、が、多分間違った使い方のような気もしています。いえ、とりあえず、実際にデータを作成して訓練と識別を実際にしてみることで、SVMの使い方が具体的になったと思います。次は、もう少しSVMが中でしている計算などを追ってみたいのですが、少し勉強のため日が開くと思います...。