(57)【特許請求の範囲】
【請求項１】
学習データの属性と当該属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された各論理式構造に含まれる論理式表現を２分割した部分論理式構造を生成して分割元の論理式構造に対応付けた列挙プランを生成する列挙プラン生成部と、
生成された前記部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成部とを備え、
前記列挙プラン生成部は、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数が均等になるように、論理式構造を２分割する
ことを特徴とする属性列挙システム。
【請求項２】
列挙プラン生成部は、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成し、属性生成部によって生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、論理式構造の一部をより多く表現可能な部分論理式構造を前記列挙プランの中から選択する
請求項１記載の属性列挙システム。
【請求項３】
属性生成部は、列挙プラン生成部によって選択された部分論理式構造に応じて生成される新たな属性を記憶装置に記憶させ、前記記憶装置に記憶された属性をもとに、他の論理式構造に応じた新たな属性を生成する
請求項２記載の属性列挙システム。
【請求項４】
属性生成部により生成される属性の評価を行う属性評価部を備え、
属性生成部は、各部分論理式構造に応じて新たな属性を生成するごとに、生成した属性を前記属性評価部に送信する
請求項１から請求項３のうちのいずれか１項に記載の属性列挙システム。
【請求項５】
列挙プラン生成部は、属性の組合せを表す論理式表現に加法標準形または連言標準形を用いる
請求項１から請求項４のうちのいずれか１項に記載の属性列挙システム。
【請求項６】
学習データの属性と当該属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成する列挙プラン生成部と、
前記部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成部とを備え、
前記列挙プラン生成部は、前記属性生成部によって生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、前記論理式構造の一部をより多く表現可能な部分論理式構造を前記列挙プランの中から選択する
ことを特徴とする属性列挙システム。
【請求項７】
属性生成部は、列挙プラン生成部により選択された部分論理式構造に応じて生成される新たな属性を記憶装置に記憶させ、前記記憶装置に記憶された属性をもとに、他の論理式構造に応じた新たな属性を生成する
請求項６記載の属性列挙システム。
【請求項８】
コンピュータの列挙プラン生成部が、学習データの属性と当該属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、
前記列挙プラン生成部が、生成された各論理式構造に含まれる論理式表現を２分割した部分論理式構造を生成して分割元の論理式構造に対応付けた列挙プランを生成し、
前記コンピュータの属性生成部が、生成された前記部分論理式構造に応じて各属性を組み合わせた新たな属性を生成し、
列挙プランを生成する際、前記列挙プラン生成部が、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数が均等になるように、論理式構造を２分割する
ことを特徴とする属性列挙方法。
【請求項９】
列挙プラン生成部が、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成し、
列挙プラン生成部が、生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、論理式構造の一部をより多く表現可能な部分論理式構造を前記列挙プランの中から選択する
請求項８記載の属性列挙方法。
【請求項１０】
コンピュータの列挙プラン生成部が、学習データの属性と当該属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、
前記列挙プラン生成部が、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成し、
前記列挙プラン生成部が、部分論理式構造に応じて生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、前記論理式構造の一部をより多く表現可能な部分論理式構造を前記列挙プランの中から選択し、
前記コンピュータの属性生成部が、選択された部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する
ことを特徴とする属性列挙方法。
【請求項１１】
属性生成部が、選択された部分論理式構造に応じて生成される新たな属性を記憶装置に記憶させ、前記記憶装置に記憶された属性をもとに、他の論理式構造に応じた新たな属性を生成する
請求項１０記載の属性列挙方法。
【請求項１２】
コンピュータに、
学習データの属性と当該属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された各論理式構造に含まれる論理式表現を２分割した部分論理式構造を生成して分割元の論理式構造に対応付けた列挙プランを生成する列挙プラン生成処理、および、
生成された前記部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成処理を実行させ、
前記列挙プラン生成処理で、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数が均等になるように、論理式構造を２分割させる
ための属性列挙プログラム。
【請求項１３】
コンピュータに、
列挙プラン生成処理で、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成させ、属性生成処理で生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、論理式構造の一部をより多く表現可能な部分論理式構造を前記列挙プランの中から選択させる
請求項１２記載の属性列挙プログラム。
【請求項１４】
コンピュータに、
学習データの属性と当該属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成する列挙プラン生成処理、および、
前記部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成処理とを実行させ、
前記列挙プラン生成処理で、前記属性生成処理で生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、前記論理式構造の一部をより多く表現可能な部分論理式構造を前記列挙プランの中から選択させる
ための属性列挙プログラム。
【請求項１５】
コンピュータに、
属性生成処理で、列挙プラン生成処理で選択された部分論理式構造に応じて生成される新たな属性を記憶装置に記憶させ、前記記憶装置に記憶された属性をもとに、他の論理式構造に応じた新たな属性を生成させる
請求項１４記載の属性列挙プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習データの属性を組み合わせた新たな属性を列挙する属性列挙システム、属性列挙方法および属性列挙プログラムに関する。
【背景技術】
【０００２】
データマイニングは、大量の情報の中から、これまで未知であった有用な知見を見つける技術である。データマイニングを効率的に実施するため、データマイニングに利用される属性（feature ）を加工し、新たな属性を生成する処理が行われる。【０００３】
新たな属性を生成する方法の一つとして、各属性を２値属性で表し、その２値属性をＡＮＤ／ＯＲ演算子で繋いだ論理式を新たな属性として生成する方法が知られている。【０００４】
例えば、各曜日を表す場合、７種類の２値属性（ＩＳ＿日曜日、ＩＳ＿月曜日、ＩＳ＿火曜日、ＩＳ＿水曜日、ＩＳ＿木曜日、ＩＳ＿金曜日、ＩＳ＿土曜日）を用いて曜日を表すことができる。また、１日を午前または午後で表す場合、２種類の２値属性（ＩＳ＿午前、ＩＳ＿午後）を用いて１日を表すことができる。【０００５】
これらの２値属性に基づいて、例えば、「週末の午後」という新たな属性を生成できる。具体的には、これらの２値属性をＡＮＤ／ＯＲ演算子で繋いだ論理式「（ＩＳ＿土曜日  ＡＮＤ  ＩＳ＿午後）ＯＲ（ＩＳ＿日曜日  ＡＮＤ  ＩＳ＿午後）」は、週末の午後という属性を表す。【０００６】
実問題を解く上では、このように属性を適切に組合せた新しい属性を作ることが必要になることが多い。しかし、属性の適切な組合せ方を発見するのはそう簡単ではない。例えば、元データが１００個の属性を持ち、このうち５つの属性をＡＮＤ／ＯＲで組み合わせることを考える場合、１００５×２４のオーダ（すなわち、１６００億）の組合せによる論理式が存在するため、２値属性を単純に組み合わせた場合、大量のメモリや多大な計算時間を消費してしまうことになる。【０００７】
非特許文献１や非特許文献２には、属性を列挙する方法が記載されている。非特許文献１および非特許文献２に記載された方法では、まず各属性をＡＮＤ演算子で繋いだ属性（加法標準形：ＤＮＦ（Disjunctive normal form ））を列挙し、列挙したこれらの属性をＯＲ演算子で繋いで新たな属性を生成する。【０００８】
また、非特許文献３には、頻繁に用いられるＤＮＦのパターンを抽出する方法が記載されている。なお、非特許文献４には、属性を評価する方法の一例が記載されている。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Lizhuang Zhao, Mohammed J. Zaki, Naren Ramakrishnan, "BLOSOM: A Framework for Mining Arbitrary Boolean Expressions", KDD '06 Proceedings of the 12th ACM SIGKDD international conference on Knowledge discovery and data mining, p.827-832, 2006
【非特許文献２】Vimieiro Renato, Moscato Pablo, “Mining disjunctive minimal generators with TitanicOR”, Expert Systems with Applications Vol.39, Issue 9, p.8228-8238, 2012
【非特許文献３】Geng Li, Mohammed J. Zaki, ”Sampling Minimal Frequent Boolean (DNF) Patterns”, KDD '12 Proceedings of the 18th ACM SIGKDD international conference on Knowledge discovery and data mining, p.87-95, 2012
【非特許文献４】S. Perkins, J. Theiler, ”Online Feature Selection using Grafting”, In ICML, 2003
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、非特許文献１や非特許文献２に記載された方法では、ＤＮＦを列挙する際、最初にＡＮＤ演算子で連結した属性のみを列挙したのち、これらを一つずつＯＲ演算子で接続していく、という列挙方式が用いられている。しかし、これでは大量のメモリ空間が必要になってしまうという問題がある。例えば、非特許文献１に記載された方法を用いて、１００個のオリジナル属性の中から５つの属性をＡＮＤ／ＯＲ演算子で繋いだ属性を列挙するとする。この場合、４つの属性をＡＮＤ／ＯＲ演算子で繋いだ属性は、１００４通りの組合せになるが、このすべての属性をメモリに保持しなければならず、大量のメモリ空間が必要になってしまう。【００１１】
一方、大量のメモリ空間が必要になることを抑制するため、新たに作成される属性をメモリにキャッシュせず、その都度計算することも考えられる。しかし、この方法では、全ての組合せを、一から再生成する必要があるため、多大な計算時間を消費してしまい、高速に属性を列挙することができない問題がある。【００１２】
また、大量のメモリや多大な計算時間を消費することを抑制するため、非特許文献３に記載された方法を用いて、ランダムに属性をサンプリングすることも考えられる。しかし、非特許文献３に記載された方法で抽出される組合せには網羅性が無いため、より良い属性を生成することは困難である。【００１３】
そこで、本発明は、属性の網羅性を担保しつつ、メモリの消費を抑えて高速に新たな属性を列挙することができる属性列挙システム、属性列挙方法および属性列挙プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明による属性列挙システムは、学習データの属性とその属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された各論理式構造に含まれる論理式表現を２分割した部分論理式構造を生成して分割元の論理式構造に対応付けた列挙プランを生成する列挙プラン生成部と、生成された部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成部とを備え、列挙プラン生成部が、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数が均等になるように、論理式構造を２分割することを特徴とする。【００１５】
本発明による他の属性列挙システムは、学習データの属性とその属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成する列挙プラン生成部と、部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成部とを備え、列挙プラン生成部は、属性生成部によって生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、論理式構造の一部をより多く表現可能な部分論理式構造を列挙プランの中から選択することを特徴とする。【００１６】
本発明による属性列挙方法は、コンピュータの列挙プラン生成部が、学習データの属性とその属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、列挙プラン生成部が、生成された各論理式構造に含まれる論理式表現を２分割した部分論理式構造を生成して分割元の論理式構造に対応付けた列挙プランを生成し、コンピュータの属性生成部が、生成された部分論理式構造に応じて各属性を組み合わせた新たな属性を生成し、列挙プランを生成する際、列挙プラン生成部が、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数が均等になるように、論理式構造を２分割することを特徴とする。
【００１７】
本発明による他の属性列挙方法は、コンピュータの列挙プラン生成部が、学習データの属性とその属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、列挙プラン生成部が、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成し、列挙プラン生成部が、部分論理式構造に応じて生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、論理式構造の一部をより多く表現可能な部分論理式構造を列挙プランの中から選択し、コンピュータの属性生成部が、選択された部分論理式構造に応じて各属性を組み合わせた新たな属性を生成することを特徴とする。
【００１８】
本発明による属性列挙プログラムは、コンピュータに、学習データの属性とその属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された各論理式構造に含まれる論理式表現を２分割した部分論理式構造を生成して分割元の論理式構造に対応付けた列挙プランを生成する列挙プラン生成処理、および、生成された部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成処理を実行させ、列挙プラン生成処理で、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数が均等になるように、論理式構造を２分割させることを特徴とする。【００１９】
本発明による他の属性列挙プログラムは、コンピュータに、学習データの属性とその属性の組合せ最大数とから、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合を生成し、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現した列挙プランを生成する列挙プラン生成処理、および、部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成処理とを実行させ、列挙プラン生成処理で、属性生成処理で生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、論理式構造の一部をより多く表現可能な部分論理式構造を列挙プランの中から選択させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、属性の網羅性を担保しつつ、メモリの消費を抑えて高速に新たな属性を列挙することができる。すなわち、上記の「発明が解決しようとする課題」に記載された技術課題を、上記の「課題を解決するための手段」に示される技術手段を用いることで、本「発明の効果」に記載される技術効果を得ることができる。
【図面の簡単な説明】
【００２１】
【図１】本発明による属性列挙システムの一実施形態を示すブロック図である。
【図２】学習データが示す属性の例を示す説明図である。
【図３】列挙プラン生成部１１が行う処理の例を示すフローチャートである。
【図４】グラフ構造の例を示す説明図である。
【図５】トポロジカルソートの動作例を示す説明図である。
【図６】トポロジカルソートの動作例を示す説明図である。
【図７】表形式で表現された列挙プランの例を示す説明図である。
【図８】計算コストおよびメモリコストの例を示す説明図である。
【図９】列挙プランの例を示す説明図である。
【図１０】中間データ記憶部１３が記憶するデータの例を示す説明図である。
【図１１】ＤＮＦ探索部１２による処理の具体例を示す説明図である。
【図１２】本発明による属性列挙システムの概要を示すブロック図である。
【図１３】本発明による属性列挙システムの他の概要を示すブロック図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態を図面を参照して説明する。図１は、本発明による属性列挙システムの一実施形態を示すブロック図である。以下の説明では、２値属性の組合せを表す論理式をＤＮＦで表現するものとする。ＤＮＦは、Ｚ＝∨∧ｉｚｉで表現される論理式であり、論理積のみからなる項を論理和で繋いだ式で表現される。任意の論理式は、ＤＮＦに等価変換可能である。
【００２３】
なお、本実施形態では、ＤＮＦの列挙問題について説明するが、論理和のみからなる項を論理積で繋いだ式で表現されるＣＮＦ（Conjunctive normal form ）の列挙問題についても同様に適用可能である。
【００２４】
また、以下の説明では、論理式に含まれている属性の数を、論理式の長さと定義する。図２は、学習データが示す属性の例を示す説明図である。図２に例示する表（行列）は、学習データであるサンプルデータｓ１〜ｓ５に対して、属性ｆ１〜ｆ５を有するか否かを１／０で表現したものである。
【００２５】
例えば、長さ２の論理式ｆ１∨ｆ３をそれぞれの学習データについて計算すると、ｆ１∨ｆ３＝［１，１，１，１，０］と算出される。また、例えば、長さ２の論理式ｆ１∧ｆ４をそれぞれの学習データについて計算すると、ｆ２∧ｆ４＝［０，０，１，０，０］と算出される。さらに、例えば、長さ３の論理式（ｆ２∧ｆ４）∨ｆ５をそれぞれの学習データについて計算すると、（ｆ２∧ｆ４）∨ｆ５＝［０，０，１，１，１］と算出される。
【００２６】
図１に例示する本実施形態の属性列挙システムは、列挙プラン生成部１１と、ＤＮＦ探索部１２と、中間データ記憶部１３と、逐次的属性評価部１４と、出力データ記憶部１５とを備えている。
【００２７】
本実施形態の属性列挙システムには、指定された属性を学習データが有するか否かを示す２値行列Ｘと、組み合わせる属性の最大数ＭａｘＬｅｎが入力される。例えば、２値行列Ｘとして、図２に例示する行列が入力される。また、ＭａｘＬｅｎは、例えば、ユーザ等により指定される。
【００２８】
列挙プラン生成部１１は、２値行列ＸおよびＭａｘＬｅｎが入力されると、学習データの属性とＭａｘＬｅｎとから、長さがＭａｘＬｅｎ以内の属性の組合せを表す論理式を生成する。さらに、本実施形態では、列挙プラン生成部１１は、生成した論理式の組み合わせ方を表現した論理式構造の集合を生成する。本実施形態では、論理式をＤＮＦで表現しているため、この論理式構造のことをＤＮＦラベルと記す。
【００２９】
ＤＮＦラベルは、ＡＮＤ項に含まれる属性数とＯＲ演算子を示すカンマで論理式を表現する。例えば、［３］と表現されるＤＮＦラベルは、“Ａ  ａｎｄ  Ｂ  ａｎｄ  Ｃ”を表現する。また、例えば、［１，１］と表現されるＤＮＦラベルは、“Ａ  ｏｒ  Ｂ”を表現する。また、例えば、［１，３］と表現されるＤＮＦラベルは、“Ａ  ｏｒ  （Ｂ  ａｎｄ  Ｃ  ａｎｄ  Ｄ）”を表現する。ここで、Ａ、Ｂ、ＣおよびＤは、属性を示す。
【００３０】
次に、列挙プラン生成部１１は、生成した論理式構造に含まれる論理式表現を２つの部分論理式構造に分割する。本実施形態では、列挙プラン生成部１１は、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造で表現する。グラフ構造における各ノードは、論理式構造または部分論理式構造である。このように表現されたグラフ構造を、以下、列挙プランと記す。このようなグラフ構造を生成することにより、分割元の論理式構造と、２分割された部分論理式構造とが対応付けられることになる。グラフ構造は、例えば、ＤＡＧ（有向非循環グラフ：directed acyclic graph）で表現される。
【００３１】
以下、列挙プラン生成部１１がグラフ構造を生成する処理を具体的に説明する。図３は、列挙プラン生成部１１が行う処理の例を示すフローチャートである。まず、列挙プラン生成部１１が、長さＭａｘＬｅｎまでのＤＮＦラベルの全組合せを生成する（図３におけるステップＳ１１）。例えば、ＭａｘＬｅｎ＝４の場合、生成されるＤＮＦラベルは、［４］，［３，１］，［３］，［２，２］，［２，１，１］，［２，１］，［２］，［１，１，１，１］，［１，１，１］，［１，１］，［１］である。なお、ここで生成されるＤＮＦラベルの集合は、属性の組合せを表す論理式表現の組み合わせ方を表現した論理式構造の集合と言える。
【００３２】
次に、列挙プラン生成部１１は、構造分割を行う（図３におけるステップＳ１２）。具体的には、列挙プラン生成部１１は、生成したＤＮＦラベルを分割して親ノードを特定し、ノード間を結ぶエッジを生成する。
【００３３】
列挙プラン生成部１１は、例えば、以下の手順に基づいて親ノードを特定する。対象とするＤＮＦラベルがＡＮＤ項のみの場合、列挙プラン生成部１１は、ＡＮＤ項の数をＮとしたとき、長さがｃｅｉｌｉｎｇ（Ｎ／２）の部分ＤＮＦラベルと、長さがＮ−ｃｅｉｌｉｎｇ（Ｎ／２）の部分ＤＮＦラベルに分割する。ここで、ｃｅｉｌｉｎｇ（）関数は、小数点以下を切り上げる関数である。
【００３４】
一方、対象とするＤＮＦラベルがＯＲ項（すなわち、カンマ）を含む場合、列挙プラン生成部１１は、カンマ区切りの数列を、２つの部分ＤＮＦラベルに分割する。このとき、列挙プラン生成部１１は、２つの部分ＤＮＦラベルに含まれる属性の数の差が最小になるようにＤＮＦラベルを分割する。すなわち、列挙プラン生成部１１は、各ＤＮＦラベルから生成される２つの部分ＤＮＦラベルに含まれる属性の数が均等になるように、ＤＮＦラベルを２分割する。
【００３５】
以下、ＤＮＦラベルが［１，１，２，３，４］と表現される場合の例を用いて、ＤＮＦラベルをセットＳ１とセットＳ２に分割するアルゴリズムを説明する。なお、Ｓ１およびＳ２は、初期状態では空の状態に初期化される。
【００３６】
まず、列挙プラン生成部１１は、ＤＮＦラベルを降順にソートする。ソートされた結果をｓｏｒｔｅｄ＿ｌｉｓｔに格納すると、ｓｏｒｔｅｄ＿ｌｉｓｔ＝［４，３，２，１，１］になる。列挙プラン生成部１１は、Ｓ１とＳ２に含まれる数字の総和を算出し、小さいほうのセットに、ｓｏｒｔｅｄ＿ｌｉｓｔの先頭の数字を設定する。そして、設定された数字およびその後のカンマをｓｏｒｔｅｄ＿ｌｉｓｔから削除する。
【００３７】
上記例の場合、初期状態では、Ｓ１もＳ２も数字の総和は０で等しいため、列挙プラン生成部１１は、まず先頭の数字「４」を、Ｓ１に設定してｓｏｒｔｅｄ＿ｌｉｓｔから削除する。よって、ｓｏｒｔｅｄ＿ｌｉｓｔ＝［３，２，１，１］、Ｓ１＝［４］、Ｓ２＝［］になる。
【００３８】
このとき、Ｓ１の数字の総和は４であり、Ｓ２の数字の総和は０である。そこで、列挙プラン生成部１１は、先頭の数字「３」を、Ｓ２に設定してｓｏｒｔｅｄ＿ｌｉｓｔから削除する。よって、ｓｏｒｔｅｄ＿ｌｉｓｔ＝［２，１，１］、Ｓ１＝［４］、Ｓ２＝［３］になる。すると、Ｓ１の数字の総和は４であり、Ｓ２の数字の総和は３である。そこで、列挙プラン生成部１１は、先頭の数字「２」を、Ｓ２に設定してｓｏｒｔｅｄ＿ｌｉｓｔから削除する。よって、ｓｏｒｔｅｄ＿ｌｉｓｔ＝［１，１］、Ｓ１＝［４］、Ｓ２＝［３，２］になる。
【００３９】
以下、同様に、Ｓ１の数字の総和が４であり、Ｓ２の数字の総和は５であるため、列挙プラン生成部１１は、先頭の数字「２」を、Ｓ１に設定してｓｏｒｔｅｄ＿ｌｉｓｔから削除する。よって、ｓｏｒｔｅｄ＿ｌｉｓｔ＝［１］、Ｓ１＝［４，１］、Ｓ２＝［３，２］になる。最後に、Ｓ１の数字の総和が５であり、Ｓ２の数字の総和も５であるため、列挙プラン生成部１１は、先頭の数字「１」を、Ｓ１に設定してｓｏｒｔｅｄ＿ｌｉｓｔから削除する。ｓｏｒｔｅｄ＿ｌｉｓｔ＝［］、Ｓ１＝［４，１，１］、Ｓ２＝［３，２］になる。
【００４０】
その結果、ＤＮＦラベルは、２つの部分ＤＮＦラベル［４，１，１］と［３，２］に分割される。そこで、列挙プラン生成部１１は、この２つの部分ＤＮＦラベルを親ノードとし、分割元のＤＮＦラベルを子ノードとして、親ノードから子ノードへのエッジを生成する。
【００４１】
図４はグラフ構造の例を示す説明図である。図４に例示するグラフは、ＭａｘＬｅｎ＝４の場合におけるＤＡＧの例を示す。
【００４２】
次に、列挙プラン生成部１１は、各ノード（ＤＮＦラベル）に順序付けを行う（図３におけるステップＳ１３）。本実施形態では、列挙プラン生成部１１は、トポロジカルソートにより、各ノードに順序付けを行う。なお、ＤＡＧは、トポロジカルソート可能なことが知られており、トポロジカルソートにより親子関係（矢印の前後関係）を保った順序付けが可能である。
【００４３】
以下、図４に例示するＤＡＧに対して、トポロジカルソートにより各ノードに順序付けする動作を説明する。図５および図６は、トポロジカルソートの動作例を示す説明図である。まず、列挙プラン生成部１１は、ＤＮＦラベルの集合Ｓを降順にソートする。その結果、ＤＮＦラベル［４］が先頭の要素になる。そこで、列挙プラン生成部１１は、ＤＮＦラベル［４］のノードを訪問済みのノードとしてチェックする（図５（ａ））。
【００４４】
次に、列挙プラン生成部１１は、ＤＮＦラベル［４］のノードの出力辺を辿り、その先のＤＮＦラベル［２］のノードを訪問済みのノードとしてチェックする（図５（ｂ））。同様に、列挙プラン生成部１１は、ＤＮＦラベル［２］のノードの出力辺を辿り、その先のＤＮＦラベル［１］のノードを訪問済みのノードとしてチェックする。ＤＮＦラベル［１］のノードは、親ノードが存在しないため、列挙プラン生成部１１は、ＤＮＦラベル［１］のノードを１番に設定する（図５（ｃ））。
【００４５】
このとき、ＤＮＦラベル［２］のノードは、親ノードにすべて順番が設定されたため、列挙プラン生成部１１は、ＤＮＦラベル［２］のノードを２番に設定する。同様に、ＤＮＦラベル［４］のノードは、親ノードにすべて順番が設定されたため、列挙プラン生成部１１は、ＤＮＦラベル［４］のノードを３番に設定する（図５（ｄ））。
【００４６】
次に、列挙プラン生成部１１は、ＤＮＦラベルの集合Ｓの先頭から２つめの要素であるＤＮＦラベル［３，１］を選択し、ＤＮＦラベル［３，１］のノードを訪問済みのノードとしてチェックする（図６（ｅ））。列挙プラン生成部１１は、ＤＮＦラベル［３，１］のノードの出力辺を辿り、その先のＤＮＦラベル［３］のノードを訪問済みのノードとしてチェックする。
【００４７】
ＤＮＦラベル［３］のノードは、親ノードにすべて順番が設定されたため、列挙プラン生成部１１は、ＤＮＦラベル［３］のノードを４番に設定する。同様に、ＤＮＦラベル［３，１］のノードは、親ノードにすべて順番が設定されたため、列挙プラン生成部１１は、ＤＮＦラベル［３，１］のノードを５番に設定する（図６（ｆ））。以下、列挙プラン生成部１１が同様の動作を繰り返すことにより、全てのノードに順番が設定される（図６（ｇ））。
【００４８】
なお、グラフ構造で表現される列挙プランは、表形式でも表現することが可能である。図７は、表形式で表現された列挙プランの例を示す説明図である。図７に示す例では、列挙プランは、ＤＮＦラベルと、そのＤＮＦラベルの親になる２つのＤＮＦラベルとを対応付けている。また、列挙プランは、キャッシュするか否かを示すフラグ（cacheFlag ）を含んでいてもよい。
【００４９】
次に、列挙プラン生成部１１は、キャッシュ対象を特定する（図３におけるステップＳ１４）。具体的には、列挙プラン生成部１１は、中間データ記憶部１３に記憶させる対象の属性を特定する。このとき、列挙プラン生成部１１は、ＤＮＦラベルで特定される論理式構造（論理式）に基づいて生成される新たな属性を中間データ記憶部１３に記憶させるために必要な空間サイズを小さくしつつ、論理式構造の一部をより多く表現可能な部分論理式構造を列挙プランから選択する。なお、論理式構造の一部をより多く表現可能とは、部分論理式構造の再利用性が高いことを意味する。なお、新たな属性は、後述するＤＮＦ探索部１２によって生成される。
【００５０】
本実施形態では、列挙プラン生成部１１は、計算コストとメモリコストに基づいて、キャッシュ対象を特定する。ここでは、計算コストを、列挙プラン上の参照回数とする。具体的には、計算コストは、親ノードとして参照される回数を示す。また、メモリコストとは、属性を記憶するため必要なメモリ空間の大きさであり、単純には、ＤＮＦラベルに含まれる数の総和で表される。
【００５１】
図８は、図４に例示する列挙プランに基づいて計算コストおよびメモリコストを算出した例を示す説明図である。図８に示す例では、計算コストは、列挙プラン上の参照回数、メモリコストは、ＤＮＦラベルに含まれる数の総和を示す。なお、図８（ａ）に例示するように、キャッシュ対象が特定されていない場合、ｃａｃｈｅＦｌａｇ列はブランクの状態である。
【００５２】
列挙プラン生成部１１は、親ノードとして参照される回数が１回以上（すなわち、計算コストが１以上）のノードを降順で並べ替え、上位Ｋ個のノードをキャッシュ対象として特定する。なお、選択するノードの個数は、生成される属性のメモリサイズＭが指定されるキャッシュサイズ以内に収まる個数である。
【００５３】
元属性数をｐとし、ベクトル長をｎとするとき、ノードセットＳのキャッシュサイズは、以下に示す式１で算出される。
【００５４】
【数１】
0006500896.tif 000002
【００５５】
式１において、ｓｕｍ（ｄｎｆ．ｌａｂｅｌ）は、ＤＮＦラベルに含まれる数の総和を示す。また、式１において、１変数あたり４バイト必要であると想定し、４が乗じられている。例えば、ベクトル長ｎ＝１０、元属性数ｐ＝１０とすると、ＤＮＦラベル［１］とＤＮＦラベル［２］のキャッシュは、以下に示す式２のように算出される。
【００５６】
Cashesize([1],[2])=4*10*10+4*10*10^2=4400byte （式２）
【００５７】
上記の式２に示すように、ＤＮＦラベル［１］で示されるＤＮＦは、ｐ個のオーダである。すなわち、キャッシュサイズは、ｐ個×長さ１０×４バイトである。一方、ＤＮＦラベル［２］で示されるＤＮＦは、ｐ２個のオーダである。すなわち、キャッシュサイズは、ｐ２個×長さ１０×４バイトである。なお、ＤＮＦラベル［１，１］で示されるＤＮＦも、ｐ２個のオーダであるため、キャッシュサイズは、ＤＮＦラベル［２］で示されるＤＮＦと同様である。
【００５８】
本実施形態では、ＤＮＦラベル［１］，［２］，［１，１］がキャッシュ対象として特定されたものとする。この場合、列挙プラン生成部１１は、図８（ｂ）に例示するように、キャッシュ対象になったＤＮＦラベルに対しては、ｃａｃｈｅＦｌａｇ列に“ＴＲＵＥ”を設定し、キャッシュ対象でないＤＮＦラベルに対しては、ｃａｃｈｅＦｌａｇ列に“ＦＡＬＳＥ”を設定する。
【００５９】
図９は、列挙プランの例を示す説明図である。図９に例示する表とＤＡＧがそれぞれ対応し、表のｃａｃｈｅＦｌａｇ列に“ＴＲＵＥ”が設定されたＤＮＦラベル、および、ＤＡＧの黒塗りのノードがキャッシュ対象として特定されたことを示す。
【００６０】
なお、上述するように、本実施形態では、列挙プラン生成部１１が、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数の差が最小になるように、論理式構造を２分割する。言い換えると、列挙プラン生成部１１が、ノードの親子関係を作る際に、各論理式構造（ＤＮＦ構造）を均等に分割する。そのため、メモリコストを下げることが可能になる。
【００６１】
例えば、長さ４のＤＮＦが存在する場合、列挙プラン生成部１１は、長さ３のＤＮＦと長さ１のＤＮＦに分割するのではなく、長さ２の２つのＤＮＦに分割する。長さ３のＤＮＦと長さ１のＤＮＦに分割すると、長さ３のＤＮＦをメモリに保持するサイズは、３乗のオーダになってしまう。一方、長さ２のＤＮＦをメモリに保持するサイズは、２乗のオーダで済むことになる。
【００６２】
ＤＮＦ探索部１２は、列挙プラン生成部１１により特定されたＤＮＦラベルの順序で、そのＤＮＦラベルに応じて各属性を組み合わせた新たな属性を生成する。また、属性を生成する対象のＤＮＦラベルが、列挙プラン生成部１１により特定されたキャッシュ対象である場合、ＤＮＦ探索部１２は、生成した属性を中間データ記憶部１３に登録する。なお、ＤＮＦ探索部１２は、１番のノード（すなわち、オリジナルのノード）を最初に中間データ記憶部１３に登録する。
【００６３】
具体的には、ＤＮＦ探索部１２は、親のＤＮＦラベルについて生成された属性が中間データ記憶部１３にキャッシュされている場合には、その属性を利用して、新たな属性を生成する。本実施形態では、列挙プラン生成部１１がキャッシュ対象として、再利用性が高い論理式構造（ＤＮＦラベル）を選択する。そのため、計算量を削減することが可能になる。
【００６４】
ＤＮＦ探索部１２は、各ＤＮＦラベルに対応する新たな属性を生成するたびに、生成した属性を逐次的属性評価部１４に通知する。
【００６５】
中間データ記憶部１３は、ＤＮＦ探索部１２により生成される新たな属性を記憶する。具体的には、中間データ記憶部１３は、論理式構造（ＤＮＦラベル）ごとに、ＤＮＦのリストとベクトルとを対応付けて記憶する。中間データ記憶部１３は、例えば、磁気ディスク等により実現される。
【００６６】
図１０は、中間データ記憶部１３が記憶するデータの例を示す説明図である。図１０に例示するＤＮＦ列内の各数字は、属性の種類（属性のＩＤ番号）を示し、構造ラベルは論理式構造を示す。なお、ＤＮＦ列に示す情報は、属性ＩＤ番号の順列を保持するための情報であるため、任意の符号化を行うことが可能である。また、ＤＮＦ探索部１２は、同じベクトルを別の記号に置換するなど、任意の圧縮を行ったベクトルを中間データ記憶部１３に記憶してもよい。
【００６７】
逐次的属性評価部１４は、ＤＮＦ探索部１２により生成される属性について評価を行う。逐次的属性評価部１４は、例えば、非特許文献４に記載された方法を用いて、属性を評価してもよい。ただし、属性を評価する方法は、非特許文献４に記載された方法に限定されず、逐次的属性評価部１４は、任意の方法を用いて属性を評価すればよい。
【００６８】
本実施形態の逐次的属性評価部１４は、ＤＮＦ探索部１２が生成するたびに通知する新たな属性を逐次受け取り、受け取った属性の評価を行う。このように、逐次評価を行うことで、新たに生成される属性を保持するためのコストを削減できる。
【００６９】
そして、逐次的属性評価部１４は、評価結果を出力データ記憶部１５に記憶させる。出力データ記憶部１５は、評価結果を記憶する記憶装置である。逐次的属性評価部１４は、例えば、ＨＳＩＣ（Hilbert-Schmidt Independence Criterion）や、ピアソン相関を用いて算出される任意のスコアをもとに、上位（例えば、１００個）の属性を選択し、選択した属性を出力データ記憶部１５に記憶させてもよい。
【００７０】
なお、本実施形態では、評価結果を出力データ記憶部１５に記憶させる場合を例示しているが、逐次的属性評価部１４は、通信回線を介して他の装置（図示せず）に評価結果を送信してもよい。
【００７１】
列挙プラン生成部１１と、ＤＮＦ探索部１２と、逐次的属性評価部１４とは、プログラム（属性列挙プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、属性列挙システム内の記憶部（図示せず）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、列挙プラン生成部１１、ＤＮＦ探索部１２および逐次的属性評価部１４として動作してもよい。
【００７２】
また、列挙プラン生成部１１と、ＤＮＦ探索部１２と、逐次的属性評価部１４とは、それぞれが専用のハードウェアで実現されていてもよい。具体的には、本実施形態の属性列挙システムは、２つ以上の物理的に分離した装置が有線または無線で接続されることにより実現されていてもよく、１つの装置で実現されていてもよい。
【００７３】
以上のように、本実施形態では、列挙プラン生成部１１が、学習データの属性とＭａｘＬｅｎとから、属性の組合せを表す論理式表現の組み合わせ方を表現したＤＮＦラベルの集合を生成する。また、列挙プラン生成部１１が、生成された各ＤＮＦラベルに含まれる論理式表現を２分割した部分ＤＮＦラベルを生成して分割元のＤＮＦラベルに対応付けた列挙プランを生成する。そして、ＤＮＦ探索部１２が、生成された部分ＤＮＦラベルに応じて各属性を組み合わせた新たな属性を生成する。このとき、列挙プラン生成部１１は、各ＤＮＦラベルから生成される２つの部分ＤＮＦラベルに含まれる属性の数が均等になるように、ＤＮＦラベルを２分割する。
【００７４】
このようにして分割されたＤＮＦラベルを用いることで、属性の網羅性を担保できるとともに、分割されたＤＮＦラベルに応じて作成される属性のサイズを小さくしながら、高速に新たな属性を列挙することができる。
【００７５】
また、一方で、本実施形態では、列挙プラン生成部１１が、生成されたＤＮＦラベルの一部を表現する部分ＤＮＦラベルとの関係をグラフ構造で表現した列挙プランを生成する。このとき、列挙プラン生成部１１は、ＤＮＦ探索部１２によって生成される新たな属性を記憶するために必要な空間サイズを小さくしつつ、ＤＮＦラベルの一部をより多く表現可能な（すなわち、再利用性が高い）部分ＤＮＦラベルを列挙プランの中から選択する。
【００７６】
すなわち、ＤＮＦラベルごとに生成時の部品となる関係（親子関係）をグラフ構造で特定し、キャッシュするためのメモリコストと、再利用するための計算コストの観点でノードの部分集合を選択する。そのため、計算コストを低減させて属性を高速に列挙しつつ、属性を記憶するためのメモリの消費を抑えながら、新たな属性を網羅的に列挙できる。
【００７７】
言い換えると、本実施形態では、列挙プラン生成部１１が、最初にＭａｘＬｅｎ以下のＤＮＦの組合せ方法を自動決定し、メモリ量と計算量の観点でバランスを取った列挙プランを生成する。そのため、属性の網羅性を担保しつつ、メモリの消費を抑えて高速に新たな属性を列挙することができる。
【００７８】
例えば、図９に例示する列挙プランが特定された場合、ＤＮＦラベル［１］，［２］，［１，１］に対応する新たな属性、すなわち、２乗オーダの属性をキャッシュすればよい。特に、ＤＮＦラベル［４］の属性を生成する際、本実施形態では、ＤＮＦラベル［３］，［１］に対応する属性ではなく、ＤＮＦラベル［２］に対応する属性を利用できるため、メモリの消費を抑えて高速に新たな属性を列挙することができる。
【００７９】
さらに、本実施形態では、再利用性の高いＤＮＦをキャッシュするため、キャッシュの効率を高めることができる。例えば、図９に例示する列挙プランの場合、ＤＮＦラベル［１，１，１，１］，［１，１，１］，［２，１，１］の属性を評価する際、新たにＤＮＦラベル［１，１］に対応する属性を生成する必要がない。
【実施例】
【００８０】
以下、具体的な実施例により本発明を説明するが、本発明の範囲は以下に説明する内容に限定されない。図１１は、ＤＮＦ探索部１２が属性を作成し、キャッシュ対象の属性を中間データ記憶部１３に記憶させる処理の具体例を示す説明図である。【００８１】
図１１（ａ）は、ＤＮＦラベルごとに属性を生成する処理の例を示す。図１１（ａ）示す例では、ＤＮＦ探索部１２が図９に例示する表の上の行から順に属性を生成し、属性を生成するたびに、生成した属性を逐次的属性評価部１４に出力する。また、生成した属性がキャッシュ対象の場合、ＤＮＦ探索部１２は、生成した属性を中間データ記憶部１３に記憶させる。【００８２】
図１１（ｂ）は、属性の組合せを出力する処理の例を示す。図１１（ｂ）に示す例では、ＤＮＦラベルに対応する属性が中間データ記憶部１３に記憶されている（キャッシュされている）場合、ＤＮＦ探索部１２は、その属性を出力する。一方、ＤＮＦラベルに対応する属性が中間データ記憶部１３に記憶されていない（キャッシュされていない）場合、属性の組合せを生成する。この場合、ＤＮＦ探索部１２は、親のＤＮＦも生成する。【００８３】
さらに、図１１（ｂ）に例示する処理において、ラベルがＡＮＤ項のみの場合、ＤＮＦ探索部１２は、ＡＮＤの組合せを生成し、ラベルがＡＮＤ項のみでない場合、ＤＮＦ探索部１２は、ＯＲの組合せを生成する。【００８４】
次に、本発明の概要を説明する。図１２は、本発明による属性列挙システムの概要を示すブロック図である。本発明による属性列挙システムは、学習データ（例えば、２値行列Ｘ）の属性と、その属性の組合せ最大数（例えば、ＭａｘＬｅｎ）とから、属性の組合せを表す論理式表現（例えば、ＤＮＦ、ＣＮＦ）の組み合わせ方を表現した論理式構造（例えば、ＤＮＦラベル）の集合を生成し、生成された各論理式構造に含まれる論理式表現を２分割した部分論理式構造（例えば、部分ＤＮＦラベル）を生成して分割元の論理式構造に対応付けた列挙プラン（例えば、図９に例示する表形式またはグラフ構造による列挙プラン）を生成する列挙プラン生成部８１（例えば、列挙プラン生成部１１）と、生成された部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成部８２（例えば、ＤＮＦ探索部１２）とを備えている。【００８５】
列挙プラン生成部８１は、各論理式構造から生成される２つの部分論理式構造に含まれる属性の数が均等になるように（例えば、差が最小になるように）、論理式構造を２分割する。【００８６】
そのような構成により、属性の網羅性を担保しつつ、メモリの消費を抑えて高速に新たな属性を列挙することができる。【００８７】
また、列挙プラン生成部８１は、生成された論理式構造の一部を表現する部分論理式構造との関係をグラフ構造（例えば、ＤＡＧ）で表現した列挙プランを生成し、属性生成部８２によって生成される新たな属性を記憶するために必要な空間サイズ（例えば、メモリコスト）を小さくしつつ、論理式構造の一部をより多く表現可能な（例えば、再利用性が高い）部分論理式構造を列挙プランの中から選択してもよい。【００８８】
また、属性生成部８２は、列挙プラン生成部８１によって選択された部分論理式構造に応じて生成される新たな属性を記憶装置（例えば、中間データ記憶部１３）に記憶させ、記憶装置に記憶された属性をもとに、他の論理式構造に応じた新たな属性を生成してもよい。【００８９】
このようにして記憶装置に記憶される新たな属性は、適切に２分割された論理式構造に基づいて生成されるものであり、空間サイズをより小さくすることが可能なため、メモリの消費を抑えることができる。また、このようにして選択された論理式構造は、より再利用性が高いものであるため、高速に新たな属性を列挙することができる。【００９０】
また、属性列挙システムは、属性生成部８２により生成される属性の評価を行う属性評価部（例えば、逐次的属性評価部１４）を備えていてもよい。このとき、属性生成部８２は、各部分論理式構造に応じて新たな属性を生成するごとに、生成した属性を属性評価部に送信してもよい。【００９１】
このようにすることで、評価対象となる新たな属性を保持するメモリ空間をより小さくすることが可能なため、メモリ効率を高くすることが可能になる。【００９２】
また、列挙プラン生成部８１は、属性の組合せを表す論理式表現に加法標準形（ＤＮＦ）または連言標準形（ＣＮＦ）を用いてもよい。加法標準形または連言標準形は、任意の論理式を等価変換可能なため、網羅性を担保できる。【００９３】
図１３は、本発明による属性列挙システムの他の概要を示すブロック図である。本発明による属性列挙システムは、学習データ（例えば、２値行列Ｘ）の属性と、その属性の組合せ最大数（例えば、ＭａｘＬｅｎ）とから、属性の組合せを表す論理式表現（例えば、ＤＮＦ、ＣＮＦ）の組み合わせ方を表現した論理式構造（例えば、ＤＮＦラベル）の集合を生成し、生成された論理式構造の一部を表現する部分論理式構造（例えば、部分ＤＮＦラベル）との関係をグラフ構造（例えば、ＤＡＧ）で表現した列挙プランを生成する列挙プラン生成部９１（例えば、列挙プラン生成部１１）と、部分論理式構造に応じて各属性を組み合わせた新たな属性を生成する属性生成部９２（例えば、ＤＮＦ探索部１２）とを備えている。【００９４】
列挙プラン生成部９１は、属性生成部９２によって生成される新たな属性を記憶するために必要な空間サイズ（例えば、メモリコスト）を小さくしつつ、論理式構造の一部をより多く表現可能な（例えば、再利用性が高い）部分論理式構造を列挙プランの中から選択する。【００９５】
そのような構成によっても、属性の網羅性を担保しつつ、メモリの消費を抑えて高速に新たな属性を列挙することができる。【００９６】
また、属性生成部９２は、列挙プラン生成部９１により選択された部分論理式構造に応じて生成される新たな属性を記憶装置（例えば、中間データ記憶部１３）に記憶させ、記憶装置に記憶された属性をもとに、他の論理式構造に応じた新たな属性を生成してもよい。【００９７】
以上、実施形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【００９８】
この出願は、２０１４年６月３日に出願された日本特許出願２０１４−１１４９２３を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００９９】
１１  列挙プラン生成部
１２  ＤＮＦ探索部
１３  中間データ記憶部
１４  逐次的属性評価部
１５  出力データ記憶部
【図１】
0006500896.tif 000003
【図２】
0006500896.tif 000004
【図３】
0006500896.tif 000005
【図４】
0006500896.tif 000006
【図５】
0006500896.tif 000007
【図６】
0006500896.tif 000008
【図７】
0006500896.tif 000009
【図８】
0006500896.tif 000010
【図９】
0006500896.tif 000011
【図１０】
0006500896.tif 000012
【図１１】
0006500896.tif 000013
【図１２】
0006500896.tif 000014
【図１３】
0006500896.tif 000015