データ・マイニングは、データに対してアルゴリズムを適用し、指定されたコンテキストまたはクエリーに一致するパターンを発見するためのプロセスです。長年にわたり、組織はデータ・マイニングによって大量のデータを分析することで、振る舞いを予測したり、有意義なレポートを作成したり、競争に打ち勝ったり、等々を実現してきました。
近年では Web 全体にわたって非構造化データや半構造化データが急増してきたことで、インテリジェントなデータ・マイニングや、データ・ストレージ、データ処理の必要性が高まっています。また、従来のデータ・マイニング手法は、複雑さが増している大規模なデータ・セットに対応するために、新たなレベルの処理が要求されるようになっています。Web に対してデータ・マイニングを行うためには、最も容易な場合でも半構造化データのフォーマットで表される情報を構造化する必要があります。
データ・マイニングでは、特に統計的手法や、人工知能、標準的なデータベース管理手法などを使用して、大規模なデータ・セットからパターンを抽出しようとします。
ストレージ容量と処理能力が向上し、機器をネットワークに接続できることが当たり前になるにつれて、データ・マイニングの重要性がより一層明らかになってきました。組織は桁外れの量のデータから価値あるビジネス情報を引き出すことにより、競争で優位に立とうとしています。こうした情報は、科学、マーケティング、不正防止、調査などの分野で、有益な情報となり、またそれらの進歩にもつながります。データ・マイニングによって実現される成果の大きさから、より効果的なデータ・マイニングの手法、技術、ソリューションに対する需要が急増しています。データ・マイニングのソリューションを効果的なものにするためには、データを抽出し、フィルタリングし、変換するための最適化された手法および技術が必要です。そして変換されたデータは、Web サービスや、メッセージング・システムなどに使用することができます。
一般に、データ・マイニングには、クラスタリングや、クラス分類、回帰分析、相関ルール学習など、標準的なタスクがいくつか含まれています。
データ・マイニングにおけるクラスタリングとは、非構造化データや半構造化データに埋もれている、類似するデータのサブグループ (クラスター) を発見しようとする試みを指します。表 1 はデータ・マイニングでの典型的なクラスタリング手法の一覧とその説明です。
表 1. データ・マイニングでの典型的なクラスタリング手法
| クラスタリング手法 | 説明 |
|---|---|
| グリッド・ベース | しきい値を使用して、クラスターを構成するために結合されるデータのマトリックスまたは「セル」を発見します。 |
| 階層的 | 既に検出されたクラスターを使用して、連続的なデータ・グループまたはデータ・クラスターを発見し、階層構造のクラスターを生成します (クラスターは小規模な場合も大規模な場合もあります)。 |
| 局所性ベースまたは距離ベース | 仮想的なロケールあるいは物理的なロケールに基づいてデータ・クラスターを発見します。 |
| 分割最適化 | 再帰的にデータ・オブジェクトを分割し、固定数のクラスターを得ます。 |
クラス分類では、高さや、色など、既定の分類法や構造によって、データを分類しようとします。クラス分類を使用する最も一般的な例としては、スパム・メールや迷惑メールと必要なメールとを識別するために使用する例が挙げられます。
データ・マイニングでの回帰分析とは、データに関する特定の予測を行おうとする統計的手法です。例えば家の価値は、場所や、寝室の数、面積などを基にして予測することができます。定量的なデータを使用して公式を生成し、その後のデータにその公式を適用することによって予測を行います。回帰分析は予測のためによく使用されます。
相関ルール学習では、予測を行ったり、製品を位置付けたりするために、データ・オブジェクト同士の関係を探し出します。例えば、食料雑貨店は、相関ルール学習を使用して、「顧客がフランクフルト・ソーセージ、ホットドッグ・バンズ、および炭を購入するときは、ほとんど必ず紙皿も同時に購入する」といった事実を発見することで、顧客の購買パターンを予測できる可能性があります。
XML は、さまざまな方言によってデータを構造化することができるテキスト・ベースのマークアップ言語です。XML 方言は通常、スキーマによって定義されますが、スキーマは外部スキーマとして参照することも、XML 文書内に埋め込むこともできます。有名なプログラミング言語のほとんどは、何らかの形で XML 文書を操作できるようになっています。
XML は SGML (Standard Generalized Markup Language) のサブセットであり、ある XML 文書の内容に関するメタ情報を提供できるように設計されています。また XML では、ハードウェアやソフトウェアに依存しないデータがプレーン・テキスト・フォーマットで保存されます。これらの性質により XML は、Web 上のアプリケーションやシステムの間で情報の通信や共有を行うために最もよく使用されるフォーマットの 1 つになっています。
XML ベースの方言は、データ・マイニングのために非常に幅広く使用されています。表 2 はデータ・マイニングに使用されることが多い一般的な方言をいくつか挙げ、それらを説明したものです。
表 2. データ・マイニングのための XML 方言
| 方言 | 説明 |
|---|---|
| CWM-DM | CWM-DM (Common Warehouse Model for Data Mining) 仕様は、データ・マイニングのメタデータ (モデルの記述や、アルゴリズムの設定、属性など) を定義するためのものです。CWM-DM モデルとは、UML (Unified Modeling Language) のツールおよびアプリケーションを使用して生成された XML 文書のことです。 |
| PMML | PMML (Predictive Model Markup Language) は、PMML 準拠のサービスおよびアプリケーションの間で共有することができる統計的モデルおよびデータ・マイニング・モデルを定義するための XML 方言です。PMML により、異種混成のサービスおよびアプリケーションが、標準的な方法でデータ・マイニング・モデルを操作できるようになります。PMML 文書を構成する項目には、ヘッダー、データ・ディクショナリー、データ変換マッピング、モデル定義、マイニング・スキーマ、ポストプロセス・ターゲット、および出力フィールドなどがあります。 |
| XMLA | XMLA (XML for Analysis) 仕様では、SOAP を使用して多様なソースから得られた分析データにアクセスできるようにする XML インターフェースを定義します。このインターフェースは、2 つのメソッド (discover および execute) を使用します。XMLA は、データ・マイニングおよびオンライン分析処理 (OLAP) を明確な対象として策定されたものです。 |
| XPath | XPath (XML Path Language) は、XML 文書内の要素やデータを参照するためによく使用されるメカニズムです。XPath とファイルシステムの階層構造のナビゲートに使用されるメカニズムには、いくつかの共通点があります。 |
| XQL | XQL (XML Query Language) は、XML データ専用に設計された問い合わせ言語であり、リレーショナル・データ用の問い合わせ言語として SQL (Structured Query Language) を使用するのと似ています。 |
半構造化データとは、何らかの形式の構造は持つものの、リレーショナル・モデルに完全に適合するほどの構造は持たないデータを指します。半構造化データには通常、関連したデータについての詳細を含む意味的に関連した要素を分離するためのタグまたはその他の要素が含まれています。HTML は半構造化データの一般的な形式の 1 つです。半構造化データのなかでも、主に HTML 形式の半構造化データは、Web のデータ・マイニングに対して新たな可能性を広げています。
表形式データと階層構造データの両方を表現することができる XML には、メタデータをはじめとし、内容を記述するエンティティー (スキーマや DTD (Document Type Definition) など) を豊富に埋め込むことができます。XML は、データを単純な構造として表現することも、複雑で精巧な構造として表現することもできます。このような性質により、XML 方言は半構造化データを表現するための主要な語彙になっています。
XML は、サービスやアプリケーションに対して、データに構造を適用することを半ば強制します (XML は元々そのように設計されています)。そのため、データ・マイニングのメカニズムによって、有用なデータ・モデルを定義するために処理されているデータにセマンティクスを持たせることができます。これにより、データ・フォーマットとして XML 方言を使用しているデータの設計者は、データを定義するセマンティック・モデルを完全に制御しています。
また XML は、サービスやアプリケーションに対する共通の属性を提供するため、多種多様なプログラミング言語や環境からデータへの汎用的なアクセスが容易になります。このように汎用的なアクセスができることで、プログラマーやユーザーはデータを操作したり、利用したりすることに時間をあてることができ、データの操作や利用に必要なアルゴリズムやプログラミング作業に時間をかける必要がなくなります。
XML を使用して半構造化データ・セットから有用な情報を抽出する
半構造化データを XML ベースの文書として表現するためには、XML の利用、操作、および出力をサポートする堅牢なデータ・マイニング・システムが必要です。この要件により、データ・マイニング・システムは一般的な方法でデータを操作することになります。
XML によって表現される半構造化データは、1 つのルート (根) を頂点に含むラベル付き有向グラフと考えることができます。XML ベースのグラフのエッジ (枝) や、リーフ (葉)、その他のノード (節)にはテキスト・ラベルを付けることができます。また、グラフの各ノードは一意の識別子によって定義することができます。
映画作品目録を表現したリスト 1 の XML 文書の例を考えてみましょう。
リスト 1. XML 文書の例
<filmography>
<director name="Scorsese">
<year>
2002
<film>
<title>Deuces Wild</title>
</film>
</year>
<year>
2003
<film>
<title>The Soul of a Man</title>
</film>
<film>
<title>The Blues</title>
</film>
</year>
</director>
</filmography>
|
リスト 1 の XML 文書を図で表すと図 1 のグラフになります。
図 1. XML 文書を有向グラフとして表現する
XML ベースの問い合わせ言語は、エッジ・ラベルと区切り文字のシーケンスを使用してパスを表現することで、XML 文書のグラフ内の任意の場所に到達できるように構成されます。図
1 の XML グラフの Deuces Wild ノードに対するパス式、つまり XPath 式を、リスト 2 に示します。このパスはルート・ラベルから始まっています。
リスト 2. 単純な XPath 式
/filmography/director[@name="Scorsese"]/year[0]/film/title/text() |
XML 文書内で検索を行う場合、曖昧な結果ではなく適切な結果を得られるようにするには、データの取得先のコンテキストを正しく指定するようにします。例えば、「White」という苗字の映画監督を検索する場合に、XML 文書に「White」というタイトルの映画が含まれているとしたら、XPath 式で /filmography/director[@name="White"]@name と定義されるコンテキストを指定した方が、XPath
式で /filmography/director[@name="White"]/year[1]/film[0]/title/text() とするよりも曖昧ではない適切な結果を得ることができます。
Web 上の HTML 文書などの半構造化データ・ソースから情報を抽出するためには通常、データのフィルタリング、変換、そして抽出が必要になります。HTML
文書を構造化形式に変換するためには、その HTML 文書を XHTML (Extensible HyperText Markup Language)
文書に変換します。この変換には通常、関連ノードをタグ名でグループ化し、非推奨のタグや属性などの禁止項目を削除するといったフィルタリング・プロセスが必要となります。次のステップでは、html ルート要素を 1 つ宣言し、タグ要素および属性名を小文字に変更し、すべての開始タグに終了タグを追加し、img タグに alt 属性を追加するといった変換作業をフィルタリングされた文書に対して行います。
先ほど説明した、フィルタリング、変換、そして抽出というプロセスを用いる場合、Web を XML ベースの大規模なデータ・ストアと見なすことができます。したがって、XQuery のような XML 用の問い合わせ言語を使用して、Web からデータを容易に抽出することができます。
XHTML 文書から XQuery を使用してデータを抽出し、使用するためには、文書内のコンテンツを検索するクエリーを作成し、必要に応じて新しい XML 構造を作成し、オプションとして、まったく新しい XML 文書を作成します。文書内のデータを検索するためには、XPath 式を使用してパターン・マッチングを行います。
リスト 3 の XQuery は、リスト 1 の XML 文書から 2002年に作成された映画のタイトルを返す単純な XQuery 式を示しています。
リスト 3. すべての
film ノードを検索するための XQuery 式
for $x in doc("www.example.com/films.xml")/filmography/director
where $x/year="2002"
return $x/year/film/title
|
XQuery 文書から返された結果に対し、その結果を利用する人が必要に応じて、XML のタグや、属性、その他のマークアップを使用してアノテーションを付けられることに注意してください。例えば、リスト 4 のスニペットを注意深く調べてください。
リスト 4. XQuery から返された結果にアノテーションを付ける
for $x in doc("www.example.com/films.xml")/filmography/director
return
<director name="{$x[@id]}">
<other_data>...</other annotated data>
</director>
|
リスト 4 では、XQuery コードから返された結果には、このクエリーから返されたデータを使用した XML フラグメントとしてアノテーションが付けられています。
XQuery には、クエリーの適用対象となる特定の文書を指定できる機能があります。XPath 式 /filmography/director[@name="White"]@name を XQuery で機能強化し、以下の XQuery 式でこのクエリーを特定の文書に適用することができます。
doc("www.example.com/films.xml")/filmography/director[@name="White"]@name
|
さまざまな XQuery の構成体を使用して XML データに類似性検出を適用すると、著者名やデータ・ソースなどの一般的な要素によってデータを検出することができます。もっと複雑な方法 (頻度の重み付けや頻度の正規化など) については、この記事では説明しません。
先ほど説明したように、XML 文書の構造はネストされた階層構造のツリーで表現され、そのツリーには要素や、エンティティー参照、コメントなど、異なるタイプのノードがいくつもあります。XML 文書は 1 つだけルート・ノードを持つことができます。ルート・ノードは文書の先頭にあるノードです。
リレーショナル・データベースは、一連のレコードつまり行を含むテーブルの集合です。各レコードつまり行は、データが格納されるフィールドつまり列で構成されており、テーブルのすべての行に同じ数の列があります。したがって、リレーショナル・データベースは、階層構造の XML 構造としてモデル化することができます。この XML 構造のモデルは 1 つのデータベース・ノードからなり、このデータベース・ノードに一連のテーブル・ノードが含まれています。さらに各テーブル・ノードには一連の行ノードが含まれ、それぞれの行ノードが列ノード一式で構成されています。
リスト 5 に示すように、リレーショナル・データベース filmography は、1 つの行を含む 1 つのテーブル director で構成される構造を持つ XML 文書としてモデル化することができます。
リスト 5. XML でデータベースを表現する
<filmography>
<director>
<row>
<name>Scorsese</name>
<year>
2002
<film>
<title>Deuces Wild</title>
</film>
</year>
<year>
2003
<film>
<title>The Soul of a Man</title>
</film>
<film>
<title>The Blues</title>
</film>
</year>
</row>
</director>
</filmography>
|
キーによって関連付けられるテーブルは、リスト 5 のようにネストされる場合もありますが、関連付けられたテーブル名の属性として文書内に埋め込まれたリンクによって参照される場合もあることに注意してください。
データ・マイニング・クエリーから返される XML データを利用する場合、前回のクエリーの後に変更されたデータのみに関心がある場合がよくあります。この難しい要求に応える方法としては、格納、索引付け、そして差分検出というプロセスを利用する場合がほとんどです。このプロセスでは、まず XML データが抽出されて、格納されます。次にそのデータは、XML のパターン表現による索引付けや、B ツリー (B 木) 構造による索引付け、構造による索引付け、コンテンツまたはキーワードによる索引付けなどの手法を用いて索引が付けられます。XML データに索引が付けられると、差分検出プロセスで使われるデータにアクセスするための検索では、クエリーを高速で実行できるようになります。差分検出プロセスで生成された差分は、最新データと比較することができます。
変更検出は、将来の分析や予測のために使用できるデータ・パターンの変更を特定する上で役立ちます。
データ・マイニング・プロセスでは、データにアルゴリズムを適用し、指定されたコンテキストやクエリーに一致するパターンを発見します。組織は、データ・マイニングを使用して大量のデータを分析することで、振る舞いを予測したり、競争に打ち勝ったりする上で役立つ有意義なレポートを作成しています。
Web 上および社内のデータ・ストアに存在する非構造化データや半構造化データの量は膨大なため、インテリジェントで効果的なデータ・マイニングの必要性が高まっています。また、データ・セットが大規模で複雑になるにつれ、従来のデータ・マイニング手法を強化し、新しいレベルの処理要求に対応する必要があります。今日のデータ・ストアに対してデータ・マイニングを実行するためには、プロセッサーによって構造化データを作成する必要がありますが、その元となるデータはまったく構造化されていないか、良くても部分的に構造化されているにすぎません。
この記事では、データ・マイニングにおける XML の使用法と役割について、パターン・マッチング、変更検出、検索および類似性検出、データ・アノテーション、セマンティクスを含めて概説しました。また、データ・マイニングに XML を使用するための既存の標準についても簡単に説明しました。
学ぶために
- 「Webベースのデータ・マイニング」(Jussi Myllymaki、Jared Jackson の共著、developerWorks、2001年6月) を読み、HTML、XML、および Java 技術を使用して情報を自動抽出する方法を学んでください。
- 「Get started with
XPath」(Bertrand Portier 著、developerWorks、2004年5月) では XML Path Language、つまり XPath の基本を説明しています。
- 「Process XML using
XQuery」(Nicholas Chase 著、developerWorks、2007年5月) を読み、XQuery 1.0 を使用して容易かつ自然に XML データを検索する方法を学んでください。
- 「XQuery
によって XPath を拡張する方法」(Donnie Cameron 著、developerWorks、2008年4月) を読み、XPath では無理でも、XQuery では可能なことを学んでください。
- 「Data
mining with WEKA, Part 1: Introduction and regression」(Michael Abernethy 著、developerWorks、2010年4月) では、オープンソースのデータ・マイニング・ソフトウェア、およびデータを解釈するための最も一般的な手法のいくつかを紹介しています。
- 「Data
mining with WEKA, Part 2: Classification and clustering」(Michael Abernethy 著、developerWorks、2010年4月) では、データ・マイニングでよく使用される 2 つの方法であるクラス分類とクラスタリングについて解説しています。これらの方法によって、データをより強力に分析することができます。
- 「Data mining with WEKA, Part
3: Nearest Neighbor and server-side library」(Michael Abernethy 著、developerWorks、2010年6月) では、最近傍データ・マイニング手法を詳しく解説しています。
- New to XML には、XML を学ぶために必要なリソースが豊富に用意されています。
- この記事の著者である
J. Jeffrey Hanson が developerWorks に寄稿した他の記事も読んでください (2006年6月から現在まで)。マッシュアップのセキュリティーや、ソーシャル・メディアの API、REST サービス、フレームワーク、Apache Geronimo、その他の技術が解説されています。
- developerWorks の XML ゾーンには、XML
の領域でのスキルを磨くためのリソースが豊富に用意されています。XML の技術文書一覧には、広範な話題を網羅した技術記事やヒント、チュートリアル、技術標準、IBM Redbooks が豊富に用意されています。
- XML および関連技術において IBM 認定技術者になる方法については、IBM XML certification を参照してください。
- developerWorks の
Technical events and webcasts で最新情報を入手してください。
- developerWorks on Twitter で、今すぐ Twitter
に参加して developerWorks のツイートをフォローしてください。
- developerWorks podcasts でソフトウェア開発者のための興味深いインタビューや議論を聞いてください。
- developerWorks On demand
demos をご覧ください。初心者のための製品インストール方法やセットアップのデモから、上級開発者のための高度な機能に至るまで、多様な話題が解説されています。
製品や技術を入手するために
- IBM 製品の評価版をダウンロードするか、あるいは IBM SOA Sandbox
のオンライン試用版で、DB2、Lotus、Rational、Tivoli、および WebSphere が提供するアプリケーション開発ツールやミドルウェア製品を試してみてください。
議論するために
- XML zone discussion
forums では XML に関する議論が行われています。
- developerWorks コミュニティーで開発者向けのブログや、フォーラム、グループ、ウィキを利用しながら、他の developerWorks ユーザーとやり取りしてください。
