データマイニング
DESCRIPTION
データマイニング. 問題の動機付け 決定木 サポートベクターマシン アソシエーションルール クラスタリング 協調フィルタリング. データマイニングとは. • (巨大な)データセットから、ある種の規則性とか特徴的な部分を(大量に)取り出すこと • 統計的に顕著(優位)な部分を(複数)取り出す 例: • 百貨店の売り上げデータから、 年齢層と購買物品の相関が高いものを見つける • 新聞記事データベースから、共通の単語を多く使用している記事群を見つける. 最適化モデルとの違い. 最適化: データセットから、ある種の特徴を最適化する部分を見つけよう - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/1.jpg)
データマイニングデータマイニング
• 問題の動機付け• 決定木• サポートベクターマシン• アソシエーションルール• クラスタリング• 協調フィルタリング
![Page 2: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/2.jpg)
データマイニングとはデータマイニングとは
• (巨大な)データセットから、ある種の規則性とか特徴的な部分を(大量に)取り出すこと
• 統計的に顕著(優位)な部分を(複数)取り出す
例:• 百貨店の売り上げデータから、 年齢層と購買物品の相関が高いものを見つける• 新聞記事データベースから、共通の単語を多く使用して
いる記事群を見つける
![Page 3: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/3.jpg)
最適化モデルとの違い最適化モデルとの違い
最適化: データセットから、ある種の特徴を最適化する部分
を見つけよう
データマイニング: データセットから、ある種の特徴を持つ部分を大量
に見つけよう ある種のルールや知識を掘り出そう
![Page 4: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/4.jpg)
自動分類自動分類
例)いくつかの属性を持つデータセットがあり、それらが 2 つに
分類(正例と負例)されているとき、属性で分類を行うルールを作りたい
さらに例)• 年齢・収入・食費・住居費のデータセットから、 車を持っているかどうかを分類する(年齢が XX 歳以上で ( 2× 収入+食費)≧ 1000 万なら、
持ってる•新聞記事データベース(単語の集合)から、生活に関する
記事とその他を分けたい• 誕生日と血液型と今日の運勢から、運のいい人と悪い人を
分類したい(みずがめ座で A 型かおうし座で O 型ならば運がいい)
![Page 5: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/5.jpg)
自動分類決定木とサポートベクターマシン
自動分類決定木とサポートベクターマシン
![Page 6: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/6.jpg)
自動分類を使った予測自動分類を使った予測
• 年齢・収入・食費・住居費のデータセットから、 車を持っているかどうかを自動的に推測したい
• 年齢・収入・食費・住居費・(車所持?)のデータセットを使って、どのような属性を持つと車を持っているのか、という分類ルールを得る
• 新しく年齢・収入・食費・住居費のデータが来たときに、ルールに当てはまるかどうかをチェックして、車を持っていそうかどうかを推測する
![Page 7: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/7.jpg)
データ分類の例データ分類の例
• 毒キノコに関するデータベースがあるとする
色 高さ
形 毒
A ● 高 □ 強B ● 低 △ 無C ● 低 □ 弱D ● 低 ○ 強E ● 高 ○ 無F ● 低 △ 強G ● 高 □ 弱H ● 低 □ 強I ● 高 ○ 無
• このデータベースを使って、毒キノコ(強)とそうでないキノコをわけるルールを見つけたい
例えば、 「●&□ か 低 & ● でない」
「高 & □ 」は、毒キノコにもそうでないキノコにも見られるので、使えない
![Page 8: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/8.jpg)
決定木決定木
• 分類の仕方のひとつ
例)• 収入が 700 万以上か、収入が 400 万以上かつ食費が
80 万以下か、住居費が 200 万以上なら、車を持っている
• 家事という言葉を含むか、生活費と教育を含めば、生活に関する記事である
• 分類の仕方を絵で書くと、木になる
![Page 9: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/9.jpg)
毒キノコの決定木毒キノコの決定木
• 「●&□ か 低 & ● でない」
色 高さ
形 毒
A ● 高 □ 強B ● 低 △ 無C ● 低 □ 弱D ● 低 ○ 強E ● 高 ○ 無F ● 低 △ 強G ● 高 □ 弱H ● 低 □ 強I ● 高 ○ 無
●●
●
××
××毒毒
低 高 □
毒毒
□でない
毒毒××
低 高
![Page 10: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/10.jpg)
良い決定木良い決定木
• 決定木は、全ての可能なデータを、論理式か不等式で再帰的に分割し、できた切片を分類している
• 切片に間違ったものが入っていなければいないほど、よく分類されている
最適な決定木を求める、という最適化問題を解きたい
• しかし、分割を繰り返せば、必ず正確に分類できるけど、
- ルールが複雑すぎて困る - データの偏り、異常データに思いっきり引っ張ら
れ、予測精度が悪くなる(オーバーフィッティング:絵参照)単純なルールで、という条件を入れる単純なルールで、という条件を入れる
![Page 11: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/11.jpg)
単純にするための制約単純にするための制約
• 単純なルールにするため、決定木に制約をつける
•例えば、 - 分割は n 回まで - 1つの論理式に、項は 2 つまで - 1つの不等式に、変数は 3 つまで
• これらの条件を満たす決定木の中で、最も良い分類をしているものを見つけなさい、という最適化問題になる
(分類の精度以外の尺度を入れることもある)
• このほうが、実行可能解も少なくなるので、最適化もしやすくなる
![Page 12: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/12.jpg)
決定木最適化決定木最適化
• 最適な決定木を求める NP-complete (難しい)
• ヒューリスティックで解く
• 例えば貪欲法 - 各切片を分割する全ての分割の仕方の中で、その
分割を追加することで最も分類が良くなるものを追加する
- 切片がある程度 ( n個) まで増えたら終了
![Page 13: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/13.jpg)
決定木最適化 (2)決定木最適化 (2)
• 例えば近傍探索 - ある分割をやめる、変更する、分割を追加する、
という作業をして得られる決定木を、もとの決定木の近傍とする
- 近傍探索をする
• どちらにしてもヒューリスティックなので、うまくいったりいかなかったりのようです
![Page 14: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/14.jpg)
決定木の評価決定木の評価
• 計算で得られた決定木の有効性をどのように評価するか
実際に運用してみれば良いのだが、それでは直接的過ぎるし、コストもかかるしリスクもある
• 手持ちのデータを使って、評価する
• 手持ちのデータをいくつかの小さいデータに分割し、そのひとつを使って、性能を残りで評価する
• これを、各小さいデータに対して行うことで、平均的な挙動を見る
• 時系列のデータなどで、全体がゆるやかに変化していくような場合、不利
![Page 15: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/15.jpg)
成功事例成功事例
• 文書の分類は、うまくいくようです。
![Page 16: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/16.jpg)
サポートベクターマシンサポートベクターマシン
• 自動分類の手法その2
• 属性を数値だと思うと、データの各項目はベクトルに対応する(データが m 次元空間に散らばっている)
• これを、平面や曲面ですぱっと、各分類に切り分ける、上手な切り方を見つけよう(このような切り方を見つける手法をサポートベクターマシンと呼ぶ)
• あまりくにゃくにゃの曲面で切ると、オーバーフィッティングになる
![Page 17: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/17.jpg)
超平面サポートベクターマシン超平面サポートベクターマシン
• シンプルなルールにするため、平面で切る、と制約をつける
線形計画として定式化できる
• 各データの属性値は、 正例 i : ai1,…,aim
負例 j : bj1,…,bjm
• m 次元の平面は c1 x1 +,…,+ cm xm = 1 で表される • c1,…,cm を変化させるといろいろな平面が得られる 変数は c1,…,cm
![Page 18: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/18.jpg)
超平面サポートベクターマシン (2)超平面サポートベクターマシン (2)
• 平面が、データを切り分けているためには、 正例 i に対しては c1 ai1 +,…,+ cm aim 1≦
負例 j に対しては c1 bj1 +,…,+ cm bjm 1≧
となればよい これが制約
• さらに欲を張って、超平面からなるべく各データが離れてい
るようにするためには、 正例 i に対しては c1 ai1 +,…,+ cm aim 1 -ε≦
負例 j に対しては c1 bj1 +,…,+ cm bjm 1 +ε≧
として、 ε を最大化する
![Page 19: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/19.jpg)
実行不能な場合実行不能な場合
• 当然、平面で切り分けられないと、実行不能になる。 なるべく、分類違いが少ない切り方がほしい
• 個数を最小化するのは大変なので、分類間違いデータの、平面からの距離和を最小化する
• 最大を最小化する方法を使う 正例に対しては c1 ai1 +,…,+ cm aim - ti 1 -ε≦
負例に対しては c1 bj1 +,…,+ cm bjm + tj 1 +ε≧
それと ti 0 ≧ という制約として、各 ti の総和を最小化する
![Page 20: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/20.jpg)
2次曲面で切り分けたい場合2次曲面で切り分けたい場合
• 2次曲面は 2次元で言えば、放物線・双曲線・楕円 3次元で言えば、放物曲面・双曲面・楕円体
•方程式は、係数行列と係数ベクトルを C,d とすると xTCx +dTx = 1
• 分類間違いデータの、曲面からの距離和を最小化する 正例に対しては ai
TCai +dTai - ti 1 -ε≦
負例に対しては bjTCbj +dTbj + tj 1 +ε≧
それと ti 0 ≧ という制約として、各 ti の総和を最小化する
• 変数は C と d なので、不思議なことに線形計画問題
![Page 21: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/21.jpg)
サポートベクターマシンの応用例サポートベクターマシンの応用例
□ 最初の事例: 乳がんの検査検査項目が 6個くらいあり、各患者に対して、その検査結果の数値がデータとしてある。その数値データで、乳がん患者とそうでない患者を分類
• 97% くらいの精度で分割できて、しかも予測的中率もそれくらいの性能が出たそうだ
□ 企業の倒産予測: 多数の企業の過去の財務データで、半年後に倒産した会社とそうでない会社を分類
• 70-80 % くらいの精度で分類でき、予測的中率もそれくらい。2次曲面を用いると、精度が 5-10% くらい向上するそうだ
![Page 22: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/22.jpg)
頻出パターン頻出パターン
![Page 23: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/23.jpg)
現れるパターンからの分析現れるパターンからの分析
• データベース構築と検索は、もうできるようになった (絞込みや、あいまい検索はまだ改良の余地があるけど)
• より詳しくデータを解析するために、データの特徴を捉えたい各種統計量(データベースの大きさ、密度、項目に現れる属性値の総計、分布)よりも、深い解析がしたい
組合せ(パターン)的な構造に注目(どういう組合せ(パターン)がどれくらい入っているか)
• 組合せ・パターンの個数は指数なので、全てを尽くすのは効率的でない 多く現れるものだけに注目 ゲノム情報実験結果
データベース
ATGCGCCGTATAGCGGGTGGTTCGCGTTAGGGATATAAATGCGCCAAATAATAATGTATTATTGAAGGGCGACAGTCTCTCAATAAGCGGCT
ATGCGCCGTATAGCGGGTGGTTCGCGTTAGGGATATAAATGCGCCAAATAATAATGTATTATTGAAGGGCGACAGTCTCTCAATAAGCGGCT
実験1
実験2
実験3
実験4
● ▲ ▲ ● ▲
● ● ▲ ● ● ● ▲ ● ▲ ● ●
● ▲ ● ● ▲ ▲ ▲ ▲
![Page 24: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/24.jpg)
頻出パターンの列挙頻出パターンの列挙
• データベースの中に多く現れるパターンを全て見つける問題を頻出パターン列挙(あるいは発見、マイニング)問題という
データベース: トランザクション、ツリー、グラフ、多次元ベクトル パターン: 部分集合、木、パス・サイクル、グラフ、図形
ゲノム情報実験結果
データベース 頻出する
パターンを抽出ATGCGCCGTATAGCGGGTGGTTCGCGTTAGGGATATAAATGCGCCAAATAATAATGTATTATTGAAGGGCGACAGTCTCTCAATAAGCGGCT
ATGCGCCGTATAGCGGGTGGTTCGCGTTAGGGATATAAATGCGCCAAATAATAATGTATTATTGAAGGGCGACAGTCTCTCAATAAGCGGCT
実験1
実験2
実験3
実験4
● ▲ ▲ ● ▲
● ● ▲ ● ● ● ▲ ● ▲ ● ●
● ▲ ● ● ▲ ▲ ▲ ▲
• 実験 1● ,実験 3 ▲• 実験 2● ,実験 4●• 実験 2●, 実験 3 ▲, 実験4●• 実験 2▲ ,実験 3 ▲ . . .
• 実験 1● ,実験 3 ▲• 実験 2● ,実験 4●• 実験 2●, 実験 3 ▲, 実験4●• 実験 2▲ ,実験 3 ▲ . . . • ATGCAT
• CCCGGGTAA• GGCGTTA• ATAAGGG . . .
• ATGCAT• CCCGGGTAA• GGCGTTA• ATAAGGG . . .
![Page 25: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/25.jpg)
多く現れるものを見つけるために、多く現れるとは何か、を決める
• データベースが項目の集まりだとする • パターンに対して、そのパターンを含む項目を出現という • 出現の数(頻出度)が閾値より大きければ、良く現れるとす
る
(含む、の定義は、集合で行ったり、文字列の包含、グラフの埋め込みなどで定義する)
多く現れる 頻出する多く現れる 頻出する
{A,C,D}
{A,B,C,D,E}
パターンパターンXYZ
項目項目AXccYddZf
![Page 26: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/26.jpg)
集合の出現と頻出度集合の出現と頻出度
集合 K に対して:K の出現: K を含む T のトランザクションK の出現集合 I(K) : K を含む T のトランザクション全ての集合K の頻出度 frq(K) : K の出現集合の大きさ
1,2,5,6,7,92,3,4,51,2,7,8,91,7,92,7,92
T =
{1,2} の出現集合= { {1,2,5,6,7,9}, {1,2,7,8,9} }
{2,7,9} の出現集合= { {1,2,5,6,7,9}, {1,2,7,8,9}, {2,7,9} }
![Page 27: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/27.jpg)
頻出集合頻出集合
• 頻出集合: T の定数 θ個以上のトランザクションに含まれる集合 (頻出度が θ 以上の集合)( θ を最小サポートとよぶ)
例) データベース T の 3 つ以上のトランザクションに含まれる集合 1,2,5,6,7,9
2,3,4,51,2,7,8,91,7,92,7,92
T =
3つ以上に含まれるもの{1} {2} {7} {9}{1,7} {1,9}{2,7} {2,9} {7,9}{1,7,9} {2,7,9}
与えられたデータベース T と定数 θ に対して、 T の頻出集合を列挙する問題を頻出集合列挙問題と言う(頻出パターン列挙問題も同じ)
与えられたデータベース T と定数 θ に対して、 T の頻出集合を列挙する問題を頻出集合列挙問題と言う(頻出パターン列挙問題も同じ)
![Page 28: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/28.jpg)
トランザクションデータベーストランザクションデータベース
パターンとして、集合を考える
トランザクションデータベース: 各トランザクション T がアイテム集合 E の部分集合になっているようなデータベース つまり、 T , ∀T ∈T , T ⊆ E
• POS データ(各項目が、客 1 人の購入品目)• アンケートのデータ( 1 人がチェックした項目)• web log ( 1 人が 1回の web サーフィンで見たページ)• オプション装備 (車購入時に 1 人が選んだオプション) 実際のデータは、大きくて疎なものが多い
パワー則、スモールワールドが成り立つ
1,2,5,6,72,3,4,51,2,7,8,91,7,92,7,92
T =
![Page 29: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/29.jpg)
応用:バスケット分析応用:バスケット分析
• スーパーなどの小売店舗で、同時に購入される事の多い品物の組を知りたい
• 客が購入した品目 トランザクション • 品目の組で、多くの客が購入したもの
多くのトランザクションに含まれるアイテム集合 (ある θ に対する)頻出集合
「おむつとビールの組合せが良く売れる」という発見が有名
● 牛乳、弁当● お茶、弁当● おにぎり、雑誌● はさみ、のり● ラーメン、はし● こっぷ、皿● 弁当、おにぎり ...
![Page 30: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/30.jpg)
応用:データベースの比較応用:データベースの比較
• 2つのデータベースが、意味的にどの程度似ているか知りたい 大きさの違い、ノイズは無視したい
• 各アイテム、属性などの総数だけでは、組合せがわからない • 組合せを細かく見ると、ノイズに振り回される
頻出集合を列挙することで、組合せ的な特徴を比較できる データ
ベースデータベース
データベースデータベース
• いろいろな言語の辞書データ • 異なる種のゲノムデータ • 文書集合の単語データ(新聞のデータ、雑誌のデータなど) • 顧客のデータ
![Page 31: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/31.jpg)
応用:分類ルール、特性の発見応用:分類ルール、特性の発見
• データの特徴を現す規則、あるいは正例・負例を分類するような規則が知りたい ( A,B,C が含まれている、 A,B が含まれれば、 C が含まれる、など)
• 多く現れる組合せを用いないと、仮定部分を満たすものが少なく、ルールとして意味がない • 組合せを細かく見ると、ノイズに振り回される
頻出集合を仮定に用いることで、信頼度の高いルールを効率良く見つけられる
• 実験データ • 利用者履歴データ、マーケティング
データベース
データベース
負例正例
![Page 32: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/32.jpg)
アソシエーションルールアソシエーションルール
• アイテム集合 E の部分集合が集まったデータセット T を考える
例: • 単語集合の部分集合である、ドキュメント• 商品集合の部分集合である、各顧客の購買品目• キーワード集合の部分集合である、論文のアブストラクト
S E ⊆ に対して、 P(S) = | {H | S H, H F} | ⊆ ∈ / |T| とする
• このデータセットから、 P({u})×P(S) に比べて P({u} S) ∪が顕著に大きいような u, S のペアを見つけたい ( 関係が深い)
![Page 33: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/33.jpg)
頻出パターンの単調性頻出パターンの単調性
• 頻出パターンの部分パターンは頻出 単調性が成り立つ
バックトラック法を適用できる
頻出集合であるかどうかのチェックは O(||T ||) 時間、最高 n 方向に登る 1つあたり O(||T ||n) 時間
頻出
111…1
000…0
φ
1,31,2
1,2,3 1,2,4 1,3,4 2,3,4
1 2 3 4
3,42,41,4 2,3
1,2,3,4
多項式時間ではあるが、
||T || も n も大きすぎる
多項式時間ではあるが、
||T || も n も大きすぎる
![Page 34: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/34.jpg)
列挙例列挙例
• このデータベースで 頻出集合を列挙してみる
a : 1,2,5,6,7,9b: 2,3,4,5c: 1,2,7,8,9d: 1,7,9e: 2,7,9f: 2
T =
{1}:a,c,d{1}:a,c,d
{1,7}: a,c,d{1,7}: a,c,d
φ : a,b,c,d,e,fφ : a,b,c,d,e,f
{1,7,9}: a,c,d{1,7,9}: a,c,d
{1,9}: a,c,d{1,9}: a,c,d
{2}: a,b,c,e,f{2}: a,b,c,e,f
{2,7}: a,c,e{2,7}: a,c,e
{7}:a,c,d,e{7}:a,c,d,e {9}: a,c,d,e{9}: a,c,d,e
{7,9}:a,c,d,e{7,9}:a,c,d,e
{2,7,9}: a,c,e{2,7,9}: a,c,e
{2,9}: a,c,e{2,9}: a,c,e
![Page 35: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/35.jpg)
末広がり性の利用末広がり性の利用
• パターン X の出現集合を T とする X + e の出現は X を含む(= X の出現)
T の中で e を含むもの X + e の出現集合
• 出現集合を更新すれば、 データ全体を見なくて良い
• 反復が深くなると、見るべき出現集合は小さくなる 反復が深くなるにつれ、計算時間は短くなる
![Page 36: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/36.jpg)
末広がり性末広がり性
• バックトラックは、各反復で複数の再帰呼び出しをする 計算木は、下に行くほど大きくなる 計算時間を支配するのは一番下の数レベル
多くの列挙アルゴリズムが似たような再帰構造を持つので、下のレベルの仕事を上のレベルがやれば、同様の改良ができ
る
多くの列挙アルゴリズムが似たような再帰構造を持つので、下のレベルの仕事を上のレベルがやれば、同様の改良ができ
る
ほぼ全ての反復が短時間で終了( 1秒間におよそ 100 万個)
ほぼ全ての反復が短時間で終了( 1秒間におよそ 100 万個)
・・・・・・
計算時間長計算時間長
計算時間短計算時間短
![Page 37: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/37.jpg)
サポートが大きい場合もサポートが大きい場合も
• θ が大きいと、下のレベルでも多くの出現を見ることになる 末広がり性による高速化はいまひとつ
• データベースの縮約により、下のレベルの高速化をはかる(1) 前回追加したアイテムより小さいアイテムは消す(2) 現在の出現集合からできるデータベースの中で、頻出になっていないアイテムは消去する (再帰呼び出しの中で加えられることが無いから)(3) まったく同一のトランザクションは、1つにまとめる
• 実データだと、下のほうのレベルではだいたい大きさが定数になる
θ が小さいときと速度の大きな差はないθ が小さいときと速度の大きな差はない
1 3 4 5
1 2 4 6
3 4 7
1 2 4 6 7
3 4 5 6 7
2 4 6 7
![Page 38: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/38.jpg)
データの縮小データの縮小
• このデータベースでの頻出集合時におけるデータベースの縮小を見る
a : 1,2,5,6,7,9b: 2,3,4,5c: 1,2,7,8,9d: 1,7,9e: 2,7,9f: 2
T =
{1}:a,c,d{1}:a,c,d
{1,7}: a,c,d{1,7}: a,c,d
φ : a,b,c,d,e,fφ : a,b,c,d,e,f
{1,7,9}: a,c,d{1,7,9}: a,c,d
{1,9}: a,c,d{1,9}: a,c,d
{2}: a,b,c,e,f{2}: a,b,c,e,f
{2,7}: a,c,e{2,7}: a,c,e
{7}:a,c,d,e{7}:a,c,d,e {9}: a,c,d,e{9}: a,c,d,e
{7,9}:a,c,d,e{7,9}:a,c,d,e
{2,7,9}: a,c,e{2,7,9}: a,c,e
{2,9}: a,c,e{2,9}: a,c,e
a : 2,5,6,7,9c: 2,7,8,9d: 7,9
a : 7,9c: 7,9d: 7,9
a :1,2,5,6,7,9b: 2,3,4,5c: 1,2,7,8,9e: 2,7,9f: 2
a : 7,9b: c: 7,9e: 7,9f:
![Page 39: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/39.jpg)
頻出集合の問題点頻出集合の問題点
• 面白い頻出集合を見つけようとすると、 θ を小さくする必要がある 大量の頻出集合が出てくる
• 情報を失わずに、頻出集合的な、数の少ないものを 見つけるようにモデルを変えたい
1. 極大頻出集合:他の頻出集合に含まれない頻出集合
2. 飽和集合:出現集合が等しいものの中で極大なもの
111…1
000…0
![Page 40: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/40.jpg)
極大頻出集合と飽和集合の例極大頻出集合と飽和集合の例
• 頻出集合を出現集合で分類
1,2,5,6,7,92,3,4,51,2,7,8,91,7,92,7,92
T =
3つ以上に含まれるもの{1} {2} {7} {9}
{1,7} {1,9}
{2,7} {2,9} {7,9}
{1,7,9} {2,7,9}頻出飽和集合
極大頻出集合
![Page 41: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/41.jpg)
極大頻出集合と飽和集合極大頻出集合と飽和集合
• 多項式時間で列挙できるかどうか、未解決 • クリークと同じように枝刈りをすると、高速に列挙で
きる • 数が少ないが θ による解のぶれが大きい
両者とも、1つあたりほぼ定数時間、 1秒間に 1~ 10万個
両者とも、1つあたりほぼ定数時間、 1秒間に 1~ 10万個
極大頻出集合極大頻出集合
• 逆探索という探索手法で多項式時間列挙可能• 離散アルゴリズムと末広がり性を用いて、高速列挙可能 • 出現の意味で情報の損失がない • ノイズが多いと出現集合が等しいものが少なくなり、
解の減少効率が悪くなる
• 逆探索という探索手法で多項式時間列挙可能• 離散アルゴリズムと末広がり性を用いて、高速列挙可能 • 出現の意味で情報の損失がない • ノイズが多いと出現集合が等しいものが少なくなり、
解の減少効率が悪くなる
飽和集合飽和集合
![Page 42: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/42.jpg)
飽和集合の列挙手法飽和集合の列挙手法
• 頻出集合列挙ベース - 頻出集合列挙アルゴリズムをベースに、多少無駄な
計算を省く - 飽和集合のよさが出ない。計算時間の改善も少ない
• 保存 + 枝狩り - 見つけた解を保存し、それを用いて無駄な分枝を刈
る - 計算速度はまあまあ - 解保存のためにメモリを使用し、それがひとつのネック
• 逆探索 + データベース縮約 - 計算効率が良い - 解保存用のメモリが不要
![Page 43: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/43.jpg)
飽和集合の隣接関係飽和集合の隣接関係
• 飽和集合から、添え字の大きい順に要素を抜いていく
• どこかで出現集合が大きくなる • その出現集合の飽和集合を求める • こうして求めた飽和集合を、親とする (一意的に定ま
る)
• 親の頻出度は必ず真に大きいので、親子関係は非巡回的 親子関係は有向根付き木を導出する
![Page 44: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/44.jpg)
逆探索逆探索
親子関係は有向根付き木を導出する
この木を深さ優先探索すれば全ての解を見つけられるこの木を深さ優先探索すれば全ての解を見つけられる
• 探索には、子供を見つけるアルゴリズムがあれば十分• 子供が1つあたり多項式時間で見つかれば、全体も多項式時間
(親に要素を1つ加えて極大をとった飽和集合が子供になる)非巡回的な親子関係と、子供を見つける多項式時間アルゴリズムがあれば、なんでも多項式時間列挙ができ
る
非巡回的な親子関係と、子供を見つける多項式時間アルゴリズムがあれば、なんでも多項式時間列挙ができ
る
![Page 45: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/45.jpg)
φ
1,7,9
2,7,9
1,2,7,9
7,9
2,5
2
2,3,4,5
1,2,7,8,9 1,2,5,6,7,9
親子関係の例親子関係の例
• データベースの全ての飽和集合とその親子関係
出現集合が隣接親子関係
1,2,5,6,7,92,3,4,51,2,7,8,91,7,92,7,92
T =
![Page 46: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/46.jpg)
実験結果実験結果
• 実データからとった、著名なベンチマーク問題でテスト
• 項目数は 1 万 ~ 100 万 • 属性数は 1000 ~ 1 万
データ種別 POS クリック Web 閲覧 顧客 単語
項目数 51 万 99 万 7.7 万 8.8 万 6 万
データサイズ 330 万 800 万 31 万 90 万 23 万
出力数 460 万 110 万 53 万 37 万 100 万
計算時間 80 秒 34 秒 3 秒 3 秒 6 秒
Pen. M 1GHz256MB メモリ
単純なスキャンは 1秒で 100パターン程度
![Page 47: データマイニング](https://reader035.vdocuments.mx/reader035/viewer/2022062717/56812a5d550346895d8dc7fd/html5/thumbnails/47.jpg)
まとめまとめ
• データマイニングの定義と動機付け (データから情報を自動的に吸い出す)• 自動学習 (データから機械的に知識を獲得)• 決定木 (メタヒューリスティックで解く)• サポートベクターマシン (線形計画で解く)• 頻出パターン (列挙で解く) アソシエーションルール データベースの比較