記事
■  情報の中の実態を斬れ - データマイニングツールMUSASHIとは記事
@2004-10-24 23:20 (17054 ヒット)by H.Fujita

LBI個人会員/日本MUSASHIユーザ会広報担当 宗近 龍一郎

 「MUSASHI」とは日本発のオープンソースのデータマイニングツールであり、大阪産業大学の羽室助教授を中心に開発が行われています。
 「データマイニング」とは、企業等で蓄積された膨大なデータの中から、意味のある相関関係や有効なビジネスパターンを発見する技術ということになります。
 MUSASHIを利用することで、廉価でデータマイニングを行うことが可能になります。

 「MUSASHI」とは日本発のオープンソースのデータマイニングツールであり、大阪産業大学の羽室助教授を中心に開発が行われています。
 読者の方にはMUSASHIを語る前にまずは「マイニングとは?」ということをお話したいと思います。
 「マイニング」は、もともと採鉱や宝探しといった意味です。すなわち鉱山から宝石などを探すように、たくさんの石の中からお金になる宝石を掘り出すことがマイニングになります。「データマイニング」とは、企業等で蓄積された膨大なデータの中から、意味のある相関関係や有効なビジネスパターンを発見する技術ということになります。
 従来、このような用途に使うマイニングツールは商用の高価なものが一般的でした。また、データマイニングを行う前提としてデータウェアハウスを構築するのが一般的であり、したがって膨大な費用をかけていました。
 このように多額の費用がかかる状況では、中小企業はなかなかデータマイニングに取り組むことが難しく、また大企業においても昨今のような経済状況下では、データマイニングにかける費用を捻出することはなかなか難しいものでした。
 ところがMUSASHIを利用することで、廉価でデータマイニングを行うことが可能になりました。中小企業ではパソコンを使ってデータマイニングを行うことも可能です。

(注)元々、中小企業では大企業ほど多くのデータを持っていませんし、昨今のハードディスクの容量の増大により、一昔前のオフコンクラスのパワーをパソコンが持つようになりました。

 MUSASHIは取り扱うデータの形式としてXMLTableを利用するのが大きな特徴です。XMLTableは人間の目に見えるようにテキスト形式として格納されています。商用等のデータベース形式を利用しないことにより、処理のためのインデックスを作成する等の考慮を行うことなく高速な処理が行えます。

1.MUSASHIの動作環境


 MUSASHIは元々Linux上で開発されてきたことから、Linux/UNIX系のOSで動作可能です。

http://musashi.sourceforge.jp/instCheck.html

 また、Windows上でもCygwin等を使って動作可能です。 (しかしながら、Cygwin上では文字コードをShift-JISにする必要があります。)
 Fedora Core等、文字コードにUTF8を利用しているものについても注意する必要があります。
 Vine Linux等RPMをパッケージ管理システムとして利用しているものについては、RPMで簡単にインストールを行うことができます。
 また、ソースから導入を行う場合も通常のコンパイル手順(./configure;make;make install) でコンパイルを行うことができます。 (ただし、ライブラリとしてlibxml2とzlibが必要となるので、システムに導入されていない場合は追加でパッケージを導入しておいてください。

2.KNOPPIX for MUSASHI


 上記で示したようにMUSASHIの導入手順は簡単なのですが、それでもWindowsのみに慣れたような初心者ユーザにとっては敷居が高いものかもしれません。
 そこで、1CDのLinuxであるKNOPPIX(http://unit.aist.go.jp/it/knoppix/)を利用してCD-ROMからOSを起動してすぐにMUSASHIを利用できる環境を用意しました。
 KNOPPIXとはドイツのKnopperさんが Debian GNU/Linuxをベースに開発している1CDのLinuxで、日本では産業総合研究所の須崎さんが中心になって日本語化他の作業を行っています。1CDのLinuxとして普通にOS(Linux)が使える他、MS Officeと互換性を持つオフィススイートであるOpenOfficeがすぐに使えたり、レスキューCDとしての機能を持つ等大変便利なディストリビューションです。日本では、一番大きなシェアを持つ1CD Linuxといっても過言でないように思います。
また、KNOPPIXは自分の好きなパッケージを盛り込んだりしてカスタマイズすることが可能となっており、そのための文献も多く出回っています。

(注)KNOPPIX3.3までと3.4以降ではブートの仕組みが変わったためにカスタマイズには注意が必要です。

 昨今では、Webシステム構築の学習用としてLAMP(Linux/Apache/MySQL/PHP)環境を構築したシステムにカスタマイズを行い、今回紹介しているMUSASHI環境を構築したものを筆者のサイト(http://home.pa-net.jp/~munetika/myknoppix/)で配布しています。

 普段、Windowsにしか使っていないマシンでもBIOSの設定を「CD-ROMから起動」にすることで、Windowsの環境を壊すことなく利用できます。

(注)BIOSの設定は各メーカにより異なるので、必ずPCに付属のマニュアルを確認すること。

 また、2004年09月29日に岡山で開催したMUSASHIのセミナーで配布したものはKNOPPIX3.6 をベースにしているので、QEMUやcoLinux等のWindows上でLinux環境をエミュレーションするソフトを利用することによって、Windows上から動作させることが可能です。
 なおこのCDは上記のサイトから入手できる他、2004年10月22日、23日に大阪産業創造館で開催される「関西オープンソ−ス2004」でもLBIブース他で配布予定です。

3.KNOPPIX for MUSASHIを使ってみる


 KNOPPIXはCDをCD-ROMドライブを挿入し、PCの起動もしくは再起動を行うことでOSの起動が行われます。
 なおPCの必要なスペックは高いほどよく、特にメモリは512MByte以上を搭載しておくことが望ましいと思われます。
 MUSASHIはコンソール上からコマンドラインで利用するため、まずはコンソールを起動します。次にデモを行うために/var/local/musashi ディレクトリに移動します。


4.今回の分析シナリオ


 今回は、連携購買の例として「清涼飲料水を買った顧客が同時にどのような商品を購入するか(トップ10)」を調査することとします。
 MySQLデータベースシステムをデータウェアハウスとみなし、必要なデータをCSV形式で取り出します。次にMUSASHIで扱う形式であるXMLTableに変換し、分析処理を行います。
 最後に、人間が理解しやすい形にするためHTMLに変換してブラウザで確認を行うようにします。

5.処理の実際


 まずは、データベースからCSV形式でデータを取り出します。
(demo1_1.sh)
 MySQLでの例ですが、以下のようなSQL文で取出しが可能です。
 select * into outfile '/tmp/dat.csv' fields terminated by ',' from dat;

 このSQL文はデータベースが違うと若干文法が違うと思いますが、そう大差は無いものと思われます。念のためマニュアルでご確認ください。
 次に、CSV形式のデータからXMLTable形式のデータに変換します。変換には”csv2xt”コマンドを使います。
(demo1_2.sh)
 csv2xt -a 店,日付,時間,レシート,顧客,商品,大分類,中分類,小分類,細分類,
  メーカー,ブランド,仕入単価,単価,数量,金額,仕入金額,粗利金額 -i /var/tmp/dat.csv -o ./dat.xt
オプション説明
  • -a 新しい項目名リスト
  • -i 入力ファイル
  • -o 出力ファイル

 次に、「清涼飲料水」を含むレシートを取り出します。
 「清涼飲料水」の小分類コードは'1403'とします。レシートを選択するには”xtselstr”コマンドを使います。
(demo1_3.sh)
 xtselstr -k 日付,レシート -f 小分類 -v 1403 -i dat.xt -o tmp1.xt
オプション説明
  • -k 選択する単位となるキー項目名リスト
  • -f 検索対象となる項目名リスト
  • -v "-f"で指定した項目の検索文字列
  • -i 入力ファイル
  • -o 出力ファイル

 ここでは-kを指定したことにより、"-f"、"-v"の条件によって選択されるレコードの“日付”“レシート”データと一致する全てのレコードが抽出されます。
 今回「清涼飲料水」といっしょに買ったものが必要なので「清涼飲料水」自体のデータは必要ありません。データをカットするには”xtselstr”コマンドを使います。
(demo1_4.sh)
 xtselstr -f 小分類 -v 1403 -r -i tmp1.xt -o tmp2.xt
オプション説明
  • -f 検索対象となる項目名リスト
  • -v "-f"で指定した項目の検索文字列
  • -r 条件反転
  • -i 入力ファイル
  • -o 出力ファイル

 次に、今回のデータのうち必要な列は、「商品(コード)」と「数量」のみです。列を取り出すには”xtcut”コマンドを使います。
(demo1_5.sh)
 xtcut -f 商品,数量 -i tmp2.xt -o tmp3.xt
オプション説明
  • -f 抽出対象となる項目名リスト
  • -i 入力ファイル
  • -o 出力ファイル


 次に商品ごとの「数量」のサマリー処理が必要です。サマリーをとるには”xtagg”コマンドを使います。
(demo1_6.sh)
 xtagg -k 商品 -f 数量 -c sum -i tmp3.xt -o tmp4.xt
オプション説明
  • -k 集計の単位となる項目名リスト
  • -f 集計対象となる項目名リスト
  • -c 集計方法
  • -i 入力ファイル
  • -o 出力ファイル

 トップ10を求めるので最初の10件を取り出します。
(demo1_7.sh)

xtbest -s 数量%nr -R 1_10 -i tmp4.xt -o tmp5.xt
オプション説明
  • -s 並べ換える項目名リスト
  • -R 行番号範囲リスト
    -i 入力ファイル
  • -o 出力ファイル

 レシート(データ)自体には、商品名を持っていないので、人間にわかるようにするには、商品コードを商品名に翻訳する必要があります。 xmlTableの結合を行うには”xtjoin”コマンドを使います。
(demo1_8.sh)
 xtjoin -k 商品 -m syo.xt -f 商品名 -i tmp5.xt -o tmp6.xt
オプション説明
  • -k 入力データ上の突き合わせる項目名リスト
  • -m 参照ファイル名
  • -f 結合する参照ファイル上の項目名リスト
  • -i 入力ファイル
  • -o 出力ファイル

 最後にHTML形式に変換します。 xmlTableからHTMLに変換を行うには”xt2html”コマンドを使います。
(demo1_9.sh)
 xt2html -i tmp6.xt -o tmp7.html
オプション説明
  • -i 入力ファイル
  • -o 出力ファイル

 実行結果を以下に示します。



 MUSASHIはUNIX/Linuxのパイプを使って、オペレーションを一気に実行することができます。
 パイプを使った例は以下のとおりです。
 xtselstr -k 日付,レシート -f 小分類 -v 1403 -i dat.xt |
  xtselstr -f 小分類 -v 1403 -r | xtcut -f 商品,数量 | xtagg -k 商品 -f 数量 -c sum |
  xtbest -s 数量%nr -R 1_10 |xtjoin -k 商品 -m syo.xt -f 商品名 -o result.xt

6.MUSASHIの利用例


・優良顧客の分析
・アンケート結果の分析(テキストマイニング)

7.MUSASHIの今後


 MUSASHIは現在コマンドラインとしての利用が一般的ですが、今後Web系開発言語 (PHP等)と連携しやすいようにして、Web上でのMUSASHIアプリケーションの開発を容易にするという計画もあります。

8.最後に


 ざっと駆け足でMUSASHIについて説明してきました。 MUSASHIはコマンドラインで利用するがゆえに、データマイニングの基礎から勉強するには最適のツールだと思います。
 今後、みなさんがMUSASHIを利用してビジネスの現場に有効に活用していただけるように願ってやみません。

(参考文献)
5分でわかるIT 「データマイニングとは」
http://www.sw.nec.co.jp/lecture/word/dm/

KNOPPIX Japanese edition
http://unit.aist.go.jp/it/knoppix/

(その他リンク)

Fedora
http://fedora.redhat.com/
http://www.fedora.jp/(Fedora JP Project)

Cygwin
http://cygwin.com/

XMLtable
http://musashi.sourceforge.jp/xmltable/

OpenOffice
http://www.openoffice.org/(本家)
http://ja.openoffice.org/(日本ユーザ会)

QEMU
http://fabrice.bellard.free.fr/qemu/

coLinux
http://www.colinux.org/
http://unit.aist.go.jp/it/knoppix/colinux/


印刷用ページ このニュースを友達に送る

投稿された内容の著作権はコメントの投稿者に帰属します。
Powered by XOOPS Cube 2.0 © 2005-2012 The XOOPS Cube Project