scikit-learn

matplotlib

機械学習のテストセットとして有名なアヤメデータについて。

Pythonのscikit-learnにも付属しています。


SVMでIrisデータを分類するプログラムについては、例えば、以下のページに記載されています。プログラムを参考にしてしまおう…。

上記ページに記載されていたプログラムを実行するにあたり、anacondaで環境を作成したあと、scikit-learnとmatplotlibとをインストールしたことを備忘録として追記しておきます。

二値分類を行う学習器(例えば、SVM)を用いて、多クラス分類を行う場合の手法について。

クラスがn個ある場合…

  • one-versus-rest
    • あるクラスに属するデータと、それ以外のデータとを分類する学習器を作成する。学習器はn個。
  • one-versus-one(ペアワイズ)
    • あるクラスと属するデータと、別のクラスに属するデータとを分類する学習器を作る(例えば、クラスA vs クラスB、クラスB vs クラスC、クラスC vs クラスA)。学習器はn(n-1)/2個。あるデータがどのクラスに属するかは、多数決。

参考

簡単なところでは、ベルヌーイ分布(Bernoulli)→各確立変数が独立である場合は二項分布(Binomial)→二項分布において、np=λと仮定して、nを無限大に飛ばしてたのがポアソン分布(Poisson)

二項分布からポアソン分布の導出は、二項分布から Poisson 分布の導出が詳しいです。


ところで、「二項分布から Poisson 分布の導出」が掲載されているこちらのサイトはとても参考になりそうです。

初心者用 テイラー展開解説について、更に超初心者である私が、読みながら書き連ねたメモを…。

もともとは、(1.0007)^{15}を求めたい、という問題。

これを、f(x) = x^{15}としたとき、f(1.0007)の値を求めるという問題であると捉える。

ここで、1.0007は1にとても近いので、a=1とすると、(x-a)は微小であるといえる。したがって、aの周りでテイラー展開をする。

ここで、テイラー展開によって、f(x)f(a) + f'(a)(x-a)の式に一次近似をする。

f(a) = f(1) = 1^{15} = 1であり、f'(a)(x-a) = f'(1)(1.0007 - 1) = 15(0.0007)。したがって、f(1.0007) \sim 1 + 15 \times 0.0007となり、「1.0007の15乗は、だいたい 1 + 15かける0.0007だから、1.0105くらい」という冒頭の一次近似の話につながる。


aの周り」でいうところのaというのは、実際に求めたい変数の値に近い値。また、「aの周り」というキーワードによって、近似式は(x-a)のべき乗の項を含む形とすることが表される。

また、特に、a=0の場合をマクローリン展開という。

最急降下法は、関数の傾きから、最小値・最大値を求めていくという最も単純な勾配法、だそうです。最急降下法の改良をしたものとして、確率的勾配降下法があります。

また一方で、最急降下法の収束の遅さを改善した方法として、ニュートン法があります。

最急降下法は1階微分をするのに対し、ニュートン法は2階微分をするところが大きな違い。


ニュートン法に含まれるヘッセ行列は、テイラー展開と関係があるので、テイラー展開などについて、以下参考文献。

あとでちゃんと読み直します…。

  • https://mathwords.net/saikyukouka
  • https://qiita.com/junichiro/items/527b1f211ed814528ded
  • https://qiita.com/kenmatsu4/items/d282054ddedbd68fecb0
  • https://qiita.com/ruka38/items/bd212cb1741d35d8dde3
  • http://www.birdland.co.jp/wordpress/?p=664
  • http://nonbiri-tereka.hatenablog.com/entry/2014/06/24/124455
  • http://minus9d.hatenablog.com/entry/2015/01/27/231820