完全ランダム木のアンサンブルによる確率密度推定

Qiita Advent Calenderに記事書いた。完全ランダム木をアンサンブルした学習器で、すべてのサンプルが一つずつ最終ノードに入るまで木を生い茂らせ、その深度を基にそのデータが生まれてくる確率密度を推定してやろうというもの。会社で下記の本の読み会や…

【論文】Graph Convolutional Networks for Classification with a Structured Lebal Space

今回はGraph conv層を持つネットワークを使って、分類問題におけるラベルがグラフ構造を持っている場合に有用であろうという分類器についての話。[1710.04908] Graph Convolutional Networks for Classification with a Structured Label Space 【感想】 ・G…

【論文】Squeeze-and-Excitation Networks

読んだ論文をアウトプットしていく。[1709.01507] Squeeze-and-Excitation Networks ・Feed-Foward なネットワークでAttention機構を持たせる ・チャネル間の相互関係性を考慮 ・Channel-wiseな非線形な相互関係性を学習するために、小さいNNを挟んでるイメ…

KerasでCifar10分類、とりあえずCNNのAlexModelで

GPUマシンが使えるようになったので、Kerasで用意されているデータセットの中にcifar10があったので学習・分類してみた。 モデルはcifar10の作成者でもあり、ILSVRC2012優勝者でもあるAlex Krinzhvskyさんの優勝時のモデルがベース。 モデルの構成について深…

確率的勾配法あれこれまとめ

Kerasで選択できる最適化アルゴリズムそれぞれの違いと使い所がいまいちわからんかったので調べてみた。 Incorporating Nesterov Momentum into Adamがアルゴリズムを整理してくれているので理解しやすかった。とりあえずざっくりと俯瞰した感じだと、いかに…

CODE COMPLETE 第2版 を読んで

『CODE COMPLETE 第2版 上』、『CODE COMPLETE 第2版 下』を読み終えました。CODE COMPLETE 第2版 上 完全なプログラミングを目指して作者: スティーブマコネル,Steve McConnell,クイープ出版社/メーカー: 日経BP社発売日: 2005/03/26メディア: 単行本購入: …

CodingBatでアルゴリズム100本ノック

これまでの自分のプログラミングは機械学習周辺に偏っていて、コンピューターサイエンスやったことある人間が通ってくる基本的なアルゴリズムについての知識が足りていないとの指摘を受けたので、その部分を埋めるためにCodingBatにチャレンジしてみた。Codi…

Scikit-learnのpipeleine.Pipelineが便利

分析する際に、次元圧縮→分類のような流れで行う場合には、scikit-learnのPipelineが便利。特にハイパーパラメーターを探すときには手続が煩雑になることもありますが、まとめて分類器としててGridSearchCVに突っ込むだけで良いのでめんどくさいこと考えずに…

Spark MLlibの協調フィルタリングを活用したMovie Recommendation

Sparkを触る機会が増えてきてるので、知識の棚卸しを兼ねてMLlib使ってレコメンデーションシステムを実装してみました。SparkSamit2014などMLlibのチュートリアル的に色々使われているSparkのMovie Recommendationですが、edXのIntroduction to Big Data wit…

Spark MllibでのClick through rate(CRT) 予測

1年以上も前ですが、edXのScalable Machine learningを受講していた時のコードが出てきたので、見直してみました。この講座のネタが、KaggleのCriteoのコンペのデータ を基にしたCTR予測でして、One-hot-encodingやhushingした高次元のデータを Mllibのロジ…

時系列解析① ARモデル

時系列データの解析を二つのデータに対して実施します。 基本的には、RawDataの確認、トレンドと季節性の排除、モデルのフィッティングの順にやっていきます。 データ①simulated data Rで生成したデータについて分析してみます。 データを作成するコードは下…

OLS、リッジ回帰、ラッソでのパフォーマンス比較

OLS、特徴選択、リッジ回帰、ラッソの4つの方法でTrainデータからモデルをFittingし、Testデータを用いて、平均2乗誤差(MSE)を推定して比べるといったことをします。 まずはデータの準備 データはStanford大学の統計学部からprostateのデータをダウンロード…

PRML 7章 サポートベクトルマシン

パターン認識と機械学習、第7章「Sparse Kernel Machines」に入ってSVMの実装をしてみます。 図7.2の再現を行うにあたり、カーネルがガウジアンカーネルが選択されているようなので、今回の実装もこれに従います。いつも通り境界面の求め方など、SVMそのもの…

【論文メモ】人間を理解するためのロボティクス

石井加代子 (2007). 人間を理解するためのロボティクス. Cognitive studies 14(1), 11-30, 日本認知科学会 (https://www.jstage.jst.go.jp/article/jcss/14/1/14_1_11/_pdf) 「全ての作業をプログラムす ることは不可能であるから,ロボットが作業…

PythonでXGBoostをちゃんと理解する(3) hyperoptでパラメーターチューニング

xgboostのハイパーパラメーターを調整するのに、何が良さ気かって調べると、結局「hyperopt」に落ち着きそう。 対抗馬はSpearmintになりそうだけど、遅いだとか、他のXGBoost以外のモデルで上手く調整できなかった例があるとかって情報もあって、時間の無い…

PythonでXGBoostをちゃんと理解する(2) ライブラリ作者から学ぶ

XGBoostについて調べてたら、開発者本人から学ぶ的な動画があったので観てみた。www.youtube.com時間にして約1時間半、英語が苦手でなくて時間がある方は直接見て頂くと面白いかも。目次はこんな感じ。 ・Introduction ・Basic Walkthrough ・Real World App…

Pythonで実装 PRML 第5章 ニューラルネットワーク

PRML5章から図5.3を再現するために、ニューラルネットワークを実装してみます。 先に申し上げておきますと、偉そうに実装とか言ってるものの、コードから再現した図は歯切れの悪いものとなっております。。。まず、図5.3(b),(c),(d)に関してはPRMLの中の図に…

PythonでXGBoostをちゃんと理解する(1)

なんせ、石を投げればxgboostにあたるくらいの人気で、ちょっとググれば解説記事がいくらでも出てくるので、流し読みしただけでなんとなく使えるようになっちゃうので、これまでまとまった時間を取らずに、ノリと勢いだけで使ってきた感があります。が、腹に…

Pythonで実装 PRML 第4章 パーセプトロンアルゴリズムによる分類

前回に続いてパターン認識と機械学習、第4章「線形識別モデル」の図4.7の再現です。この図はパーセプトロンアルゴリズムでの分類が収束する様子を表したもので、右下の図で収束完了となってます。本当は特徴空間上での話なのですが、作図の都合上、となる恒…

Pythonで実装PRML 第4章 最小二乗法とロジスティック回帰による識別

パターン認識と機械学習、第4章「線形識別モデル」に入って図4.4、図4.5の再現を行います。まずは4.1.3の最小二乗法による識別ですが、ノイズが混ざると上手く分類できない点、多分類になると上手く機能しない点が図の4.4、4.5で説明されてます。 また、4.3.…

Pythonで実装 PRML 第3章 ベイズ線形回帰

パターン認識と機械学習、第3章からベイズ線形回帰が予測分布を収束させていく様子を再現します。 やっていることは、1章でやったベイズ推定とほぼ一緒で、基底関数がガウス関数(3.4)になっているだけです。 ですので、コードもほぼほぼ流用してます。1章と…

Pythonで実装 PRML 第2章 確率分布 ノンパラメトリック手法

パターン認識と機械学習、第2章からは「2.5.2 ノンパラメトリック手法」を実装します。取り出してきたデータの数を数え上げて、確率分布を把握する手法が紹介されてます。 この章はあんまり時間かけてもしょうが無いなと感じたので、さくっと実装。 カーネル…

Pythonで実装 PRML 第1章 ベイズ推定

前回に続いて、PRML1章から「1.2.6 ベイズ推定」の実装です。 図1.17の再現ですが、M=9とした上で、予測分布の平均と±1σの範囲を示しています。数式追ってるだけだと抽象的で、いまいちピンと来なかったんですが、 実装することで、(1.70)、(1.71)が分布を示…

Pythonで実装 PRML 第1章 多項式曲線フィッティング

パターン認識と機械学習、第1章から「多項式多項式曲線フィッティング」の図の再現に取り組んでみます。 早速図1.4の再現から行ってみたいと思います。また、データの数を増やすことで、予測の正確性が増すことの確認を図1.6で行っています。数学的にも実装…

PuLPを使った線形計画法(Linear Programming)

カーネルやら何やらを理解するために、非線形計画法を勉強中。 で、その前に線形計画法で実際に手を動かしたくなったので無償で使えるPuLPを使ってみた。今回例題として解いたのは「これならわかる最適化数学」の第6章、線形計画法。 似たような例題がいくつ…

ハッシュとカーネル

最近Spark使ってて特徴量減らしたいよねってなった時に、 Future Hashingを漠然と使ってたけど、気になったかた勉強。 Hash Trickの前にKernel Trick どっか違う空間に写像するってことで似てるけど、若干用途が違うカーネルトリックから。 線形空間では分離…

PysparkのMllibでリッジ回帰

作ったPysparkの環境でMap関数の練習リッジ回帰やってみました。元ネタはedXのこの講義↓ Scalable Machine Learning | edXデータはMillionSongDatasetから取得できます。で、結果から先に書きますと、Default値含めてGridsearchしたにも関わらず、 Default値…

Pysparkでテキストマイニング第一歩 on Amazon EMR with Jupyter notebook

SparkをAmazon EMRに乗せてみたので備忘録的に。といってもめちゃくちゃ簡単だった。他にはローカルでSpark立ててしまう、AmazonEC2使うとか選択肢あったけど、 価格見ても高くないし、いつか本格的に使うことを想定して、EMRでの予行演習的な位置づけ。下記…

scikit-learnで機械学習:決定木(2)

前回の続きで、Scikit-learnの決定木を使ってみます。ここから先は難しいことは何もなくて、本家に従いながら走らせてみる。もろもろimport。 import numpy as np import pandas as pd from sklearn import datasets from sklearn import tree from sklearn.…

VagrantとVirtualBoxで環境構築

「なんでこっちで動いて、そっちで動かんねん」を解消するために環境構築備忘録。VirtualBox:オラクルが提供しているx86仮想化環境ソフトウェア・パッケージ Vagrant:開発環境の管理ツール。 この二つ組み合わせて、みんなで同じ環境を構築&共有。 色んな…