TED Talks「Meg Jay: Why 30 is not the new 20」

TEDを眺めていたら,なんか感じるものがあったので,忘れないうちにブログへembedded.

大学院に進学して就職が遅くなっていて,確かにいろんな問題を先送りにしている感じはあるから,結構感じることは色々.

20代はあと7年弱しかないってマジですか…

scikit-learnによる特徴選択

お盆ですな 昨日書いたの続き

satuma-portfolio.hateblo.jp

Motivation

  • 特徴選択がやりたい
  • Wekaはお手軽
  • でも僕はPythonでやりたい

ソースコード

さすがscikit-learn.めちゃシンプルにできた. 対象とするデータはirisデータセット ( UCI Machine Learning Repository: Iris Data Set )

詳細

scikit-learnでの特徴選択に関する関数はsklearn.feature_selectionに含まれている.今回は特徴量にランキングを付けて,そのランキングの上からk個を採用するというsklearn.feature_selection.SelectKBestを採用*1

次にランキングをつけるための評価関数を設定する必要がある.今回は相互情報量に基づいてランキングをつけるmutual_info_classifを採用*2

あとはSelectKBest(選択した評価関数, k=ベストいくつか).fit(データ行列, ラベル)とすればOK. もし,どの特徴を採用したか知りたい場合は,get_support()関数を使うことでboolean配列として取得することができる.

最後に

  • wrapper法がない..?
    • sklearn.feature_selection.SelectFromModelがwrapper法か?と思ったけど,なんか違う…
  • 「wrapper法はそんな難しくないんだから自分で組め」というアレなんだろうか…?

*1:他のものは API Reference — scikit-learn 0.19.0 documentation を参考に.多分Selectとついてるものが選択関連

*2:他のものは API Reference — scikit-learn 0.19.0 documentation を参考に.多分小文字で始まっているものが評価関数

機械学習ソフトウェアWekaの使い方のメモ

なんだかんだ初投稿からかなり時間が経っていた()

Motivation

  • 特徴選択の話をかじり始め,とりあえず従来手法をサクッと試したかった
  • そこでJavaで作られたフリーのソフトウェアwekaを使うことを思いつく
  • インストール込みで使い方をメモる

Wekaとは

Wikipediaでの記述では

Weka (Waikato Environment for Knowledge Analysis) は、ニュージーランドのワイカト大学で開発した機械学習ソフトウェアで、Javaで書かれている。GNU General Public License でライセンスされているフリーソフトウェアである。 – Weka - Wikipedia

とのこと.公式のWebページを覗いてみると

Weka is a collection of machine learning algorithms for data mining tasks. The algorithms can either be applied directly to a dataset or called from your own Java code. Weka contains tools for data pre-processing, classification, regression, clustering, association rules, and visualization. It is also well-suited for developing new machine learning schemes. – Weka 3 - Data Mining with Open Source Machine Learning Software in Java

とのこと.前処理から結果の可視化まで一括してやりまっせって感じですね.

インストール

このへんを参考に.

最新ver.は3.8系.ただし,日本語化に対応しているのは3.6系の模様. とりあえず3.6系を入れました.

使い方

このへんを参考に

クイックスタート – Wekaの日本語情報 d.hatena.ne.jp d.hatena.ne.jp

特徴選択

このへんを参考に. http://www.weka-jp.info/archives/Weka_FeatureSelection-1.pdf

フィルタ法だと

  • Infomation Gain
  • ReliefF

という鉄板はもちろんありそう.

ラッパー法でも

  • Genetic Algorithm
  • Greedy Search(貪欲法)
  • 全探索

がありそう.まず取っ掛かりとして試すのは十分.

最後に

  • 鉄板のirisデータセットをはじめ,データセットもまあまああるのでサクッとはじめられそう
  • 自作アルゴリズムをインポートできるかな?
  • (実際,提案手法の実装はPythonでやりたいので,wekaは従来手法のチェックで終わりなんだけど…)
  • 次は本番で使うscikit-learnも漁る

そういえば

最近,CMA-ESのpure rank-μ updateだけ組んだ.main.pyでらくらくお試しできます. github.com

こっちの技術的背景というかInformation Geometric Optimizationの話も後でまとめたい. IGOフレームワークは今後,Bernoill分布にも対応させたいし,Gauss分布のほうでもCommulative Step-size Adaptationだったり,rank-1 updateだったり,学習率の自動調整だったり,やることはまだまだある.お星様付けてくれると悦びます.

Hello, Hatena!

はてなブログを作りました

はてなで書きたいこと

  • 本当にくっだらないメモ
  • twitterで書ききれないこと
  • サーベイのアウトプット

最後に

気まぐれ更新でどこまで続くか試して見ましょう