属性一般化のルールとは?基本原則と制御手法をわかりやすく解説
属性一般化の基本ルール
属性の一般化は、以下のルールに基づいて行われます。元の作業リレーションにおいて、ある属性に多数の異なる値が存在し、かつその属性に対する一般化演算子のグループが存在する場合、適切な一般化演算子を選択してその属性に適用する必要があります。
ルールの根拠となる理由
このルールには以下のような理論的根拠があります。作業リレーション内のタプルやルールにおける属性値を一般化することで、そのルールがより多くの元のデータタプルをカバーするようになり、結果としてルールが定義する概念が一般化されます。これは、インスタンスからの知識獲得における「一般化ツリーの登攀(climbing generalization trees)」、すなわち「概念ツリー昇順(concept tree ascension)」として定義される一般化ルールに対応します。
属性一般化の制御(Attribute Generalization Control)
属性や用途に応じて、ユーザーは一部の属性を比較的低い抽象化レベルに留め、他の属性をより高いレベルに一般化することを好む場合があります。属性をどの程度の高さまで一般化すべきかの判断は、一般的に主観的なものとなります。この段階の制御は「属性一般化制御」と呼ばれます。
属性が「高すぎる」レベルまで一般化されると、過剰一般化(overgeneralization)が発生し、得られるルールの記述力が低下します。逆に、属性が「十分に高いレベル」まで一般化されなければ、一般化不足(under-generalization)が生じ、得られるルールは有益な情報を提供できません。したがって、属性指向の一般化では適切なバランスを取ることが重要です。
一般化プロセスを制御する2つの手法
一般化プロセスを制御するには、主に以下の2つの手法があります。
1. 属性一般化しきい値制御(Attribute Generalization Threshold Control)
最初の手法は「属性一般化しきい値制御」と呼ばれ、すべての属性に対して1つの一般化しきい値を設定するか、各属性ごとに個別のしきい値を設定します。属性内の異なる値の数が属性しきい値を超えた場合、属性の除去または属性の一般化を実施する必要があります。
データマイニングシステムでは通常、2〜8程度の範囲のデフォルトの属性しきい値が設定されており、専門家やユーザーがしきい値を変更できるようになっています。ユーザーが特定の属性の一般化レベルが大きすぎると判断した場合は、しきい値を調整することが可能です。
2. 一般化リレーションしきい値制御(Generalized Relation Threshold Control)
2つ目の手法は「一般化リレーションしきい値制御」と呼ばれ、一般化されたリレーションに対してしきい値を設定します。一般化リレーション内の(異なる)タプルの数がしきい値を超えた場合、さらなる一般化を実施する必要があります。
逆に、タプル数がしきい値を下回っている場合は、それ以上の一般化は実施しません。このしきい値も、データマイニングシステムに事前設定する(通常は10〜30の範囲)か、専門家やユーザーが設定でき、調整可能である必要があります。例えば、ユーザーが一般化リレーションが小さすぎると判断した場合、しきい値を引き上げることで、ドリルダウン(詳細化)を行うことができます。
-
C#の属性(Attribute)とは?基本構文と主な定義済み属性をわかりやすく解説
C#における属性(Attribute)とは、クラス、メソッド、構造体、列挙型、アセンブリなど、プログラムを構成するさまざまな要素の動作に関する情報を、実行時(ランタイム)に伝えるための宣言型のタグです。 属性を使うことで、コード自体には手を加えずに、追加のメタデータを要素へ付与することができます。 属性の基本構文 属性は以下のような形式で記述します。 [attribute(positional_parameters, name_parameter = value, ...)] Element この構文のポイントは次のとおりです。 属性名とその値は角括弧 [ ] の中に記述します。 属性は、適
-
C#のコメントとは?複数行・単一行コメントの書き方を解説
コメントは、コードの内容や意図を説明するために記述する注釈です。コンパイラはコメント部分を完全に無視するため、プログラムの動作には一切影響しません。C#では、複数行にわたるコメントは「/*」で始まり、「*/」で終わります。 複数行コメント /* 以下はC#における 複数行コメントの例です */ 「/* ... */」で囲まれた範囲はすべてコンパイラによって無視されます。処理の概要や注意点など、複数行にわたる説明を残したい場合に使用します。 単一行コメント // 変数の宣言 int a = 10; 単一行コメントは「//」から行末までがコメントとして扱われます。変数の意味や処理の意図を手軽にメモ