(57)【特許請求の範囲】
【請求項１】
満足するテストおよび所属クラスを表す情報を含む事例の集合が登録されたデータベースから、知識発見装置が、知識を発見して提示する知識発見方法であって、
前記知識発見装置のルール生成部が、前記データベースから、事例の集合に含まれるテストおよび所属クラスを抽出して、ｍ個のテストＡ１、Ａ２、…、Ａｍの組み合わせである条件部Ｂ（＝Ａ１＆Ａ２＆…＆Ａｍ）と、結論となるクラスＣとを含むデータで表されるルールを生成するステップと、
前記知識発見装置のルール評価部が、
前記ルールの条件部Ｂを満足する事例のうち前記ルールの結論となるクラスＣに属する事例の割合である前記ルールの精度Ｐ（Ｃ｜Ｂ）、
前記ルールの条件部の一部のテストＡｉを満足する事例のうちクラスＣに属する事例の割合Ｐ（Ｃ｜Ａｉ）、
前記ルールの条件部Ｂから前記一部のテストＡｉを取り除いたテストＢｉ（＝Ａ１＆Ａ２＆…＆Ａｉ−１＆Ａｉ＋１＆…＆Ａｍ）を満足する事例のうちクラスＣに属する事例の割合Ｐ（Ｃ｜Ｂｉ）、並びに
前記事例の集合全体におけるクラスＣに属する事例の割合Ｐ（Ｃ）を計算し、
すべてのｉ（１≦ｉ≦ｍ）について下記条件１〜条件３の全てを満足するルールを意外性が高いと判断するステップと、
（条件１）
Ｐ（Ｃ｜Ｂ）≧Ｐ（Ｃ｜Ａｉ）＋δ１
（条件２）
Ｐ（Ｃ｜Ｂ）≧Ｐ（Ｃ｜Ｂｉ）＋δ２
（条件３）
Ｐ（Ｃ｜Ｂ）≧Ｐ（Ｃ｜Ａｉ）×Ｐ（Ｃ｜Ｂｉ）÷Ｐ（Ｃ）＋δ３
（δ１、δ２、δ３は、それぞれ０以上１以下の範囲の値をとるパラメータ）
前記知識発見装置のデータ出力部が、前記意外性が高いと評価されたルールのみを提示するステップとを含む、知識発見方法。
【請求項２】
前記知識発見装置が、前記ルールの条件部を満足する事例の数、あるいは、前記ルールの条件部を満足する事例数の前記事例の集合における割合である支持度を算出するステップをさらに実行し、
前記提示するステップで、前記意外性が高く、かつ前記支持度が所定のレベルよりも高いと評価されたルールのみを提示する請求項１に記載の知識発見方法。
【請求項３】
前記データベースから、事例の集合に含まれるテストおよび所属クラスを抽出して、前記ルールを生成するステップにおいて、前記知識発見装置が、前記複数のテストをノードとする探索木を用いた深さ優先探索を行って前記条件部にテストを順次追加することにより、前記ルールを生成する請求項１に記載の知識発見方法。
【請求項４】
前記データベースから、事例の集合に含まれるテストおよび所属クラスを抽出して、前記ルールを生成するステップにおいて、前記知識発見装置が、前記条件部にテストを追加して生成されるルールと、元のルールとの間の、前記事例の集合における所属クラス分布の変化度合いを示す影響度を算出し、前記影響度が最も高いテストを選択して前記条件部に追加することにより、前記ルールの条件部を生成する請求項１に記載の知識発見方法。
【請求項５】
前記データベースから、事例の集合に含まれるテストおよび所属クラスを抽出して、前記ルールを生成するステップは、
前記知識発見装置が、前記条件部にテストを追加して生成されるルールと、元のルールとの間の、前記事例の集合における所属クラス分布の変化度合いを示す影響度を算出する第１のステップと、
前記条件部に追加可能なテストの中から、バックトラックの回数が上限値を超えない範囲で選択したテストを前記条件部に前記影響度の高い順に順次追加することにより、前記ルールの条件部を生成する第２のステップと、
前記上限値を増加させて前記第２のステップに戻る第３のステップとを前記知識発見装置が実行することを特徴とする請求項１に記載の知識発見方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大規模データベースからｉｆ−ｔｈｅｎルールを抽出して提示する知識発見方法および知識発見装置に関する。
【０００２】
【従来の技術】
従来から、大規模データベースからｉｆ−ｔｈｅｎルールを発見するいわゆるデータマイニングに関し、様々な手法が提案されている。このような手法としては、例えば、Ａｇｒａｗａｌ等によるａｐｒｉｏｒｉが有名である。
【０００３】
この従来の手法では、支持度および精度という２つの尺度を用いる。なお、上記の支持度とは、すべての事例中で、ユーザが与えたルールの条件部を満足する事例の数として定義できる。あるいは、すべての事例数に対する、ユーザが与えたルールの条件部を満足する事例数の割合として定義することもできる。また、精度とは、ユーザが与えたルールの条件部を満足する事例中の、ルールの結論となるクラスに属する事例の割合として定義できる。上記従来の手法は、支持度の下限および精度の下限を設定し、これらの下限値を上回るルールをユーザに提示するようになっている。
【０００４】
【発明が解決しようとする課題】
しかし、上記従来の手法は、支持度および精度の下限の設定が難しいという問題を有する。例えば、支持度や精度の下限値をある程度大きい値に設定した場合に得られるルールは、ユーザにとって自明なルールであることが多い。知識発見の観点からは、ユーザが知らないであろう意外性の高いルールを得ることに意義があるので、自明なルールはあまり有用なものではない。
【０００５】
その逆に、支持度や精度の下限値を小さい値に設定した場合は、ごく限られた事例にしか成り立たないルール等も含む大量のルールが得られることとなる。従って、それらの大量のルールの中から、ユーザにとって自明でない、意外性の高いルールだけをさらに選択する作業が必要となる。
【０００６】
本発明は、ユーザにとって自明でなく、興味深いと予想される知識のみを効率的に探索して出力する知識発見方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記の目的を達成するために、本発明にかかる知識発見方法は、複数のテストの連言からなる条件部と結論とを有する知識を事例集合から抽出するステップと、前記知識の条件部から一部のテストを取り除いた条件部を有する知識の精度と、前記一部のテストを条件部とする知識の精度とに基づいて、前記各知識の予測精度を算出するステップと、実際の精度と前記予測精度との差に基づいて前記知識の意外性を評価するステップと、前記意外性が所定のレベルより高いと評価された知識のみを提示するステップとを含むことを特徴とする。
【０００８】
この方法によれば、事例集合から抽出した知識の意外性が、この知識よりも単純な条件部を持つ２つの知識の精度、すなわち、前記知識の条件部から一部のテストを取り除いた条件部を有する知識の精度と、前記一部のテストを条件部とする知識の精度とに基づいて評価される。なお、知識の精度とは、知識の条件部を満足する事例の中の、前記知識の結論を満足する事例の割合として定義することができる。これにより、意外性が高いと思われる知識のみを選択して出力することができるので、ユーザにとって自明でないと予想される興味深い知識を提示することが可能な知識発見方法を提供できる。
【０００９】
上記の知識発見方法は、前記事例集合から抽出した知識の支持度を算出するステップをさらに含み、前記意外性が所定のレベルより高く、かつ前記支持度が所定のレベルよりも高いと評価された知識のみを提示することが好ましい。
【００１０】
この方法によれば、意外性および支持度が共に所定のレベルよりも高い知識が選択して提示される。なお、支持度とは、知識の条件部を満足する事例の数、あるいは、知識の条件部を満足する事例数の全事例数に対する割合、として定義することができる。これにより、汎用性が高く、しかも、ユーザにとって自明でないと予想される興味深い知識を提示することが可能となる。
【００１１】
上記の知識発見方法は、前記事例集合から前記知識を抽出するステップにおいて、前記複数のテストをノードとする探索木を用いた深さ優先探索を行って前記条件部にテストを順次追加することにより、前記知識の条件部を生成することが好ましい。
【００１２】
この方法によれば、条件部に含まれ得る複数のテストをノードとする深さ優先の木探索を行って条件部を生成することにより、あり得る知識のすべてを網羅的に生成することが可能となる。
【００１３】
上記の知識発見方法は、前記事例集合から前記知識を抽出するステップにおいて、前記条件部に追加可能なテストのそれぞれについて知識の精度に対する影響度を算出し、前記影響度が最も高いテストを選択して前記条件部に追加することにより、前記知識の条件部を生成することが好ましい。
【００１４】
この方法によれば、知識の精度に対する影響度が高いテストを優先的に追加することによって知識の条件部が生成される。知識の意外性は知識の精度に基づいて算出されるので、知識の意外性に対する影響度が高いテストを条件部に含む知識が、事例集合から優先的に抽出されることとなる。この結果、ユーザにとって自明でないと予想される興味深い知識を効率的に発見することが可能となる。
【００１５】
上記の知識発見方法において、前記事例集合から前記知識を抽出するステップが、前記条件部に含まれ得るテストのそれぞれについて知識の精度に対する影響度を算出する第１のステップと、前記条件部に追加可能なテストの中から、バックトラックの回数の上限値を超えない範囲で選択したテストを前記条件部に順次追加することにより、前記知識の条件部を生成する第２のステップと、前記上限値を増加させて前記第２のステップに戻る第３のステップとを含むことが好ましい。
【００１６】
なお、バックトラックの回数とは、知識の条件部に含まれるすべてのテストについて、各テストがこの条件部に追加されたときの、追加可能な全テスト中の前記各テストの影響度の順位の和をとったものから、この条件部に含まれるテストの数を引いた値として定義することができる。この方法によれば、最初にバックトラックの回数の上限値を小さく設定し、この上限値を徐々に増加させて第２のステップを繰り返すことにより、知識の精度に対する影響度が比較的高いテストの組み合わせを条件部に持つ知識が、事例集合から優先的に抽出されることとなる。この結果、ユーザにとって自明でないと予想される興味深い知識を効率的に発見することが可能となる。
【００１７】
【発明の実施の形態】
（実施の形態１）
以下、本発明の実施の一形態について、図面を参照しながら説明する。
【００１８】
本実施形態にかかる知識発見方法は、事例の集合が与えられたときに、これらの事例の集合から、ユーザにとって有用であると予想される、意外性のあるｉｆ−ｔｈｅｎルールを発見して提示する方法について説明する。
【００１９】
なお、事例の各々は、複数のテストの各々を満足するか否かと、所属クラスとによって表現される。また、発見されるｉｆ−ｔｈｅｎルールは、
ｉｆ  Ｂ  ｔｈｅｎ  Ｃ
の形式をなす。上式のＢを条件部と呼び、複数のテストの連言からなる。例えば、ｍ個のテストをＡ１〜Ａｍとすると、Ｂは、
Ｂ＝Ａ１＆Ａ２＆…＆Ａｍ
と表される。また、上式におけるＣを結論と呼び、所属クラスが入る。
【００２０】
本知識発見方法は、事例の集合から、可能なｉｆ−ｔｈｅｎルールを順次生成し、生成したルールの各々について意外性を評価し、意外性のレベルが高いルールのみを提示する。
【００２１】
ここで、ルールの意外性の算出方法について説明する。例えば、ｍ個のテストの連言を条件部とし、結論がクラスＣである以下のようなルールを考える。
【００２２】
ｉｆ  Ａ１＆Ａ２＆…＆Ａｍ  ｔｈｅｎ  Ｃ          （１）
なお、以下では、簡単のために、上記のルール（１）の条件部をＢ、条件部からテストＡｉ（１≦ｉ≦ｍ）を取り除いたものをＢｉと表すことにする。すなわち、
Ｂ＝Ａ１＆Ａ２＆…＆Ａｍ
Ｂｉ＝Ａ１＆…＆Ａｉ−１＆Ａｉ＋１＆…＆Ａｍ
である。
【００２３】
このとき、すべてのｉ（１≦ｉ≦ｍ）について、
（条件１）
Ｐ（Ｃ｜Ｂ）≧Ｐ（Ｃ｜Ａｉ）＋δ１
（条件２）
Ｐ（Ｃ｜Ｂ）≧Ｐ（Ｃ｜Ｂｉ）＋δ２
（条件３）
Ｐ（Ｃ｜Ｂ）≧Ｐ（Ｃ｜Ａｉ）×Ｐ（Ｃ｜Ｂｉ）÷Ｐ（Ｃ）＋δ３
の３つの条件のすべてが満たされるとき、ルール（１）を、ユーザに提示すべき、意外性の高いルールであるものと判断する。
【００２４】
なお、δ１、δ２、δ３は、それぞれ０以上１以下の範囲の値をとるパラメータである。また、Ｐ（Ｃ｜Ｂ）は、テストの連言Ｂを満足する事例の中でクラスＣに属する事例の割合であり、Ｐ（Ｃ｜Ａｉ）は、テストの連言Ａｉを満足する事例の中でクラスＣに属する事例の割合であり、Ｐ（Ｃ｜Ｂｉ）は、テストの連言Ｂｉを満足する事例の中でクラスＣに属する事例の割合である。また、Ｐ（Ｃ）は、事例全体の中でクラスＣに属する事例の割合である。
【００２５】
すなわち、条件１は、ルール（１）の条件部に含まれる各テストを条件とするルール、
ｉｆ  Ａｉ  ｔｈｅｎ  Ｃ                        （２）
の精度と比較して、ルール（１）の精度の方がある程度（δ１）以上高くなければならないことを要求する。
【００２６】
また、条件２は、ルール（１）の条件部からテストの一部（Ａｉ）を取り除いて得られるより単純なルール、
ｉｆ  Ｂｉ  ｔｈｅｎ  Ｃ                        （３）
の精度と比較して、ルール（１）の精度の方がある程度（δ２）以上高くなければならないことを要求する。
【００２７】
また、条件３は、事例集合全体およびクラスＣに属する事例集合の中でＡｉとＢｉとが独立であると仮定したときに、ルール（２）の精度およびルール（３）の精度から条件付き確率によって予測される精度よりも、ルール（１）の精度の方がある程度（δ３）以上高くなければならないことを要求する。
【００２８】
以下、説明を分かりやすくするために、キノコに関するデータが登録されたデータベースからルールを発見する場合を例に挙げて具体的に説明する。ここで知識発見の対象となるデータベースには、種々のキノコについて、形や色、生えている場所、食べられるか否か等についてのデータが登録されている。すなわち、このデータベースに登録されているデータは、データ属性として、stalk-shape（キノコの柄の形状）、ring-shape（キノコの傘の形状）、habitat（キノコが生えている場所）、cap-color（傘の色）、gill-spacing（ひだの間隔）、class(食用か否か)等を持つ。
【００２９】
このようなデータベースからルールを発見する場合、登録されているデータの各々が１つの事例に相当する。また、ルールの条件部の各テストは、データの属性とその属性値との組み合わせに相当する。
【００３０】
以下では、キノコの形状等の特徴点と、キノコが食用(edible)かそれとも毒キノコ(poisonus)かとの間に成り立つｉｆ−ｔｈｅｎルールを発見する場合について説明する。
【００３１】
例えば、上記のデータベースから下記のルール、
if stalk-shape=t & ring-type=p & habitat=g then class=poisonus   (a)
を抽出し、このルールがユーザに提示すべき意外性に高いルールであるか否かを、上述した条件１〜条件３に基づいて判断する場合について説明する。なお、以下では、条件１〜条件３について、δ１＝δ２＝δ３＝０．４と設定されているものとする。
【００３２】
上記のルール（ａ）は、前述のルール（１）と対応させると、
Ｃ：poisonus
Ｂ：stalk-shape=t & ring-type=p & habitat=g
Ａ１：stalk-shape=t
Ａ２：ring-type=p
Ａ３：habitat=g
Ｂ１：ring-type=p & habitat=g
Ｂ２：stalk-shape=t & habitat=g
Ｂ３：stalk-shape=t & ring-type=p
となる。なお、このルール（ａ）の精度は、１００％であるものとする。すなわち、
Ｐ（Ｃ｜Ｂ）＝１
である。
【００３３】
まず、ルール（ａ）が条件１を満たすか否かを調べる。前提として、条件部Ｂに含まれる個々のテストＡ１〜Ａ３を条件部とするルールおよびその精度は、次のとおりであるものとする。
【００３４】
if stalk-shape=t then class=poisonus : 44%
if ring-type=p then class=poisonus : 21%
if habitat=g then class=poisonus : 34%
すなわち、
Ｐ（Ｃ｜Ａ１）＝０．４４
Ｐ（Ｃ｜Ａ２）＝０．２１
Ｐ（Ｃ｜Ａ３）＝０．３４
である。
【００３５】
この場合、条件１の右辺は、ｉ＝１〜３のそれぞれの場合について、次のようになる。
【００３６】
ｉ＝１：  Ｐ（Ｃ｜Ａ１）＋δ１＝０．４４＋０．４＝０．８４
ｉ＝２：  Ｐ（Ｃ｜Ａ２）＋δ１＝０．２１＋０．４＝０．６１
ｉ＝３：  Ｐ（Ｃ｜Ａ３）＋δ１＝０．３４＋０．４＝０．７４
一方、条件１の左辺であるＰ（Ｃ｜Ｂ）の値は前述のとおり１であるので、ルール（ａ）は、ｉ＝１〜３のすべての場合について、条件１を満たすことが分かる。
【００３７】
次に、ルール（ａ）が条件２を満たすか否かを調べる。前提として、個々のテストＡ１〜Ａ３を条件部Ｂから取り除くことによって得られるルールと、その精度とが、以下のとおりであるものとする。
【００３８】
if ring-type=p & habitat=g then class=poisonus : 33%
if stalk-shape=t & habitat=g then class=poisonus : 16%
if stalk-shape=t & ring-type=p then class=poisonus : 14%
すなわち、
Ｐ（Ｃ｜Ｂ１）＝０．３３
Ｐ（Ｃ｜Ｂ２）＝０．１６
Ｐ（Ｃ｜Ｂ３）＝０．１４
である。
【００３９】
この場合、条件２の右辺は、ｉ＝１〜３のそれぞれの場合について、次のようになる。
【００４０】
ｉ＝１：  Ｐ（Ｃ｜Ｂ１）＋δ２＝０．３３＋０．４＝０．７４
ｉ＝２：  Ｐ（Ｃ｜Ｂ２）＋δ２＝０．１６＋０．４＝０．５６
ｉ＝３：  Ｐ（Ｃ｜Ｂ３）＋δ２＝０．１４＋０．４＝０．５４
一方、条件２の左辺であるＰ（Ｃ｜Ｂ）の値は前述のとおり１であるので、ルール（ａ）は、ｉ＝１〜３のすべての場合について、条件２を満たすことが分かる。
【００４１】
次に、ルール（ａ）が条件３を満たすか否かを調べる。ここで、前提として、このデータベースに登録されているキノコの半分が毒キノコであるとする。すなわち、
Ｐ（Ｃ）＝０．５
であるとする。
【００４２】
このとき、条件３の右辺の値は、ｉ＝１〜３のそれぞれについて、
ｉ＝１：  Ｐ（Ｃ｜Ａ１）×Ｐ（Ｃ｜Ｂ１）÷Ｐ（Ｃ）＋δ３＝０．６９
ｉ＝２：  Ｐ（Ｃ｜Ａ２）×Ｐ（Ｃ｜Ｂ２）÷Ｐ（Ｃ）＋δ３＝０．４７
ｉ＝３：  Ｐ（Ｃ｜Ａ３）×Ｐ（Ｃ｜Ｂ３）÷Ｐ（Ｃ）＋δ３＝０．６０
となる。
【００４３】
一方、条件３の左辺であるＰ（Ｃ｜Ｂ）の値は前述のとおり１であるので、ルール（ａ）は、ｉ＝１〜３のすべての場合について、条件３も満たすことが分かる。
【００４４】
以上のように、ルール（ａ）は、条件１ないし条件３のすべてを満たすので、意外性の高いルールであると判定される。
【００４５】
また、同じデータベースから得られる下記のルール（ｂ）について、同様に条件１ないし条件３に基づいて意外性の判定を行うものとする。
【００４６】
if cap-color=w & gill-spacing=c & stalk-shape=t then class=poisonus
前提として、このルール（ｂ）の条件部に含まれる個々のテストを条件部とするルールおよびその精度は、次のとおりであるものとする。
【００４７】
if cap-color=w then class=poisonus : 31%
if gill-spacing=c then class=poisonus : 56%
if stalk-shape=t then class=poisonus : 44%
また、個々のテストを条件部から取り除くことによって得られるルールと、その精度とが、以下のとおりであるものとする。
【００４８】
if gill-spacing=c & stalk-shape=t then class=poisonus : 54%
if cap-color=w & stalk-shape=t then class=poisonus : 24%
if cap-color=w & gill-spacing=c then class=poisonus : 51%
また、ルール（ｂ）の精度も１００％、すなわち、
Ｐ（Ｃ｜Ｂ）＝１
であり、
δ１＝δ２＝δ３＝０．４
であるとすると、このルール（ｂ）について、条件１の右辺は、ｉ＝１〜３のそれぞれの場合、次のようになる。
【００４９】
ｉ＝１：  Ｐ（Ｃ｜Ａ１）＋δ１＝０．３１＋０．４＝０．７１
ｉ＝２：  Ｐ（Ｃ｜Ａ２）＋δ１＝０．５６＋０．４＝０．９６
ｉ＝３：  Ｐ（Ｃ｜Ａ３）＋δ１＝０．４４＋０．４＝０．８４
一方、条件１の左辺であるＰ（Ｃ｜Ｂ）の値は前述のとおり１であるので、ルール（ｂ）は、ｉ＝１〜３のすべての場合について、条件１を満たす。
【００５０】
また、このルール（ｂ）について、条件２の右辺は、ｉ＝１〜３のそれぞれの場合、次のようになる。
【００５１】
ｉ＝１：  Ｐ（Ｃ｜Ｂ１）＋δ２＝０．５４＋０．４＝０．９４
ｉ＝２：  Ｐ（Ｃ｜Ｂ２）＋δ２＝０．２４＋０．４＝０．６４
ｉ＝３：  Ｐ（Ｃ｜Ｂ３）＋δ２＝０．５１＋０．４＝０．９１
一方、条件２の左辺であるＰ（Ｃ｜Ｂ）の値は前述のとおり１であるので、ルール（ｂ）は、ｉ＝１〜３のすべての場合について、条件２を満たす。
【００５２】
さらに、このルール（ｂ）について、条件３の右辺は、ｉ＝１〜３のそれぞれの場合、次のようになる。
【００５３】
ｉ＝１：  Ｐ（Ｃ｜Ａ１）×Ｐ（Ｃ｜Ｂ１）÷Ｐ（Ｃ）＋δ３＝０．７３
ｉ＝２：  Ｐ（Ｃ｜Ａ２）×Ｐ（Ｃ｜Ｂ２）÷Ｐ（Ｃ）＋δ３＝０．６７
ｉ＝３：  Ｐ（Ｃ｜Ａ３）×Ｐ（Ｃ｜Ｂ３）÷Ｐ（Ｃ）＋δ３＝０．８５
一方、条件３の左辺であるＰ（Ｃ｜Ｂ）の値は前述のとおり１であるので、ルール（ｂ）は、ｉ＝１〜３のすべての場合について、条件３も満たす。
【００５４】
以上のように、ルール（ｂ）は、条件１〜条件３のすべてを満たすので、意外性の高いルールと判断される。
【００５５】
なお、各ルールの意外性の高さを、条件１〜条件３をどれだけの余裕を持ってクリアしているかによって表すことができる。すなわち、条件１〜条件３の右辺の値の最大値と、左辺の値であるルールの精度との差によって、ルールの意外性の高さをはかることができる。
【００５６】
上記のルール（ａ）の場合は、意外性の高さは、
1-max(0.84,0.61,0.74,0.78,0.56,0.54,0.69,0.47,0.60)=0.16
となる。また、ルール（ｂ）の場合は、意外性の高さは、
1-max(0.71,0.96,0.84,0.94,0.64,0.91,0.73,0.67,0.85)=0.04
となる。すなわち、ルール（ｂ）は意外性は高いが、ルール（ａ）ほど意外性が高くないということができる。発見したルールを出力する際に、このようにして求めた意外性の高さに基づいて、ルールをランク付けして提示してもよい。
【００５７】
また、同じデータベースから得られる下記のルール（ｃ）を考える。なお、このルール（ｃ）の精度は１００％であるとする。
【００５８】
if stalk-shape=e & ring-type=c & habitat=g then class=poisonus  (c)
また、このルール（ｃ）の条件部から最後のテスト、すなわち、habitat=gを取り除いた条件部をもつルール、
if stalk-shape=e & ring-type=c then class=poisonus
の精度が７３％であったとすると、条件２の右辺の値が、ｉ＝３の場合、
Ｐ（Ｃ｜Ｂ３）＋δ２＝０．７３＋０．４＝１．１３
となる。一方、左辺の値すなわちルール（ｃ）の精度は前述したように１であるから、ルール（ｃ）は条件２を満足しない。すなわち、ルール（ｃ）は、意外性が低いルールであると判断され、出力されない。
【００５９】
次に、本知識発見方法に基づいてデータベースから知識（ルール）を発見して出力する知識発見装置の概略構成の一例を、図１に示す。図１に示すように、本実施形態の知識発見装置は、データ入力部１１と、ルール生成部１２と、ルール評価部１３と、データ出力部１４とを備えている。
【００６０】
データ入力部１１は、知識を抽出する対象となるデータベースからデータ（事例）を入力する。ルール生成部１２は、入力したデータに基づいて、成り立ち得るルールを順次生成する。ルール評価部１３は、ルール生成部１２で生成されたルールの各々について、上述したような意外性の算出を行うことにより、ユーザに提示すべきか否かの評価を行う。データ出力部１４は、ルール評価部１３によってユーザに提示すべきであると評価されたルールの集合を、発見した知識として出力する。
【００６１】
ここで、図２のフローチャートに基づいて、本知識発見装置の動作について説明する。
【００６２】
まず、ルールの集合Ｒを空集合として処理を開始する（図２に示すステップＳ１）。なお、これに先立って、ルール生成部１２からルール評価部１３へ、評価すべきルール“ｉｆ  Ｂ  ｔｈｅｎ  Ｃ”が１つ与えられている。次に、この処理の終了条件が満足されているか否かをチェックする（ステップＳ２）。なお、終了条件の例については後述する。処理を続行する場合には（ステップＳ２にてｎｏの場合）、すべての事例の中から、ルール生成部１２から与えられたルールの条件部Ｂを満足する事例を探索し、それらの事例の集合を集合ＩＢとする（ステップＳ３）。そして、この集合ＩＢの要素数が支持度の最小値以上であるか否かを判断する（ステップＳ４）。
【００６３】
集合ＩＢの要素数が最小値よりも小さければ（ステップＳ４にてｙｅｓ）、ステップＳ７へ進み、ルール生成部１２から、条件部Ｂまたは結論Ｃを変更した別のルールを受け取る。
【００６４】
一方、集合ＩＢの要素数が最小値以上であれば（ステップＳ４にてｎｏ）、ルール生成部１２から与えられたルールが、最小精度以上の精度を持つか否かと、このルールが意外性に関する上記の条件１〜条件３のすべてを満足するか否かとを判定する（ステップＳ５）。
【００６５】
ステップＳ５の判定結果がｙｅｓであれば、このルールを集合Ｒに追加し（ステップＳ６）、ステップＳ７へ進み、条件部Ｂまたは結論Ｃを変更した別のルールをルール生成部１２から受け取り、ステップＳ２へ戻る。
【００６６】
なお、ステップＳ２において終了条件が満足されていれば、データ出力部１４へルール集合Ｒが渡される。そして、データ出力部１４が、ルール集合Ｒに含まれるルールをユーザに提示することにより（ステップＳ８）、処理が終了する。
【００６７】
なお、ステップＳ２の終了条件としては、種々の条件を設定することが可能である。例えば、処理時間が所定の時間を超えたとき、意外性の判定を行ったルールの数が所定値を超えたとき、あるいは、ルール集合Ｒの要素数が所定値に達したとき等に、終了条件が満たされたものとすることができるが、終了条件はこれらに限られない。
【００６８】
以上に説明したように、本実施形態の知識発見方法および知識発見装置は、複数の事例から成り立ち得るｉｆ−ｔｈｅｎルールを抽出し、抽出した各ルールに対して条件１〜条件３に基づいた意外性の評価を行い、意外性が高いと判断されたルールのみを選択してユーザに提示するようになっている。これにより、ユーザにとって既知の自明なルールや、ごく限られた事例にしか成り立たないルールを含む大量のルールを出力することがなく、ユーザにとって有用であると予想される興味深いルールのみを選択的に提示することができる。
【００６９】
（実施の形態２）
以下に、本発明の他の実施形態について図面を参照しながら説明する。なお、前記した実施の形態１で説明した構成と同様の構成については、実施の形態１で用いた参照符号と同一の符号を付し、詳細な説明を省略する。
【００７０】
本実施形態では、事例からのルールの生成を網羅的かつ効率的に行うために、深さ優先の木探索を用いて複数のテストの可能な組み合わせを生成することにより、ｉｆ−ｔｈｅｎルールの条件部を生成する。このために、本実施形態にかかる知識発見装置は、図３に示すように、実施の形態１において図１に示した構成に、木探索制御部１５が追加された構成になっている。
【００７１】
木探索制御部１５が深さ優先の木探索を行うことにより、例えばＡ１〜Ａ４の４個のテストが存在する場合、ルールの条件部Ｂは、図４に示すような順序で生成されることとなる。
【００７２】
ここで、本実施形態における知識発見処理の手順について、図５のフローチャートを参照しながら説明する。ここでは、本知識発見処理を、ルールの条件部Ｂと集合Ｆとを与えられて、以下の処理を行う手続き（ＲｕｌｅＤｉｓｃｏｖｅｒｙ２）として表現した。
【００７３】
最初は、ルールの条件部Ｂとして恒真（ｔｒｕｅ）、集合Ｆとして空集合が与えられ、処理を開始する。なお、集合Ｆは、使用できないテストの集合であり、例えば、「Ａ１＆Ａ２」と「Ａ２＆Ａ１」のように、テストの順序が異なるが論理的に同じ条件部を持つルールを重複して生成することを避けるために用いられる。
【００７４】
まず、ルールの集合Ｒを空集合とすると共に、すべての事例の中から、条件部Ｂを満足する事例を探索し、それらの事例の集合を集合ＩＢとする（ステップＳ１１）。そして、この集合ＩＢの要素数が支持度の最小値以上であるか否かを判断する（ステップＳ１２）。
【００７５】
集合ＩＢの要素数が最小値よりも小さければ（ステップＳ１２にてｙｅｓ）、ステップＳ１８へ進む。一方、集合ＩＢの要素数が最小値以上であれば（ステップＳ１２にてｎｏ）、条件部Ｂを満足する事例の中で最も多くの事例が所属するクラスを、条件部Ｂに対応する結論Ｃとする（ステップＳ１３）。
【００７６】
そして、上記の条件部Ｂと結論Ｃからなるルール“ｉｆ  Ｂ  ｔｈｅｎ  Ｃ”が最小精度以上の精度を持つか否かと、このルールが意外性に関する上記の条件１〜条件３のすべてを満足するか否かとを判定する（ステップＳ１４）。ステップＳ１４の判定結果がｙｅｓであれば、集合Ｒにこのルールを追加する（ステップＳ１５）。
【００７７】
そして、集合ＮＦを空集合とし（ステップＳ１６）、続いて、集合Ｆに含まれないすべてのテストＡｉについて、
ＮＦ：＝ＮＦ∪｛Ａｉ｝
Ｒ：＝Ｒ∪ＲｕｌｅＤｉｓｃｏｖｅｒｙ２（Ｂ＆Ａｉ，Ｆ∪ＮＦ）
なる演算を行う（ステップＳ１７）。なお、ＲｕｌｅＤｉｓｃｏｖｅｒｙ２（Ｂ＆Ａｉ，Ｆ∪ＮＦ）は、条件部ＢとしてＢ＆Ａｉを与え、集合Ｆとして集合Ｆと集合ＮＦとの和集合を与えて、本手続きを再帰的に呼び出すことを意味する。
【００７８】
ステップＳ１７の処理が終了すると、ルール集合Ｒを出力し、処理を終了する（ステップＳ１８）。
【００７９】
以上に説明したように、本実施形態の知識発見方法および知識発見装置は、深さ優先の木探索を用いることにより、複数のテストから、網羅的かつ効率的にルールを生成することができる。また、深さ優先の木探索を用いることにより、広さ優先の木探索に比較して、知識発見装置のメモリ容量を節約することができるという利点がある。
【００８０】
（実施の形態３）
以下、本発明にかかるさらに他の実施形態について図面を参照しながら説明する。
【００８１】
前述の実施の形態２では、ルールの精度に対する各テストの影響度に無関係に網羅的にルールを生成するので、図４に示したような例では、テストＡ１を含む条件部を持つルールが優先的に生成される。従って、例えばこのテストＡ１がクラスに全く関連しないテストであったとすると、テストＡ１を含む条件部を持つルールの生成および評価は、処理時間を増大させるだけの結果に終わる可能性が高い。
【００８２】
これを改善するために、本実施形態では、ルールの精度に対する各テストの影響度を評価し、影響度が高いテストを優先的に用いてルールを生成することにより、ユーザにとって有用である可能性が高いルールを優先的に生成する。
【００８３】
このため、本実施形態にかかる知識発見装置は、図６に示すように、実施の形態２において図３に示した構成に、テスト評価部１６をさらに追加した構成である。テスト評価部１６は、ルールの生成を行う際に、所定の関数を用いてルールの精度に対する各テストの影響度を評価し、評価値を木探索制御部１５へ渡すようになっている。木探索制御部１５は、テスト評価部１６から渡された評価値に基づいて、条件部へ追加すべきテストを選択する。
【００８４】
本実施形態にかかる知識発見処理の手順について、図７のフローチャートを用いて説明する。なお、ここでも、実施の形態２と同様に、ルールの条件部Ｂと集合Ｆとが与えられる手続き（ＲｕｌｅＤｉｓｃｏｖｅｒｙ３）として、本知識発見処理を表現した。
【００８５】
最初は、ルールの条件部Ｂとして恒真（ｔｒｕｅ）、集合Ｆとして空集合が与えられ、処理を開始する。
【００８６】
まず、ルールの集合Ｒを空集合とすると共に、すべての事例の中から、条件部Ｂを満足する事例を探索し、それらの事例の集合を集合ＩＢとする（ステップＳ２１）。そして、この集合ＩＢの要素数が支持度の最小値以上であるか否かを判断する（ステップＳ２２）。
【００８７】
集合ＩＢの要素数が最小値よりも小さければ（ステップＳ２２にてｙｅｓ）、ステップＳ２９へ進む。一方、集合ＩＢの要素数が最小値以上であれば（ステップＳ２２にてｎｏ）、条件部Ｂを満足する事例の中で最も多くの事例が所属するクラスを、条件部Ｂに対応する結論Ｃとする（ステップＳ２３）。
【００８８】
そして、上記の条件部Ｂと結論Ｃからなるルール“ｉｆ  Ｂ  ｔｈｅｎ  Ｃ”が最小精度以上の精度を持つか否かと、このルールが意外性に関する上記の条件１〜条件３のすべてを満足するか否かとを判定する（ステップＳ２４）。ステップＳ２４の判定結果がｙｅｓであれば、集合Ｒにこのルールを追加する（ステップＳ２５）。
【００８９】
続いて、集合Ｆに含まれないすべてのテストＡｉの各々について、その有効性を評価する（ステップＳ２６）。各テストの有効性は、条件部がＢであるルールと、このルールの条件部ＢにテストＡｉを追加して生成される新たなルールとの間でクラス分布の変化がどの程度変化するか、すなわち、ルールの精度に対する各テストの影響度によって評価され、クラス分布の変化が大きいほど、テストＡｉの有効性は高いとされる。テストＡｉの有効性の評価関数としては、例えば次の（数１）に示すような関数を用いることができる。
【００９０】
【数１】
0004530235.tif 000002
【００９１】
上記の（数１）において、Ｂはテストを追加する前のルールの条件部、Ａｉが条件部Ｂに新たに追加すべきテストである。また、（数１）中のΣは、
Ｐ（ｃ｜Ｂ）＞０
となるクラスｃについてのみ和をとるものとする。
【００９２】
なお、追加すべきテストの有効性を評価するために用いる関数は、上記の（数１）に限定されず、エントロピーの変化を評価できる関数であれば、任意の関数を用いることが可能である。
【００９３】
次に、集合ＮＦを空集合とし（ステップＳ２７）、集合Ｆに含まれないすべてのテストＡｉについて、上記した（数１）による有効性の評価値が高い順に、
ＮＦ：＝ＮＦ∪｛Ａｉ｝
Ｒ：＝Ｒ∪ＲｕｌｅＤｉｓｃｏｖｅｒｙ３（Ｂ＆Ａｉ，Ｆ∪ＮＦ）
なる演算を行う（ステップＳ２８）。なお、ＲｕｌｅＤｉｓｃｏｖｅｒｙ３（Ｂ＆Ａｉ，Ｆ∪ＮＦ）は、条件部ＢとしてＢ＆Ａｉを与え、集合Ｆとして集合Ｆと集合ＮＦとの和集合を与えて、本手続きを再帰的に呼び出すことを意味する。
【００９４】
ステップＳ２８の処理が終了すると、ルール集合Ｒを出力し、処理を終了する（ステップＳ２９）。
【００９５】
以上の処理によれば、例えば、ルールの条件部に現れ得るテストがＡ１〜Ａ６の６個存在し、これらの評価値が、
Ａ１＞Ａ２＞Ａ３＞Ａ４＞Ａ５＞Ａ６
であった場合、生成されるルールの条件部Ｂは、図８に示すような順になる。
【００９６】
以上のように、本実施形態では、ステップＳ２８において条件部ＢにテストＡｉを追加することによりルールを順次生成する際に、追加するテストＡｉとして、有効性の評価値が高いものを順に選択するようになっている。この結果、短時間で効率的に有用な知識を発見することが可能となる。
【００９７】
（実施の形態４）
以下、本発明にかかるさらに他の実施形態について、図面を参照しながら説明する。
【００９８】
前述の実施の形態３では、テストの各々の有効性を評価し、評価値が高いテストを優先的に用いてルールを生成する。このため、図８に示した例では、例えば、条件部ＢがＡ２＆Ａ３であるルールは、条件部ＢがＡ１＆Ａ６のような、評価値が最も低いテストを含むルールよりも後に生成されることとなる。しかし、処理効率の点では、評価値の高いテストの組み合わせを条件部に持つルールが優先的に生成されることが好ましい。
【００９９】
そこで、本実施形態では、深さ優先の木探索を用いてルールの生成を行う際に、後に詳述するようにバックトラックの回数の上限値を設定することによって、条件部に含めるテストを制限し、この上限値を次第に大きくしていくことにより、評価値の高いテストの組み合わせを条件部に持つルールを優先的に生成する。
【０１００】
このため、本実施形態にかかる知識発見装置は、図９に示すように、実施の形態３において図６に示した構成に、探索範囲制限部１７をさらに追加した構成である。探索範囲制限部１７は、バックトラックの回数の上限値を木探索制御部１５に与える。
【０１０１】
上記のバックトラックの回数とは、ルールの条件部に含まれる各テストが選択されたときの評価値の順位の和から、この条件部に含まれるテストの数を引いた値として定義することができる。
【０１０２】
例えば、条件部にテストを追加して新たなルールを生成する際に、追加可能なテストの中で評価値が最も高いテストを選択して追加する場合には、追加されるテストの評価値の順位は常に１位であるので、条件部にｍ個のテストが含まれているとすると、ルールの条件部に含まれる各テストが選択されたときの評価値の順位の和はｍであり、バックトラックの回数は０となる。
【０１０３】
従って、探索範囲制限部１７によってバックトラックの回数の上限値が０回に設定された場合、条件部に新たに追加することができるテストは、条件部に含まれていないすべてのテストの内で評価値が最も高いテストのみである。また、バックトラックの回数の上限値が１回に設定された場合は、条件部に含まれていないすべてのテストの内で２番目に評価値の高いテストを一度だけ選択して追加することが許される。
【０１０４】
ここで、図１０および図１１を参照しながら、本実施形態の知識発見処理の手順について説明する。
【０１０５】
本実施形態の知識発見処理では、図１０に示すように、まず、ルールの集合Ｒを空集合とし、バックトラック回数の上限値ＭａｘＢＴを０に設定して、処理を開始する（ステップＳ３１）。そして、所定の終了条件が満足されるまで、図１１のフローチャートに示す手続き（ＲｕｌｅＤｉｓｃｏｖｅｒｙ４）の処理結果を集合Ｒに追加し（ステップＳ３３）、ＭａｘＢＴの値を１ずつ増加させる（ステップＳ３４）処理を繰り返す。
【０１０６】
上記の手続き（ＲｕｌｅＤｉｓｃｏｖｅｒｙ４）の手順は、以下のとおりである。最初は、ルールの条件部Ｂとして恒真（ｔｒｕｅ）、集合Ｆとして空集合が与えられ、ＭａｘＢＴ＝０として、処理を開始する。
【０１０７】
まず、ルールの集合Ｒを空集合とすると共に、すべての事例の中から、条件部Ｂを満足する事例を探索し、それらの事例の集合を集合ＩＢとする（ステップＳ４１）。そして、この集合ＩＢの要素数が支持度の最小値以上であるか否かを判断する（ステップＳ４２）。
【０１０８】
集合ＩＢの要素数が最小値よりも小さければ（ステップＳ４２にてｙｅｓ）、ステップＳ４９へ進む。一方、集合ＩＢの要素数が最小値以上であれば（ステップＳ４２にてｎｏ）、条件部Ｂを満足する事例の中で最も多くの事例が所属するクラスを、条件部Ｂに対応する結論Ｃとする（ステップＳ４３）。
【０１０９】
そして、上記の条件部Ｂと結論Ｃからなるルール“ｉｆ  Ｂ  ｔｈｅｎ  Ｃ”が最小精度以上の精度を持つか否かと、このルールが意外性に関する上記の条件１〜条件３のすべてを満足するか否かとを判定する（ステップＳ４４）。ステップＳ４４の判定結果がｙｅｓであれば、集合Ｒにこのルールを追加する（ステップＳ４５）。
【０１１０】
続いて、集合Ｆに含まれないすべてのテストＡｉのそれぞれについて、その有効性を評価する（ステップＳ４６）。テストＡｉの有効性の評価関数としては、実施の形態３において（数１）に示すような関数を用いることができるが、これに限定されない。
【０１１１】
次に、集合ＮＦを空集合、変数ｎを０とし（ステップＳ４７）、集合Ｆに含まれないすべてのテストＡｉについて、有効性の評価値が高い順に、
ＮＦ：＝ＮＦ∪｛Ａｉ｝
Ｒ：＝Ｒ∪RuleDiscovery4（Ｂ＆Ａｉ，Ｆ∪ＮＦ，ＭａｘＢＴ−ｎ）
ｎ：＝ｎ＋１
なる演算を行う（ステップＳ４８）。なお、ＲｕｌｅＤｉｓｃｏｖｅｒｙ４（Ｂ＆Ａｉ，Ｆ∪ＮＦ，ＭａｘＢＴ−ｎ）は、条件部ＢとしてＢ＆Ａｉを与え、集合Ｆとして集合Ｆと集合ＮＦとの和集合を与え、ＭａｘＢＴとして（ＭａｘＢＴ−ｎ）を与えて、本手続きを再帰的に呼び出すことを意味する。
【０１１２】
ステップＳ４８の処理が終了すると、ルール集合Ｒを出力し、処理を終了する（ステップＳ４９）。
【０１１３】
これにより、例えば、６個のテストＡ１〜Ａ６があり、その評価値が、
Ａ１＞Ａ２＞Ａ３＞Ａ４＞Ａ５＞Ａ６
である場合、図１０に示したステップＳ３３の処理が最初に行われることにより、図１２に示すような順で、条件部Ｂが生成される。
【０１１４】
また、図１０に示したステップＳ３４においてＭａｘＢＴの値が１だけ増やされた後に、ステップＳ３３の処理が２回目に行われることにより、図１３に示すような順で、条件部Ｂが生成される。なお、これ以降も、図１０のステップＳ３２において終了条件が満たされるまで、ＭａｘＢＴの値をさらに増やしながら処理が続行されるが、その結果についての詳細な説明は省略する。
【０１１５】
実施の形態３において図８に示した例と、図１３とを比較することから分かるように、実施の形態３では、Ａ２＆Ａ３を条件部Ｂとするルールは、Ａ１＆Ａ６を条件部とする評価値の最も低いテストを含むルールよりも後の３３番目に生成されているのに対し、本実施形態では、Ａ２＆Ａ３を条件部Ｂとするルールは２６番目に生成され、Ａ１＆Ａ６を条件部とするルールよりも早く生成される。
【０１１６】
なお、本実施形態では、図１２および図１３から分かるように、図１０のステップＳ３３を実行する度に同じルールを重複して生成することになるので、処理が終了するまでの時間は実施の形態３と比較して長くなる。しかし、評価値が比較的高いテストの組み合わせからなる条件部を持つルールを優先的に生成することができる。この結果、ユーザにとって有用な知識を効率的に発見することが可能となる。
【０１１７】
【発明の効果】
以上のように、本発明によれば、事例集合から抽出される知識のうち、意外性が高いと思われる知識のみを選択して出力することができるので、ユーザにとって自明でなく、興味深いと予想される知識を提示することが可能な知識発見方法を提供できる。
【図面の簡単な説明】
【図１】  本発明の実施形態１にかかる知識発見装置の概略構成を示すブロック図
【図２】  本発明の実施形態１における知識発見処理の手順を示すフローチャート
【図３】  本発明の実施形態２にかかる知識発見装置の概略構成を示すブロック図
【図４】  本発明の実施形態２における知識発見処理において生成されるルールの条件部を、生成される順に示す説明図
【図５】  本発明の実施形態２における知識発見処理の手順を示すフローチャート
【図６】  本発明の実施形態３にかかる知識発見装置の概略構成を示すブロック図
【図７】  本発明の実施形態３における知識発見処理の手順を示すフローチャート
【図８】  本発明の実施形態３における知識発見処理において生成されるルールの条件部を、生成される順に示す説明図
【図９】  本発明の実施形態４にかかる知識発見装置の概略構成を示すブロック図
【図１０】  本発明の実施形態４における知識発見処理の手順を示すフローチャート
【図１１】  図１０に示した知識発見処理で呼び出される手続きの処理手順を示すフローチャート
【図１２】  本発明の実施形態４における知識発見処理において、バックトラックの回数の上限値を０とした場合に生成されるルールの条件部を、生成される順に示す説明図
【図１３】  本発明の実施形態４における知識発見処理において、バックトラックの回数の上限値を１とした場合に生成されるルールの条件部を、生成される順に示す説明図
【符号の説明】
１１  データ入力部
１２  ルール生成部
１３  ルール評価部
１４  データ出力部
１５  木探索制御部
１６  テスト評価部
１７  探索範囲制御部
【図１】
0004530235.tif 000003
【図２】
0004530235.tif 000004
【図３】
0004530235.tif 000005
【図４】
0004530235.tif 000006
【図５】
0004530235.tif 000007
【図６】
0004530235.tif 000008
【図７】
0004530235.tif 000009
【図８】
0004530235.tif 000010
【図９】
0004530235.tif 000011
【図１０】
0004530235.tif 000012
【図１１】
0004530235.tif 000013
【図１２】
0004530235.tif 000014
【図１３】
0004530235.tif 000015