狠狠撸

狠狠撸Share a Scribd company logo
Japan.R:データベース
ゼロからはじめる(分析のため
  の)データベース入門
    2011年11月26日
      @sleipnir002
今日はRの話は
 しません。
データベースの
 話をします。
データベース
を構築しよう!
データ管理に伴う问题
      “R is not well suited to extremely large data sets.”
                    (R Data Import/Export)




                                                             CSVやExcelはファ
一元管理しないと
                                                             イルが膨大になり、
不整合が起こる。
                                                             更新などに時間
                                                                がかかる。
データベース
を構築して、快適
な分析ライフを!
データベースが分析力をあげる
? データが重要なのは言うまでもないだろう。よいデータがなけ
  れば始まらない。(トーマス?H?ダベンポート「分析力を駆使
  する企業」)
? データマイニングに要する時間の90%は、データの準備に費
  やされる。一方、華やかなモデリングに費やされる時間は全
  体の10%である。(豊田秀樹「データマイニング入門」)
データベース
 を構築すれば
分析力が上がる
データベースって
    ?
DBの用語の整理
? データベース(DB):構造化されて管理されているデータ
? データベースマネージメントシステム(DBMS):データベースを管理するソフト
? リレーショナルデータベースマネージメントシステム(RDBMS):リレーショナル
  方式でデータベースを管理するソフト



 データベース=             (R)DBMS=
      情報そのもの           データベース管理ソフト
DBMS
? DBMSは量や性質に応じてさまざまな性質の
  ものがある。
          構造化

           RDBMS




    CSV
                    データの量
で、どれを使えば
  いいの?
RDBMS
おすすめ
RDBMSを
お勧めする理由
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と同じデータ形式。
       複数ユーザからの一貫したアクセスが可能。
       多くのクライアントに対応している。
搁顿叠惭厂入门
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
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:データを集計する(後述)
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’;
惭测厂蚕尝について
MySQL
? MySQLは世界でもっとも使われているオープン
  ソースのRDBMS
? 技術的に枯れている
? Windowsで簡単にインストール
? とりあえず無料!
? ツールがたくさん、インタフェースもたくさん
? エンジンを変更できる(次頁)
MySQLはストレージエンジンを変
       更できる
? MySQLはストレージエンジンをチェンジできる。
? 用途(ようと)におうじてエンジンチェンジでデー
  タベースを構築しよう!
? データの分析用途ならMyISAMを使用しよう。
インストールするソフト
? MySQLをRから使用するのに必要なインストー
  ルソフトは2つだけ。
? MySQL Community Server
  – http://www-jp.mysql.com/downloads/mysql/

? ODBC Connector
  – http://www-jp.mysql.com/downloads/connector/odbc/




                         公式サイトよりダウンロード
MySQLの構成
? MySQLはさまざまな要素から構成されている


               MySQL
               サーバー
                                クライアントPC
                        ODBC



               索引
          表
                                クライアントPC
 データベース                データベース
               ビュー
MySQL簡単、
MySQLオススメ
分析のための
データベース
 テクニック
搁顿叠惭厂を使ったデータマイニング
     の流れ(オヌヌメ)
1. ソースから分析用スキーマにデータを挿入
2. 集計済みデータをテーブルもしくはビューとして保存
3. Rからビューをデータ取得、エクセルファイルに出力、Rから
   読み取る。
  ソースシステムからデータをロード   スタークエリーで集計
  スタースキーマに変更する。      分析しやすい形でRにロード

  CSV
データモデリング
? 分析する事象をRDBMS上でどのように表に表すか
? どういう分析を行うかを定義する
? 情報分析のためのデータモデリングのベストプラクティス→ス
  タースキーマ(次次頁)


 正規化されたモデル            スタースキーマ

              OLTP               DWH
             重複排除                重複
              更新                 参照
                                データ量:
             データ量:少
                                  大
例:化粧品会社の売上分析
? 会員制の化粧品会社の情報系データベ
  ース売上分析を行う。
? 顧客の情報を世代別に顧客表に管理
? チャネルは店舗、電話通販、インターネッ
  ト等
スタースキーマでモデリングを行う
  ? データをファクトとディメンジョンに分けて解析する。
  ? ファクト:分析したい対象、出来事を表す表
  ? ディメンジョン:分析するための軸を表す表

                                   商品分類
 タイプ             売上ファクト
                 売上という出来事   商品
       チャネル                         商品ディメンジョン
                                    何が売れたか
チャネルディメンジョン       売上金額
どのように売れたか
                  売上数量             年齢     世代
            日               顧客
       月
  年
           時間ディメンジョン   顧客ディメンジョン    性別
           いつ売れたか      誰に売れたか
スタースキーマの贰-搁図による可视化
搁顿叠惭厂を使ったデータマイニング
     の流れ(オヌヌメ)
1. ソースから分析用スキーマにデータを挿入
2. 集計済みデータをテーブルもしくはビューとして保存
3. Rからビューをデータ取得、エクセルファイルに出力、Rから
   読み取る。
  ソースシステムからデータをロード   スタークエリーで集計
  スタースキーマに変更する。      分析しやすい形でRにロード

  CSV
デモ:データのロード
1.CREATE TABLEによるテーブルの作成
2.LOAD DATA 滨狈罢翱によるデータのロード
デモ:スタークエリーでデータ取得
? スタークエリー???スタースキーマでデータを
  取得するための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;             はチャネル名でグループ化
                               する。
定型の分析はビュー化しよう
?     ビュー???分析のSQLを保存する。保存
    後は普通のSQLと同様に使用できる。
#e.g.月別世代別の売上金額を分析をビューにする。
CREATE VIEW NENGETSU_SEDAI_ANALYSIS AS
SELECT
 CONCAT(J.NEN, J.TSUKI) AS NENGETSU,
 K.SEDAI AS SEDAI,                       チャネル別分析という
 SUM(U.URIAGE_KIN) AS URIAGE_KIN         ビューを作成する。
FROM
 URIAGE U, KOKYAKU K, JIKAN J
WHERE                                    取得するデータのSQLを記
  K.KOKYAKU_ID = U.KOKYAKU_ID AND        述する。
  J.HI = U.HI
GROUP BY NENGETSU, SEDAI;                作成後は普通にSQLの中に
                                         埋め込める。
SELECT * FROM NENGETSU_SEDAI_ANALYSIS;
さらに高度な話題として
? 高速にデータにアクセスしたい
 –   索引???頻繁に集計する単位でファクトに索引を作成する。
 –   外部キー???基本的には使用しない。
 –   パーティショニング???時系列でパーティション化が一般的。
 –   マートの作成???集計済みのデータを保持する。
 –   マテリアライズド?ビュー???ビューの結果を保存する。
? データの管理
 – バックアップ???データ量に問題がなければsqldumpで全部
   バックアップを取る。 $ mysqldump –u root –p –databases [DBNAME]
搁と惭y厂蚕尝の连携
デモ:パッケージRODBC
1.   MySQLのODBCドライバのインストール
2.   ODBCドライバの構成
3.   データベースの起動
4.   RODBCを使用してRからSQLを発行して、結果
     セットをデータフレームに格納する。
5. データフレームからマイニング用の行列を作
   成する。
まとめ
? どのようなソフトでもよいので、データベースを作っ
  てデータを一元管理しよう。
? MySQLなら簡単にインストールできるので、まず
  MySQLでデータベースを作成してみよう。
? スタースキーマを意識して、自分のデータモデルを
  決定する。
? RODBCを使用して、MySQLからRにデータをロードし
  てみよう。
文献
初めてのMySQLと文字化け
http://pugiemonn.blog6.fc2.com/blog-entry-
  727.html
MySQLクイック?リファレンス
http://www.bitscope.co.jp/tep/MySQL/quickMy
  SQL.html#doc1_id70

More Related Content

Japan.r 2データベース