プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データマイニングにおけるクラス比較(クラス判別)の実行方法を徹底解説

クラス比較とは何か

クラス判別(クラス比較)とは、対象クラス(ターゲットクラス)を、それと対比される対照クラス(コントラストクラス)と比較しながら特徴付けを行うデータマイニング手法です。ここで重要なのは、対象クラスと対照クラスが比較可能でなければならないという点です。両者が比較可能であるためには、同じ次元(ディメンション)と属性を共有している必要があります。

例えば、「人物」「住所」「商品要素」といった異質な3つのクラスは互いに比較できません。一方、過去3年間の売上データ同士、あるいは「コンピュータサイエンス学科の志望者」と「物理学科の志望者」のようなクラスは、共通の属性を持つため比較可能です。

同期一般化の重要性

開発された手法は、複数の比較可能なクラスにまたがるクラス比較にも拡張できます。例えば、クラス特性評価のために定義された属性一般化プロセスを改良し、比較対象となるすべてのクラス間で同時に(同期的に)一般化処理を実行することが可能です。これにより、各クラスの属性を同一の抽象化レベルへと統一して一般化できます。

具体例として、AllElectronics社の2003年の売上データと2004年の売上データという2つのクラスを比較する場合を考えてみましょう。地域ディメンションには、「市」「州(県)」「国」という抽象化の階層が存在します。このとき、両方のデータクラスは必ず同じ地域レベルまで一般化されなければなりません。

つまり、両方のデータをすべて市レベルに揃えるか、州レベル、あるいは国レベルに同期的に一般化するのです。2003年のバンクーバーの売上と2004年のアメリカ合衆国全体の売上を比較するような、各データセットが異なる抽象化レベルに置かれた状態での比較は、意味のある分析になりません。レベルを揃えた比較の方がはるかに有益です。

クラス比較の基本的な手順

ユーザーは、システムが自動的に実行する同期比較の結果を、必要に応じて自分の指定した設定で上書きできるオプションを持つべきです。クラス比較は、一般的に以下の手順で実行されます。

  • データ収集 − クエリ処理によってデータベース内の関連レコードの集合を取得し、それを対象クラスと1つ以上の対照クラスに分割します。

  • ディメンション関連性分析 − 多数のディメンションが存在する場合は、ディメンション関連性分析を実行し、以降の分析には高い関連性を持つディメンションのみを選択します。

  • 同期一般化 − 対象クラスに対し、ユーザーまたは専門家が指定したディメンション閾値によって制御されたレベルまで一般化を実行し、プライム対象クラスリレーション(主要な対象クラス関係)を生成します。

  • 導出された比較結果の提示 − 得られたクラス比較の記述は、表・グラフ・ルールなどの形式で提示できます。この際、対象クラスと対照クラスの差異を反映する「対比」尺度(カウント率:count% など)を含めて示すのが一般的です。

OLAP操作による比較結果の調整

比較結果の提示後も、ユーザーはドリルダウンやロールアップをはじめとする各種OLAP操作を対象クラスおよび対照クラスに適用することで、比較記述の粒度や視点を柔軟に調整できます。これにより、より詳細なレベルでの分析、あるいはより要約された形での把握が可能となり、意思決定に役立つ洞察を得ることができます。

  1. Pythonでクラスを定義する方法を解説!基本構文と書き方のポイント

    Pythonでは、ほぼすべてのコードがクラスを使って実装されています。プログラマーはクラスを利用することで、関連性の高いコードをひとつにまとめて管理できます。これは「class」というキーワードによって実現されており、クラスはオブジェクト指向プログラミングの構成要素を集約したものです。クラスとは何かクラスとは、オブジェクト(インスタンス)を生成するための設計図・テンプレートです。オブジェクトはメンバー変数(属性)を持ち、それに関連付けられた振る舞い(メソッド)を備えています。Pythonでは、classキーワードを使うことでクラスを作成します。基本的なクラスの定義方法まずは、関数やメソッドを一

  2. なぜクラスを作るのか?抽象化の重要性と良いクラス設計の基本

    前回の記事「なぜnilを使うのか」に続き、普段当たり前と思って使っているものについても、同じ問いを立ててみるのは良いアイデアではないでしょうか。 例えば… 巨大で醜いコードの塊を1つ作るのではなく、なぜ私たちはクラスを使うのでしょうか? 基本的なレベルで言えば、コードとデータを論理的な単位に整理するためにクラスを使います。しかし、それだけではありません。 クラスを使うと、抽象化(abstraction)を作り出せるのです。 抽象化とは何か? 実は、私たちは毎日、毎分、抽象化を利用しています。 今この記事を書いているキーボードは、次のようなもので構成されています。 ケーブル Cherry MX