Rでローデータの読み込み(データフレーム、data.table、webデータの取得)

Rを使ったデータ前処理の方法を解説する。 データフレーム形式だけでなく、大きなデータを扱うのに高速なdata.tableを使ったデータの前処理の方法も解説する。 まず一般的にデータの前処理の手順は以下のようなものである。 ローデータの読み込み データの整形(分析用データセットの生成。データの持つ情報は保持) データの型確認 必要な(分析対象とする)列の抽出 列名の変更 データ変換 データの型変換 日時データの生成 因子データの生成(ordered) データクリーニング(正しく分析できるように必要に応じて情報を一部削る) 行の削除(抽出) 行の並べ替え(ソート) 標準化(scale) 欠損値処理…

Continue reading →

Rの細かいTipsまとめ(小さいTipsの寄せ集め)

独立した記事にはならないが、それぞれ便利かつ重要な小さなRのTipsを紹介。 RのデータフレームとPandasのデータフレームの間でデータをやり取りする RとPythonの間でのデータをやり取りするとき、CSVファイルではなく変数の型などを内包したデータフレームで直接やりとりできると便利。 これを実現するのがFeatherというライブラリ。 インストール Rで install.packages(‘feather’) Pythonで pip install feather 使う Rで require(feather) write_feather(iris, ‘iris.feather’) # 書…

Continue reading →

Rの関数定義でNSEを使う(表現式を引数にとれるようにする)

NSEとは NSEとはNon-standard evaluationの略。 関数に対して値を与えるのではなく、表現式(expression)を与えて処理させる方法。 言葉にするとわかりにくいので、具体例で。 NSEを使う局面 やりたいこと たとえばデータフレームcustomer.df内の f_purchaseとdurationという列に対して処理をする関数myfun()を作りたい場合 直感的には myfun(customer.df, f_purchase, duration) という引数の与え方をしたい。これがRのもっとも自然なコーディングである。 たとえば glm(f_purchase ~ …

Continue reading →

Rでクラスター分析〜距離行列の生成からクラスタリングまで

クラスター分析は 距離行列の生成(類似度行列ではない!) クラスタリングの実行 という流れになる。 それぞれのステップで、採用する 距離の種類 クラスタリングの方法 がチューニング変数となる。 この順に手順を見ていく。 行数、列数の多いビッグデータ向きのデータ形式であるMatrixパッケージに対応した距離行列についても説明する。 距離行列を生成する 類似度行列ではなく距離行列を作る。similarityではなくdistanceを作る。 直感的にはデータから距離の指標(どれだけ離れているか)ではなく類似度(どれだけ近いか)の指標を抽出し、そこからクラスタリングしたいケースが多いのだが、あくまで類…

Continue reading →

Rにおける代表的な一般化線形モデル(GLM)の実装ライブラリまとめ

一般化線形モデル(GLM)は統計解析のフレームワークとしてとにかく便利。 Rでもビルトインの関数から拡張までさまざまなライブラリから提供されている機能だが、 さまざまなライブラリがありすぎてどれを使えばいいのかわかりにくいのと、 さらに一般化線形モデル(GLM)自体にもいろいろな亜種があるため、 どの手法をどのライブラリの関数で実装すればいいかわからなくなる。 そこでRに実装されている代表的なGLM系の関数と特徴についてまとめてみた。 一般化線形モデルのおさらい 一般化線形モデルとは $$ y = g^{-1}(\alpha + \beta_1 x_1 + \beta_2 x_2 + &#82…

Continue reading →

Rで決定木分析(rpartによるCARTとrangerによるランダムフォレスト)

準備 決定木(decision tree)分析をする際、まず目的変数の種類とアルゴリズムを決定する。 アルゴリズム CART CHAID ID3 / C4.5 / C5.0 目的変数の型 目的変数の型によって扱いが変わる 質的変数(2値変数):分類木→目的変数が0/1, T/Fの場合はas.factor()でfactor型にデータ変換しておく 量的変数:回帰木 survivalオブジェクト (生起を表す2カラム) CARTはすべて対応、C4.5/C5.0は質的変数のみ ここではCARTアルゴリズムでツリーモデルを生成するrpartと、ランダムフォレストrangerを中心に説明する。 データセッ…

Continue reading →

一般的なDBに慣れてきた人がBigQueryを扱う際にハマりやすいポイント(Legacy SQL編)

一般的なSQLに慣れてきた人がBigQuery(Legacy SQL)を使う際によくハマるポイント、 特にGoogleアナリティクス360(旧Googleアナリティクスプレミアム)が出力するログデータを扱う場合に直面する問題を中心に解説する。 Googleアナリティクス360のログデータはBigQueryの特徴的なところを嫌というほど満載している。 ということで、これを扱えれば大概の問題には対応できるようになるだろう。 なおLegacy SQLに限定した話。Standard SQLは未検証。 言語個別の仕様 ネストされたデータ形式 BigQueryでは各レコードの1個のカラムに複数の値、つまり…

Continue reading →

回帰分析とその派生手法、数理モデリング、発展的な統計解析手法

いわゆる回帰分析に代表される数理モデリングとその種類を説明していく。 数理モデリング 数理モデリングの考え方 因果関係を定量化 「Xという要因→Yという結果」という関係を $$Y=a+bX$$ で表す。 X=説明変数(独立変数) Y=被説明変数(従属変数、目的変数) いわゆる「回帰分析」である。 目的 因果関係とインパクトの大きさの特定 予測 モデリングの手続き モデル式の選択(単回帰、ロジット、…) 従属変数の特徴(分布の形状、ばらつき方)によって適切なモデルを選択する パラメータの推定 さまざまな推定法がある(最尤法、最小二乗法) そのモデルでいいか検証 あてはまりのよさ(fit) 決定係…

Continue reading →

比較のための統計解析手法~さまざまな仮説検定から分散分析、多重比較

分析手法 目的とデータの性質に基づいて手法を選択 目的 違いがあるか知りたい=A/Bテスト (因果)関係を知りたい=何が効くかを知りたい 予測 分類 従属変数があって、それを分類するもの(クラス分類) 独立変数のみで、似ているものをまとめるもの(クラスタリング) レコメンド データの性質(手法の前提条件) 離散か連続か 正規性 等分散性 従属変数の分布の形状 http://readingmonkey.blog45.fc2.com/blog-entry-262.html 仮説検定 仮説検定とは? 基本的に比較するための方法 「A/Bテスト」→理論的に正確な手順がある。 ※比較する対象は2つ。3つ…

Continue reading →

機械学習の種類と特徴、ビジネスにおけるデータ分析の意味

機械学習 「明示的にプログラムしなくても学習する能力をコンピュータに与えること」 つまり1から10までをプログラムしなくても、与えられたデータに基づいてコンピュータが学習し、賢くなっていくようにすることである。 具体的には適切な分類、予測、レコメンド、異常検知を行う。 また複数の選択肢から適切な選択を行わせるものもある。 学習の仕方による分類 教師あり学習 材料のデータと答えのデータを与えることで、正解率を高めていくものである。 さまざまな要因のデータと、それに基づいて実際に発生した結果のデータがあって、要因から結果を分類/予測するケース。ここでは結果が教師データになる。 たとえばEメールの本…

Continue reading →