前田耕
平
![]() |
ニューラルネットワークをはじめとするデータマイニングを一般人が使うには、 本庄さんのネタのよ うに理論を理解した上で自分でプログラムを作らないといけないとすると、 非常にハードルが高いと 思います。 学生のころに学んだり、 研究していたか、 仕事として普段から扱っているような人でなければ、 単語としては耳にしたことがあっても、 なんだかよう分からん、 という人がほとんどではないでしょうか。 *1
そこで、 バックグラウンドとしてニューラルネットワークだけでなく、 データマイニングの基礎知識を持っていない私と同じ ような立場の人でも、 Debian なら気軽に試してみる環境を整えて、 取り合えず使ってみることができるよ、 という趣旨で、 Weka というツールを紹介します。
Weka とは、 “Waikato Environment for Knowledge Analysis” の略で、 ニュージーランドの国立ワイカト大 学*2 で GPL のもとオープンソースで開発されているデータマイニングツールです。 *3 Java で書かれています。
Debian ではパッケージが用意されています。
$ sudo apt-get install weka
|
コマンドラインで weka スクリプトを実行します。
$ weka &
|
すると Weka のウィンドウが起動します。 そこから、 “Applications” の “Explorer” を実行すると、 Weka Explorer が起動 します。
Weka では、 ARFF(Attribute-Relation File Format) というフォーマットのテキストファイルを入力データとして扱います。
データフォーマットは次のようになります。
@relation 名前 @attribute 属性名 属性の型 @attribute 属性名 属性の型 : : @data データ, データ,…, データ |
昨年の 11 月の勉強会で GNU R で扱った光熱費のデータと、 気象庁が公開している気温、 降水量などの気象デー タ*4 を 使ってみます。
まず、 CSV で以下のように記述したとします。
"年","月","降水量合計 (mm)","平均日平均気温 (℃)","平均日最高気温 (℃)","平均日最低気 温 (℃)","平均風速 (m/s)","最大風速 (m/s)","日照時間 (h)","電気使用量 (kWh)","電気使用 量 (kWh)/日","料金 (円)/日","合計料金","ガス使用量 (m3)","ガス使用量 (m3)/日","料金 ( 円)/日","合計料金" 2007,1,50,6,10.8,1.1,1,5,188.9,234,6.88235294117647,161.235294117647,5482,9,0.333333333333333,80.962962962963,2186 2007,2,44,7.3,12.6,1.9,1.3,6,198.1,198,7.07142857142857,168.071428571429,4706,9,0.321428571428571,87.7142857142857,2456 (snip) |
これは、 ARFF フォーマットでは以下のようになります。
@relation 降水量・気温 (府中市) と電気代、 ガス代の関係について @attribute 年 real @attribute 月 real @attribute 降水量合計 (mm) real @attribute 平均日平均気温 (℃) real @attribute 平均日最高気温 (℃) real @attribute 平均日最低気温 (℃) real @attribute 平均風速 (m/s) real @attribute 最大風速 (m/s) real @attribute 日照時間 (h) real @attribute 電気使用量 (kWh) real @attribute 電気使用量 (kWh)/日 real @attribute 料金 (円)/日 real @attribute 合計料金 real @attribute ガス使用量 (m3) real @attribute ガス使用量 (m3)/日 real @attribute 料金 (円)/日 real @attribute 合計料金 real @data 2007,1,50,6,10.8,1.1,1,5,188.9,234,6.88235294117647,161.235294117647,5482,9,0.333333333333333,80.962962962963,2186 2007,2,44,7.3,12.6,1.9,1.3,6,198.1,198,7.07142857142857,168.071428571429,4706,9,0.321428571428571,87.7142857142857,2456 (snip) |
先ほど用意した kohnetsu.arff をロードしてみましょう。 Preprocess タブの Open File ボタンを押します。 ダイアログが表示 されるので、 kohnetsu.arff を指定します。 (図 8)
ARFF ファイルを読み込むと図 9のようになります。 UTF-8 エンコードであれば、 ご覧のとおり日本語も正常に読み込め ます
それでは読み込んだデータを可視化してみましょう。 Visualize タブをクリックすると図 10のようなマトリックスが表示され ます。
適当に開いてみます。 Y 軸に一日の平均気温の月平均 (℃) と、 X 軸に一日あたりの電気使用量 (kWh) を取って見てみると 図 11のようになります。
次に分類してみます。 Classify タブ → Choose ボタンを押し、 表示されたツリーから Multilayer Perceptron (ニューラル ネットワークによる分類) を選択します。 次に、 (Num) 平均日平均気温 (℃) を目的関数として選択します。
Start ボタンをクリックすると分類が実行され、 結果が表示されます。
実は、 kohnetsu.arff の最後の行 (2010 年 3 月のデータ) は、 ほとんどの項目を’?’ を入力しています。
2010,3,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?
|
これはまだ今月のデータが出ていないからです。 それでは、 これらを予測してみます。 先ほどの Classify タブの画面で More options をクリックし、 Output predictions のチェックを入れ、 OK を押します。
Start を実行すると、 予測結果が表示されます。 actual が実データで predicted が予測結果です。 今回見たいの は、 3 月の平均日平均気温です。 actual が ? になっている行の、 predicted の値を見ると、 15.436 となって います。 過去読み込ませたデータからニューラルネットワークでの分析して予測した結果、 おそらく一日あ たりの平均気温は 15.4 ℃ になるという予測です。 来月、 気象庁の統計データが更新されたら確認してみま しょう。
なんとなく使えそうな気がしたでしょうか。 私はこれで毎月のガス代、 電気代、 さらには水道代の予測をして、 給与日前日の 予算計画に利用していこうと思います。 仕事でも、 企画上の裏付けデータの分析、 予測などにも使えそうで すね。
第 62 回東京エリア Debian 勉強会 2010 年 3 月
____________________________________________________________________________________________