読者です 読者をやめる 読者になる 読者になる

ushi-goroshiの雑記帳

統計や機械学習の話題を中心に、思うがままに

遺伝的アルゴリズムで変数選択を行うパッケージ

遺伝的アルゴリズム(GA)をRで実行するためのパッケージを探していたら、GAによる変数選択という非常に興味深いものを発見した。パッケージ名はGALGO。Genetic Algorithms to solve Optimization problemsらしい。早速使ってみたが、インストールに少し手間取ったので備忘として残しておく。

初めに成功したパターンを記載する。基本的にこちらのページに書いてある通りで良い。

Galgo For R 3 | Cátedra

"R.oo"や"R.methodsS3"、その他の必要なパッケージを予めインストールしておき、ダウンロードしておいたgalgo_1.2.tar.gzをソースからインストールするだけ。
CRANではなくソースからインストールする場合は、ソースが置いてある場所までsetwdした後に

install.packages("galgo_1.2.tar.gz", repos=NULL, type="source")

とすれば良い。


では何に手間取ったかというと、「galgo r example」などでGoogle検索した際にトップに表示される下のページ:

Supplementary Material - GALGO: An R Package For The Development Of Multivariate Statistical Models using a genetic Algorithm based variable selection strategy

こちらに記載されている通りに進めると、古いバージョンのgalgoがリンクされていることから.tar.gzの中にNAMESPACEファイルが存在していないため、一度解凍したのちにNAMESPACEファイルを作成して再び圧縮する必要がある。

tar -xvf galgo_1.0-10.tar.gz
cd galgo
echo 'exportPattern( "." ) > NAMESPACE
cd ..
tar -zvf galgo_1.0_10mod.tar.gz galgo

こんな感じ。
ここまで進めて、さぁインストールするぞ!と思ってinstall.packages()を実行すると、エラーの嵐でインストールできない。Rのバージョンの問題なのかもしれないが未解決。

その後、再度他のページを探した結果、最初に紹介したページに行き着いてインストールが無事にできた。使用感はいずれ。

母数の意味

母数という言葉は誤用が多々あるように思います。例えばデータの大きさの話をしている際に「このデータは母数が小さいから~」「十分な母数を確保して~」みたいな言い方をする人をよく見かけるのですが、統計学において「母数」とは「パラメータ」と訳し、確率分布の形を特徴づける定数を意味します。正規分布であれば\mu\sigma^{2}がそれにあたります。先ほどの例の場合は「標本サイズ」の方が適切でしょう。

別に統計に携わる人でないなら気にならないのですが、統計解析のプロならそのあたりの専門用語は正しく使いたいですね。

決定係数についての諸注意

決定係数R^2は線形回帰分析においてモデルの精度を表す指標の一つで、1に近いほど良いモデルであるとされます。またこのR^2は相関係数rの二乗で求めることがあります。
しかしこれらの説明は必ずしも正しいとは言えないため、注意が必要です。

続きを読む

不偏分散をn-1で除して求める理由

統計の勉強を始めた時、初めに躓きそうな内容として不偏分散があります。要するに標本集団から分散を求める際は、平均を推定した分の情報量の減少を加味するために、標本サイズではなく自由度で割りましょうという内容です。このとき、「平均を推定する際に標本からデータ1つ分の情報が使用されているため、分散を求める際はnではなく(n-1)で割る」と教えられるでしょう。

言葉で教えられると結構あっさりとしているのですが、数式できちんと追っていくとこれがなかなか大変です。以前に勉強した時のメモが出てきたので、texを思い出しながらおさらいしてみます。

続きを読む

データ分析にあたっての参考書籍

データ分析に興味を持ち始めた方から、参考となる書籍についての質問を受けることがあります。統計や機械学習、データ分析に関する本は世に溢れているので、どれを読めばよいか困りますよね。そんな時にいつもお薦めしている本が2冊あります。

統計学入門

isbn:9784130420655

東京大学が出版している統計学の教科書です。
内容が非常にしっかりしているため、統計学の基礎から勉強したい人に特にお薦めです。

②データ解析のための統計モデリング入門

isbn:9784000069731

こちらはフリーの統計解析ソフトRを用いて、一般化線形モデルというモデリング手法を解説しています。内容を理解するのは少し困難かもしれませんが、この本に記載されている内容を理解できれば、世のデータ分析プロジェクトの半分ぐらいは対応できるようになると思います。なおこの本はRでのコーディングという、どちらかと言えば実践的な面に重きを置いています。もう少し理論的な面から一般化線形モデルを理解したいという方には、以下の本もお薦めです。

③一般化線形モデル入門

isbn:9784320018679

内容はかなりハイレベルですが、一般化線形モデルを学ぶ上で最良の教科書とも言える一冊です。この本を読むと、一般化線形モデルがなぜ正規・二項・ポアソンなどの一部の分布に限られるのかが理解できます。また一般化線形モデルの枠組みを導入することでこれらの分布を無理なく統一的に扱えるようになり、重回帰以外の回帰を学ぶ上で非常に理解が容易になります。
さらに、最近読んだ本の中では圧倒的・感動的に素晴らしい本がありました。かなりエンジニア向けですがご紹介。

④データ分析プロセス

isbn:9784320123656

データ分析は「難解なアルゴリズムを大量のデータに適用し、人が検知できない複雑なパターンを発見する」という一見して華やかな作業のように思えるかもしれませんが、実際には作業全体の8割ぐらいをデータの加工に費やしたりします。その加工手順について詳細に記した資料はあまりなく、またそれぞれ独自の流儀があったりするのですが、この本はそういった種々の「データ加工」について非常に多くの文献を紹介しつつ解説を行います。自分で手を動かしながらデータ分析の一連のプロセスについて理解したい、という人に大変お薦めです。

以上、統計やデータ分析を学ぶにあたっての参考となる書籍の紹介でした。

Google's R style Guide

プログラミングは人によって色々と「お作法」が異なっているため、他人の書いたコードを見ると非常に勉強になったり、はたまた困惑したりします。
個人の趣味や絶対に他人が関わらない範囲であれば構わないのですが、チームでプロジェクトに入った時などは、保守/引き継ぎの観点からも可読性を高めておくことが重要です。

そこで下記。
こちらはRを使ったプログラミングを行うときのGoogleのルールだそうです。
Rguide.xml

私もこちらを参考にしています。

60 R Language Tips

RであれPythonであれ、プログラミング言語というのは多くの人がハマりがちなポイントがありますよね。そのようなときは先人の残した知恵に頼るのが良い解決策であり、Tipsが集積された資料があると大変うれしいですね。というわけでこれ。

60 R Launguage Tips
rstatistics.net

特にTip 1はRで使用可能な変数型によるトラップ(?)についての解説ですが、非常によくハマるポイントで私もいまだに引っかかります。これまで数値・文字列・日付型ぐらいしか扱ったことがない方は、Rを使うときはよく注意したほうがよいですよ。