〔日本OR学会第25回事例研究賞受賞作晶〕

知識発見支援ソフトウェア：MUSASHI
羽室 行信，加藤 直樹…11……ll………lll…llll……lll…ll111……lllll…l1111…lll……111…＝＝‖‖＝＝＝‖＝＝州州……l……l11…＝＝＝‖＝＝＝‖＝＝‖＝＝＝＝‖＝＝‖＝＝＝‖‖＝＝＝‖＝＝＝‖‖＝‖＝‖＝＝‖‖＝＝＝‖‖‖＝＝＝＝＝＝＝＝＝‖＝＝＝＝‖＝＝‖‖＝＝‖‖＝＝＝＝州I1111…llllll

を例にしてMUSASHIの利用方法をチュート））アル

1．MUSASHlとは形式で解説していく．ただし，UNIX系OSの利用を

MUSASHI（Mining Utilities and System Archi−

tectureforScalableprocessingofHIstoricaldata）とは，我々がこれまでに開発を進めてきたビジネスデータからの知識発見システムの名称である1．MUSA−

前提としているので，読者はUNIXの基本的な知識を有していることを前提として進めていく．

2．開発目的SHIは，知識発見プロセスでもっとも労力を要する

この十数年において，コンピュータの性能は飛躍的とされる前処理にその強みがあり，リレーショナルデに向上し，構造化することが困難な意思決定の支援をータベースやデータウェアハウスを導入することなし

目的とした利用が重要視されるようになってきた．そにⅩMLで記述された大規模データを効率的かつ柔軟の証拠に多くの企業では，これまでには捨て去っていに処理できる仕組みを提供する．標準的なPC一台でたような非常に詳細なレベルのデータまで蓄積し始め，数百万件〜数千万件のデータ処理が可能である．またその膨大に蓄積されたデータを経営戦略に生かそうと前処理だけでなく，文字列解析手法を導入した分類モする動きが活発化しており，データマイニング（もしデルの生成ツール［3］やネットワーク流量の推定によ

くは大規模データベースからの知識発見）が注目される知識発見手法［7］など，いくつかの知識発見アルゴるに至っている．

データマイニングが注目され始めて以来，データベ

リズムも実装されている．

MUSASHIは現在のところ知識発見に主眼を置いースの分野ではデータウェアハウスや多次元データベ

た，いわゆる情報系システムでの利用を前提としていースなどの研究が盛んになり，またデータ解析の分野

るが，将来は基幹系システムへの応用も考えており，

では「大規模データ」をキーワードにオペレーション「武蔵の二刀流」という意味も込めている．

ズ・リサーチや統計学，人工知能といった分野で学際MUSASHIはオpプンソースとして開発を進めて
おり，SOurCeforge．jpで管理，運営されている．本誌

的な研究の広がりを見せている．

データマイニングを実施するにあたっては，単にデ執筆時点でのMUSASHIの最新版は1．0．4である．

ータベース上のお決まりのデータ項目を利用してモデ

http：／／musashi．sourceforge．jp／の「ダウンロード」

ルを作成すれば終わりというものではなく，データをのメニューからインストールマニュアルに従いインス

クリーニングし，多様な角度からデータを集計し，そトールすることができる．現在のところ動作確認が取して新たなデータ項目を作りこむ（例えば，移動平均

れているOSは，Linux，FreeBSD，Solaris9，Cygwin

や数値データの区分化など）といった，いわゆる前処（Windows）である．

理が不可欠である．ある研究によれば，前処理はデー

以降では，MUSASHIの開発目的および構成について簡単に触れた後，ブランド購買分類モデルの構築
はむろ ゆきのぶ大阪産業大学経営学部〒574−8530大東市中垣内3−1−1
かとう なおき京都大学大学院工学研究科〒615−8540京都市西京区京都大学桂654（52）

タマイニングプロセス全体の実に8割近い時間が費やされる［8］．これは構造化されていない意思決定に特徴的な試行錯誤の結果の現れであり，それ故に，前処理のプロセスにおいては多様な処理要求に対して容易にこたえることのできる「柔軟性」を備えたシステム
1MUSASHIのより詳しい論述については文献［4〜6］を参考にされたい．

© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

オペレーションズ・リサーチ

が求められる．MUSASHIはこの前処理を柔軟に実する（コマンドの一部を表1に示す）．これらのコマ施することを一つの目的として開発を行ってきた．

ンドの中には，ある項目を抜き出すだけの機能を待ったコマンドから，リレーショナルデータベースで利用

3．MUSASHlの構成

されている自然結合や直積演算などのコマンドまで多

本節では，MUSASHIの構成について，そのデp
タ構造およびデータ処理方式の観点から解説する．

様なコマンドが存在する．また，マイニングコマンド

としては，相関ルール，クラスタリング，文字列パタ

3．1データ構造ーン属性の利用が可能な決定木による分類モデルなど

MUSASHIは基本データ構造として図1に例示さが含まれている．

れるようなⅩMLtableと呼ぶⅩMLによる表形式のデータ構造を採用している．

表1MUSASHIが提供するコマンド（抜粋）XMLtableは完全なⅩML文書である．ルート要

機能

コマンド名

コマンド名

＊能

素くxmltbl〉は，くheader〉と 〈body〉の二つの要素

Xm12xt XMし→XMLtablo変換 ぬedを持ち，body要素には，表形式のデータが記述され，

虹2xml

XMu遍bl￠→XMし変換 血a9g

餌2点t即止→XMしtablo変換 XtCOUnt 行数計井

項目区切りとしてスペース，行区切りとして改行が用CVS2xtcvs→XMしbblo変換 Xt＄lide 礪目を一行ずらす

いられている．そして くheader〉要素は，このデp

戒header ヘッダー情報の登録 濾number 書号付け

タに関する辞書として機能する．それぞれの項目に関

XtCUt

する名前と位置情報がく丘eld〉要素によって記述され，データ項目への名前によるアクセスが可能となっている．

項目の抜き出し血Share シェア計霊

項目の文字列交換
レコード■書十河COmbi 項目の傭の組合せ出力
血SeP

ファイル分割

XtCal

項目Ⅶ漬暮

X【nulto NUしL価のt換

点Sel

行の条件選択戒best 行暮号による選択

鵬Uniq

暮複行の単一化

XtSOrt

並べ替え

XtCOmmOn ファイルによる行選択 血Pattem ／くターン項目の作成

3．2 データ処理方式

X申rodud 直積漬暮

MUSASHIは，データ処理のためのプログラムとして，単一の機能に特化した小さなコマンド群を提供

鵬asn」le 相関ルールの生成

X勺Oin

単純結合

Xtkmean クラスタリング

幻旬Oin

自然結合

戒Class吋 決定木モデル生成＜？xmJversjon＝■ 1．0‖encoding＝ eucjp ？＞＜Xmltblversion＝ 1．11 ＞
くheade「＞＜title＞顧客購羊履歴データ＜／title＞＜COmment＞人エデータ＜／COmment＞＜fieIdno＝‖11■name＝‖店 sort＝ 1．■＞＜／field＞＜fieldno＝ 2■ name＝ 日付 sort＝ 12 ＞＜／field＞＜fieldno＝1．3 name＝ 時間．1sort＝lI3‖＞＜／field＞＜fieldno＝．●4 name＝ レシードSOrt＝． 411＞＜／Geld＞＜¶eldno＝■■5■−name＝‖順客…＞く作etd＞＜fieldno＝ 6 lname＝ 商品1．＞＜／fie［d＞
く¶eldno＝ 15●Iname＝ 数1‖＞く作eld＞＜¶eldno＝■■16‖name＝■I金額■■＞＜畑eld＞
く触Idno＝‖17■■name＝■■仕入金縁●＞＜畑e旧＞く¶eldno＝‖18 name＝‖粗利金額■■＞く作eld＞＜／header＞＜body＞＜！（CDATA［

A200101021340081000004AOO180000020111414021402031298129804254331133125477
A200101021340081000004AOO180000023111111111111050245024505339438143833999
A200101021340081000004AOO180000027811111011101051453145303375439143937564
A200101021340081000004AOO1800000294114140314030103210321052663731373266107
A200101021340081000004AO8180000029511111071107031268126801530715535752650925
A200101021340081000004AOO1800000323111110111011701400140031442122424288136
A200101021340081000004AOO180000035111111041104030693069304212296129621284
A200101021340081000004AOO1800000387111110711070100240024024415901590441149
A200101021340081000004AOO180000040111111011101410905090503222280128022258
A200101021340081000004AOO180000052211414071407970011001103198258125819860＞＜／body＞＜／Xmltbl＞

図1ⅩMLTableによる購買履歴の記述© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

2005年9f】号（53）655

MUSASHIではこれらのコマンドをパイプによっ

ル生成コマンド（xtclassify）では文字列パターンをて組み合わせ，シェルスクリプトとして実装すること

説明変数として扱うことが可能である．これは分子生によって多様な処理を実現可能とする．この特徴は，物学の分野で開発されたBONSAI［10］の機能をビジ

特に新しいものではなく，UNIXで伝統的に受け継ネスデータの解析の目的のために拡張したものである

がれてきた考え方である［2］．複雑なデータ処理の要［3］．

求に対しても，こうしたコマンドの組み合わせだけで

4．2 スクリプトの概要

柔軟に対応できるため，アプリケーションの開発時問

目的の分析を行うスクリプトを図2に示す．各行末の縦棒（l）は，シェル（BASH）におけるパイプのおよびコストを飛躍的に低減できる．

4．ブランド購買分類モデルの構築2機能を表しており，パイプの前に実行されたコマンドの出力データをそのまま次行のコマンドの入力データ

本節では，MUSASHIを利用して，ブランド購買として受け渡す．スクリプトは，目的変数の作成，ブ分類モデルの構築を例にしてMUSASHIの利用方法

ランド購入パターンの作成，データセットの作成，分をチュートリアル形式で解説していく．MUSASHI

類モデルの構築，の四つのブロックから構成されておの理解を目的とするため，分析枠組みについては大幅

り，次では，それぞれのブロックごとに解説を進めてに簡略化している．

いく．

4．、1分析の概略

4．3 目的変数の作成

企業にとって自社ブランドに対する顧客の忠誠度を節4．1で定義した顧客別ブランド忠誠度を計算する

高めるために顧客をどのようにマネジメントするかは（図2①−⑦）．まず元データ（図1）より対象期間

極めて重要な問題である．ここでの目的はあるブラン（2003年1月〜12月）と対象商品（111203）の行を選

ドに対する忠誠度の高い顧客に関して，過去の購買行択する（①，②）．

動にどのような特徴が見られるかについてのルールを続いて③〜⑤の処理によって，顧客別のブランドシ

ェアを計算している．③のxtcutにより必要な項目発見するというものである［3］．

ある商品分類（対象商品：商品細分類コード＝11203）におけるあるブランド（対象ブランド：ブラ（顧客，ブランド，数量）を抜き出し，④のxtaggにより，顧客別のフうンド別購買数量合計を計算していンドコード＝000803）に対する顧客の忠誠度について考える．各顧客の2003年の一年間の対象ブランドの＃目的変数の作成

シェアが0．5より大きい顧客を忠誠度の高い顧客グル①戒Sel−C■＄日付＞＝20030101＆＆‡日付く＝20031231■−idat．河l②xtsel＄tr−f細分類−Vll1203I

ープ，それ以外を忠誠度の低い顧客グループと定義す③血Cut−f顧客，ブランド，数tl④幻agg−k顧客，ブランドーf数1−C＄uml⑤河＄ha帽−k顧客イ数t：数1シェアl⑥血seトc■＄数1シェア＞0．5＆＆‡ブランドーeqOOO803−1⑦血SetCh卜V高一aClass−OClass．丸る．人工データでは，忠誠度の高い顧客は276人，低い顧客は724人で合計1，000人の顧客が分析対象となる．
これら二つのグループに属する顧客について，2001

年から2002年の2年間における，対象商品のブラン
ド購入パターン（ブランドの購入順序を表す文字列リスト）にどのような違いが見られるかについて検討する．ここでは，フうンド忠誠度を目的二変数とし，フう

ンド購入パターンを説明変数とする決定木による分類＃ブランド購入パターンの作成⑧血Seトc■＄日付＞＝20010101＆＆＄日付く＝20021231■−idat．叫⑨血Selstr−f細分類−Vll1203I⑩血Cut−f顧客，日付，ブランドl⑪血uniq−k顧客，日付l
⑫丸best−k暇客一5日付％ー−Rし101⑩xtpattern−k顧客−S日付−fブランド：ブランドパターンーd，l⑭xtcut−f顧客，ブランド／iターンーObrandPat．xt

モテリレを構築することによりルールの発見を試みる．
一般的なモデル構築において利用される説明変数は数値型もしくはカテゴリ型の属性に限定されるが，MUSASHIに実装されている決定木による分類モデ
2本原稿用のデータおよびスクリプトー式を次のURLに用意した．

＃データセットの作成⑯xtjoin−k顧客一mClass．xt−fclass−n−ibrandPat．xtl⑯xtnulto−fclass−V低−OdatSet．xt＃分類モデルの作成⑰血Classi旬−D8−CClass−Pブランドパターン
ーitrain．xt−1test．xt−D，−Ccost．xml−OmOde［．txt

http：／／musashi．sourceforge．jp／OR／musashi．tgz
656（54）© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

図2 スクリプト
オペレーションズ・リサーチ顆客 ブランド 数t 数1シェア Class

AOOOO3 000803
AOOOO5 000803
AOOOO8 000803
AOOO22
AOOO24
AOOO26
AOOO27
AOOO29AOOO3100080300080300080300080300080300080350．833 高ある単一のブランドを購入したものと見なす3．そし3

口 高て次の⑲のxtbestコマンドにより，各顧客について，

口 高

日付で降順に並べたときの上位10行を選択している．

口 高
7

口 高

5

口 高

3

0．75 高

8

0．8 高

8

0．615 高図3 目的変数class．xtの内容

AOOOO2AOOOO3

この処理により，対象商品を頻繁に購入している人については最新10回の購買ブランドのみが選択されることになる．

そして最後に，⑬のxtpatternコマンドによってブランドの購入パターンを作成している．ここでは，ブランドをコンマで区切った文字列リストとしてパターンを表現している．⑲で必要項目である「顧客」，「ブランドパターン」の二項目を抜き出している．

ブランド購入／くターン

AOOOOI

客が同一日に異なるブランドを複数購入していても，⑧〜⑲の処理による出力結果はbrandPat．xtファ

000803，000803
000803，000803

イルに出力され，内容は図4に示す通りである．

099101，041602，000803，041602

AOOOO4AOOOO7AOOOO8AOOO16000803

AOOO22
AOOO23
AOOO24121906，000803，000803，041602

4．5 データセットの作成
ここまでの処理で，結果変数（class．xt）および説121906，000803，000803
000803，000803，099101，000803，000803

明変数（brandPat．xt）の作成が完了した．これら二000803つのファイルを結合し，最終的なデータセットを作成

000803，121906，099101，000803
121906する（図2⑮−⑲）．

⑮のⅩtjoinコマンドは，入力データ（brandPat．
xt）に参照データ（class．xt）の「class」項目を結合

図4 ブランド購入パターンの内容（抜粋）する．結合の条件としては，両データのキー項目（顧客）の値が等しい場合に結合処理を行う．また−nをる．その結果から⑤のxtshareコマンドにより各顧客指定することにより，キー項目の値が入力データにあの中でのブランドシェアを計算している．計算されたって参照デpタにない場合にでも，NULL値をセッ

値は，「数量シェア」という新しい項目名で出力されトする（SQLのOuterJoinに同じ）．説明変数デー

る．

タ（入力データ）には全顧客の情報が含まれているが，最後に対象ブランド（000803）のシェアが0．5を超参照データ（目的変数）には，ブランド忠誠度の高いえる顧客を⑥のⅩtSelコマンドによって選択している．

顧客のみ含まれている．よって，OuterJoinによっ⑦のxtsetchrコマンドは，新しい項目（class）として忠誠度の低い顧客の「class」項目にはNULL値て全行に「高」という文字をセットする．この項目が（アスタリスク）がセットされることになる．そして目的変数となる（「低」については節4．6にて設定す⑲のxtnultoコマンドにより，この「class」項目のる）．

NULL値を「低」に置換している．出力結果はdat−①−⑦の処理による出力結果はclass．xtファイルに出力され，内容は図3に示す通りである．後の処理

Set．xtファイルに出力され，内容は図5に示す通りである．

で必要な項目は「顧客」と「class」のみで，その他

4．6 分類モデルの構築の項目は，Class項目を計算するために利用したもの

ここまでに作成したデータセットを用いて決定木による分類モデルを構築する（図2⑰）．xtclassifyは，である．

4．4 ブランド購入パターンの作成

決定木による分類モデルを作成するコマンドである．

本節では図4に示される顧客別のブランド購入パタ

このコマンドではCART［1］と同様に，枝の分岐基準

ーンを作成する（図2⑧〜⑲）．⑧〜⑲は前節と同様に必要な行と項目を選択している．
⑪のxtuniqでは「顧客」と「日付」項目について，
値が重複している行を単一化する．すなわち，ある顧としてGiniIndexを用い二進木を生成する．枝刈リ
3分析目的からすると全く厳密性を欠くものであるが，ここではMUSASHIの利用方法の解説のために簡略化している．

© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

2005年9月号（55）65丁低低高低低高低高低高＝ブランド購入パターン

AOOOO2000803，000803
000803，000803

AOOOO3099101，041602，000803，041602

AOOOO4000803AOOOO7AOOOO8121906，000803，000803
000803，000803，099101，000803，000803

AOOO16000803

AOOO22000803，121906，099101，000803

AOOO23121906

AOOO24121906，000803，000803，041602

AOOOOI【AIphabet−lndex］
FjeIdName：＄ブランド／（ターンlndex【1】＝ぐ■099101■t， ■121906■■）
lndex【2】＝（■■000803■■，■■041602■1【DecisionTree］

if（＄ブランド′iターンhassubstring．122‖）
thenif（＄ブランドパターンhassubstringr112M）
then＄cIass＝ l高一l（hiusup）＝（171／368）

elseif（＄ブランドパターンhassubstring 2222．1）
then＄clas＄＝‖高 （hit／sup）＝（64／138）

else＄class＝ 低‖（hit／sup）＝（164／187）
eIse＄cla＄S＝M低 （hiusup）＝（289／307）【ConfusionMatrix］

PredictedAs…

図5 データセット（抜粋）

高

低

Total

453 271 724
41
235 276
高Tota1 494 506 1000
低＜？xmJversion＝ 1．0 encoding＝ eucJp 一？＞＜missClassificationCost＞＜COStClass＝ 高 predict＝ 低‖value＝ 2．62 ／＞図7 分類モデル（抜粋）＜／missClassificationCost＞

図6 コストファイルについてはC4．5［9］で採用されているError Based
Pruningを用いている．
⑰のxtclassifyでは，「ブランドパターン」項目を説明変数とし，「Class」項目を目的変数として指定し決定木による分類モデルを生成している．またここではコストファイルを利用している（−CCOSt．Xml）．本
ケースにおけるデータセットでは，忠誠度の高い顧客

図8 決定木と低い顧客の人数比が1：2．62と偏りのある分布であるため，コストファイルを指定することでこの偏りをを2回連続購入していれば」と解釈する．人工データ

吸収している．コストファイルの内容は図6に示されを利用しているため，ルールそのものに意味はないが，るようにⅩMLにて記述する．

文字列パターンを属性として扱うことにより，数値や実行結果は，テキストとしてmodel．txtに出力され，その結果が図7に示されている．また図8に決定木を分かりやすく図示している．
BONSAIはオリジナルのアルファベットを少数のグループに分割することで，より精度が高く可読性のカテゴリ属性を中心とした従来の分類モデルとは異なった観点からの知識発見が可能となる．
5．おわりにコマンドを組み合わせてスクリプトを作成するのは，高いモデルの構築を試みる．図7の先豆引こ示されてい初めのうちは少し複雑に思えるかもしれない．しかしるAlphabet−Indexにそのグループが示されている．

慣れてくれば，どのような複雑なデータでも，ブロッ

ここでは四つのブランドを二つのグループに分割してク遊びの感覚でコマンドを組み合わせ作成することがおり， 099101 と 121906 をグループ「1」に，できるようになり，MUSASHIの柔軟性を体感でき

000803 と 041602 をグループ「2」に分割し（こるであろう．また処理速度についても，インデックス

れらの新しいグループ番号をインデックスと呼ぶ），などの特別なデータ構造を採用しておらず，基本はシ

これらのインデックスに基づいて決定木を作成していーケンシャル処理のみであるにも関わらず，その効率る．

性は高く，実際に大量データを処理することにより，決定木のルートノードの条件は，「もしインデック

ス2で示されるブランド（000803もしくは041602）
65tI（56）

その効率性を実感していただきたい．

MUSASHIプロジェクトはまだ初期段階にあり，© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

オペレーションズ・リサーチ

今後も精力的に開発を進めていく計画である．特に［4］Hamuro，Y．，Katoh，N．，Yada，K．：MUSAS

MUSASHIは前処理の効率化を目的に開発を進めて

Flexible and Efficient Data Preprocesslng Toolfor

きた経緯から，続計解析手法やマイニングアルゴリズ

KDDbased on XML，P7t）C．〆the Fi）StInternational

ムの実装はまだまだ少ない．MUSASHIプロジェクl穐戒5ゐ呼0〝加ゎCJeα刀わ7gα乃dP7ゆ和CeS57捏g，pp．38−

トはAPIもオープンにしており，研究者が独自に開発したデータ解析手法を実装するためのプラットフォームとして活用していただけることを期待している．
MUSASHIの開発に興味をお持ちの方は是非ともMUSASHIプロジェクトに参加いただければと願っている．

49（2003）［5］羽室行信，加藤直樹，矢田勝俊，鷲尾隆：MUSASHIでらくらくデータマイニング，Software Design，VOl．222，
技術評論社，pp．95−108（2004）．
［6］羽室行信，加藤直樹，矢田勝俊，鷲尾隆：大規模ビジネ

スデータからの知識発見システムMUSASHI，人1知能学会誌，Vol．20，No．1，pp．59−66（2005）．
［7］羽室行信，加藤直樹：ネットワーク流量推定によるブ

参考文献

ランド購買パターンからの知識発見，オペレーション［1］Breiman，L．Friedman，J．H．，OIshen，R．A．，and
ズ・リサーチ，Vol．50，No．2，pp．84−91（2005）．
Stone，C．J．：ChlSSi＃cation and RegYeSSion T77？eS
Chapman＆Hall（1984）．

［8］Pyle，D．：D7ia P7喀a7dionカrlhhlMining，Mor−
ganKaufmann，1999．

［2〕Gancarz，M．：771e Un玩E％ilosqp毎，Butterworth−［9］Quinlan，J．R∴C4，5．・♪γ昭和∽S カγ 〟αr妨7どHeinemann（1996）．

Leami乃g，MorganKaufmannPublishers（1993）．
［3］Y．Hamuro，H．Kawata，N．Katoh，K．Yada：A［10］Shimozono，S．，Shinohara，A．，Shinohara，TMachine Learning Algorithm for Analyzlng String

Miyano，S．，Kuhara，S．andArikawa，S．：Know

PatternsHelpstoDiscoverSimpleandInterpretable

AcquisitionfromAminoAcidSequencesbyMachine

BusinessRulesfromPurchaseHistory，LectureNotes

LearningSystemBONSAI，Tmns．JゆrmationP7t）CeS−

inArtificialIntelligence，Vol．2281，pp．565−575（2001）．
5才乃g Soc才β秒〆ノ郎α〃，Vol．35，pp．2009−2018（1994）．

© 日本オペレーションズ・リサーチ学会. 無断複写・複製・転載を禁ず.

2005年9月号（57）659