Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Japan.r 2データベース

0 views

Published on

  • Be the first to comment

Japan.r 2データベース

  1. 1. Japan.R:データベースゼロからはじめる(分析のため の)データベース入門 2011年11月26日 @sleipnir002
  2. 2. 今日はRの話は しません。
  3. 3. データベースの 話をします。
  4. 4. データベースを構築しよう!
  5. 5. データ管理に伴う問題 “R is not well suited to extremely large data sets.” (R Data Import/Export) CSVやExcelはファ一元管理しないと イルが膨大になり、不整合が起こる。 更新などに時間 がかかる。
  6. 6. データベースを構築して、快適な分析ライフを!
  7. 7. データベースが分析力をあげる• データが重要なのは言うまでもないだろう。よいデータがなけ れば始まらない。(トーマス・H・ダベンポート「分析力を駆使 する企業」)• データマイニングに要する時間の90%は、データの準備に費 やされる。一方、華やかなモデリングに費やされる時間は全 体の10%である。(豊田秀樹「データマイニング入門」)
  8. 8. データベース を構築すれば分析力が上がる
  9. 9. データベースって ?
  10. 10. DBの用語の整理• データベース(DB):構造化されて管理されているデータ• データベースマネージメントシステム(DBMS):データベースを管理するソフト• リレーショナルデータベースマネージメントシステム(RDBMS):リレーショナル 方式でデータベースを管理するソフト データベース= (R)DBMS= 情報そのもの データベース管理ソフト
  11. 11. DBMS• DBMSは量や性質に応じてさまざまな性質の ものがある。 構造化 RDBMS CSV データの量
  12. 12. で、どれを使えば いいの?
  13. 13. RDBMSおすすめ
  14. 14. RDBMSをお勧めする理由
  15. 15. 4.1 Why use a database? (R Data Import/Export)Database management systems (DBMSs) and, in particular, relational DBMSs (RDBMSs) are designed to do all of these things well. Their strengths are 1. To provide fast access to selected parts of large databases. 2. Powerful ways to summarize and cross-tabulate columns in databases. 3. Store data in more organized ways than the rectangular grid model of spreadsheets and R data frames. 4. Concurrent access from multiple clients running on multiple hosts while enforcing security constraints on access to the data. 5. Ability to act as a server to a wide range of clients. 大規模データ扱うならリレーショナルデータベース使おう。 高速にアクセスできる。集計が早い。Rと同じデータ形式。 複数ユーザからの一貫したアクセスが可能。 多くのクライアントに対応している。
  16. 16. RDBMS入門
  17. 17. RDBMSのR=リレーショナルとは?• データを表で格納して、結合によってほしい データを取得する。 DATE KOKYAKU SHOHIN SURYO KO... NAME KUBUN SEX ’10-09-31’ 1100 K-001 3 1100 新垣結衣 通常会員 1 ’10-09-31’ 1100 K-002 1 1200 小島陽菜 優良会員 1売上情報表 ’10-10-04’ 1200 K-009 1 顧客表 だれに何が売れたか? DATE KOKYAKU NAME KUBUN SEX SHOHIN SURYO ’10-09-31’ 1100 新垣結衣 通常会員 1 K-001 3 ’10-09-31’ 1100 新垣結衣 通常会員 1 K-002 1 ’10-10-04’ 1200 小島陽菜 優良会員 1 K-009 1
  18. 18. SQL 1of2• RDBMSを管理する言語 – CREATE TABLE:表の作成 • CREATE TABLE SHOHIN(ID INT, NAME VARCHAR(60)) – SELECT:データを取得する。 • SELECT * FROM SHOHIN; • WHERE:データを絞り込む – SELECT * FROM KOKYAKU WHERE ID =‘1100’; • JOIN:表を結合する(後述) • GROUP BY:データを集計する(後述)
  19. 19. SQL 2of2• RDBMSを管理する言語 – INSERT:データの追加 • INSERT INTO URIAGE(DATE, KOKYAKU, SHOHIN, URIAGE_KINGAKU) VALUES (’10-09-31’, ‘1100’, ‘K-102’, 1000); – UPDATE:データの上書き • UPDATE KOKYAKU SET KAIIN_KUBUN = ‘優良会員’ WHERE ID = ‘1200’; – DELETE:データの削除 • DELETE FROM KOKYAKU WHERE ID=‘1200’;
  20. 20. MySQLについて
  21. 21. MySQL• MySQLは世界でもっとも使われているオープン ソースのRDBMS• 技術的に枯れている• Windowsで簡単にインストール• とりあえず無料!• ツールがたくさん、インタフェースもたくさん• エンジンを変更できる(次頁)
  22. 22. MySQLはストレージエンジンを変 更できる• MySQLはストレージエンジンをチェンジできる。• 用途(ようと)におうじてエンジンチェンジでデー タベースを構築しよう!• データの分析用途ならMyISAMを使用しよう。
  23. 23. インストールするソフト• MySQLをRから使用するのに必要なインストー ルソフトは2つだけ。• MySQL Community Server – http://www-jp.mysql.com/downloads/mysql/• ODBC Connector – http://www-jp.mysql.com/downloads/connector/odbc/ 公式サイトよりダウンロード
  24. 24. MySQLの構成• MySQLはさまざまな要素から構成されている MySQL サーバー クライアントPC ODBC 索引 表 クライアントPC データベース データベース ビュー
  25. 25. MySQL簡単、MySQLオススメ
  26. 26. 分析のためのデータベース テクニック
  27. 27. RDBMSを使ったデータマイニング の流れ(オヌヌメ)1. ソースから分析用スキーマにデータを挿入2. 集計済みデータをテーブルもしくはビューとして保存3. Rからビューをデータ取得、エクセルファイルに出力、Rから 読み取る。 ソースシステムからデータをロード スタークエリーで集計 スタースキーマに変更する。 分析しやすい形でRにロード CSV
  28. 28. データモデリング• 分析する事象をRDBMS上でどのように表に表すか• どういう分析を行うかを定義する• 情報分析のためのデータモデリングのベストプラクティス→ス タースキーマ(次次頁) 正規化されたモデル スタースキーマ OLTP DWH 重複排除 重複 更新 参照 データ量: データ量:少 大
  29. 29. 例:化粧品会社の売上分析• 会員制の化粧品会社の情報系データベ ース売上分析を行う。• 顧客の情報を世代別に顧客表に管理• チャネルは店舗、電話通販、インターネッ ト等
  30. 30. スタースキーマでモデリングを行う • データをファクトとディメンジョンに分けて解析する。 • ファクト:分析したい対象、出来事を表す表 • ディメンジョン:分析するための軸を表す表 商品分類 タイプ 売上ファクト 売上という出来事 商品 チャネル 商品ディメンジョン 何が売れたかチャネルディメンジョン 売上金額どのように売れたか 売上数量 年齢 世代 日 顧客 月 年 時間ディメンジョン 顧客ディメンジョン 性別 いつ売れたか 誰に売れたか
  31. 31. スタースキーマのE-R図による可視化
  32. 32. RDBMSを使ったデータマイニング の流れ(オヌヌメ)1. ソースから分析用スキーマにデータを挿入2. 集計済みデータをテーブルもしくはビューとして保存3. Rからビューをデータ取得、エクセルファイルに出力、Rから 読み取る。 ソースシステムからデータをロード スタークエリーで集計 スタースキーマに変更する。 分析しやすい形でRにロード CSV
  33. 33. デモ:データのロード1.CREATE TABLEによるテーブルの作成2.LOAD DATA INTOによるデータのロード
  34. 34. デモ:スタークエリーでデータ取得• スタークエリー・・・スタースキーマでデータを 取得するためのSQLのお作法。#e.g.チャネル別の売上金額を分析する。 チャネルと売上金額の合計SELECT を取得する。 C.CHANNEL_MEI, CHANNEL表と売上表を結 SUM(URIAGE_KIN) 合FROM CHANNEL表のチャネルIDと URIAGE AS U, 売上表のチャネルIDが同じ CHANNEL AS C ものに限り、結合する。WHERE C.CHANNEL_ID = U.CHANNEL_ID GROUP BY 句はSUMを行うGROUP 単位を記述する。この場合 BY C.CHANNEL_MEI; はチャネル名でグループ化 する。
  35. 35. 定型の分析はビュー化しよう• ビュー・・・分析のSQLを保存する。保存 後は普通のSQLと同様に使用できる。#e.g.月別世代別の売上金額を分析をビューにする。CREATE VIEW NENGETSU_SEDAI_ANALYSIS ASSELECT CONCAT(J.NEN, J.TSUKI) AS NENGETSU, K.SEDAI AS SEDAI, チャネル別分析という SUM(U.URIAGE_KIN) AS URIAGE_KIN ビューを作成する。FROM URIAGE U, KOKYAKU K, JIKAN JWHERE 取得するデータのSQLを記 K.KOKYAKU_ID = U.KOKYAKU_ID AND 述する。 J.HI = U.HIGROUP BY NENGETSU, SEDAI; 作成後は普通にSQLの中に 埋め込める。SELECT * FROM NENGETSU_SEDAI_ANALYSIS;
  36. 36. さらに高度な話題として• 高速にデータにアクセスしたい – 索引・・・頻繁に集計する単位でファクトに索引を作成する。 – 外部キー・・・基本的には使用しない。 – パーティショニング・・・時系列でパーティション化が一般的。 – マートの作成・・・集計済みのデータを保持する。 – マテリアライズド・ビュー・・・ビューの結果を保存する。• データの管理 – バックアップ・・・データ量に問題がなければsqldumpで全部 バックアップを取る。 $ mysqldump –u root –p –databases [DBNAME]
  37. 37. RとMySQLの連携
  38. 38. デモ:パッケージRODBC1. MySQLのODBCドライバのインストール2. ODBCドライバの構成3. データベースの起動4. RODBCを使用してRからSQLを発行して、結果 セットをデータフレームに格納する。5. データフレームからマイニング用の行列を作 成する。
  39. 39. まとめ• どのようなソフトでもよいので、データベースを作っ てデータを一元管理しよう。• MySQLなら簡単にインストールできるので、まず MySQLでデータベースを作成してみよう。• スタースキーマを意識して、自分のデータモデルを 決定する。• RODBCを使用して、MySQLからRにデータをロードし てみよう。
  40. 40. 文献初めてのMySQLと文字化けhttp://pugiemonn.blog6.fc2.com/blog-entry- 727.htmlMySQLクイック・リファレンスhttp://www.bitscope.co.jp/tep/MySQL/quickMy SQL.html#doc1_id70

×