サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/kenmatsu4
こんにちは、DeNAでデータサイエンティストをやっているまつけんです。 本ブログは、混合ガウス分布を題材に、EMアルゴリズムという機械学習界隈では有名なアルゴリズムを丁寧に解説することを目的として書いています。 また、この記事は、「数学とコンピュータ Advent Calendar 2017」の24日目の記事です。 そして長いです。 1. はじめに 観測した確率変数 $X$ をよく表現する、モデル $p(x|\theta)$ のパラメータを求めることが確率分布の推定ではよく行われます。つまり最尤法ですね。より複雑な分布になるとその分布の構造に潜在変数(Latent Variable) $Z$ があると仮定してモデル化を行うと、シンプルな組み合わせで $X$ の分布を表現できることがあります。今回扱う混合ガウス分布もその一つです。 のちに説明しますが、データセットの種別を完全データ集合と不完
本記事は、AI道場「Kaggle」への道 by 日経 xTECH ビジネスAI① Advent Calendar 2019のアドベントカレンダー 9日目の記事です。 Permutation ImportanceがScikit-Learnのversion0.22より導入されました。この手法はKaggleでも使われており1 、特徴選択に有用な方法です。本記事ではこのPermutation Importanceの解説と、LightGBMで5-foldでCVしながら使ってみた例を紹介します。コードの全文はKaggle Kernelとして登録してありますので、コードだけサクっとみたい方はこちらをどうぞ。 1. Permutation Importanceとは Permutation Importanceとは、機械学習モデルの特徴の有用性を測る手法の1つです。よく使われる手法にはFeature Imp
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 機械学習をどう学んだか by 日経 xTECH ビジネスAI② Advent Calendar 2019 1日目の記事です。今日は @kenmatsu4 が機械学習をどうやって学んできたか、有用だった本の紹介をまじえて解説してみたいと思います。初のポエム記事ですw こちらは日経 xTECHさん企画のAdvent Calendarですが、ちなみに実はワタクシ @kenmatsu4 はAI道場「Kaggle」の正体 AI道場「Kaggle」の衝撃、DeNAが人材採用の特別枠を設けた訳 の中の人だったりもします 1. 学生時代 大学では経済学
GBDTで予測分布が出せると話題のNGBoostを試してみましたので、備忘録がわりに投稿します。実際に動かしてみたい方は**こちら**を参考にしてください。 所感 modelチューニングをほぼしていない状態かつ、今回の小さいデータセットでは精度はほぼ同じ。 分布が算出できるのは使いどころがあるかもですね。 インポート あとでNGBoostとLightGBMをちょっと比較するのでlightgbmもインポートしておきます。 # ngboost from ngboost.ngboost import NGBoost from ngboost.learners import default_tree_learner from ngboost.scores import MLE from ngboost.distns import Normal, LogNormal # lightgbm impor
現在、Kaggleにてよく使われる手法の一つにGBDT(Gradient Boosting Decision Tree)があります。さらにその種類の1つXGBoostはKagglerによりその効果を検証され非常に人気の高いアルゴリズム・実装です。このブログでは、XGBoostの論文からアルゴリズムを理解するための主要な部分、 TREE BOOSTING IN A NUTSHELL 2.1 Regularized Learning Objective 2.2 Gradient Tree Boosting を丁寧に解説することを目的に書いています。 また、ここで解説した理論、アルゴリズムについてはLightGBMにおいてもほぼ同じと思いますので、合わせて参考になるかと思います。 おことわり しかしながら、最初におことわりをさせていただくのですが、markdownやtexでキレイにまとめる余裕が
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
ステップ2 $r_{nk}$を固定して$J$を$\mu_k$で偏微分して最小化します。 式変形をすると、 クラスタ$k$の最適なCentroidは上記のように、クラスター$k$に所属しているデータの平均であることがわかりました。 上記より最初のデモンストレーションで行っていたアルゴリズムは損失関数$J$の最適化によって導出されたものを適用していたことがわかります。 2−3. 実装 上記で示した2ステップを計算して、イテレーションを回すだけのシンプルなプログラムです。最後に更新前のmuと更新後のmuの差を取り、それがある程度小さくなったら収束したと判断し、イテレーションを止めるようにしています。 下記はアルゴリズム部分の抜粋です。プログラムの全文はコチラにあります。 for _iter in range(100): # Step 1 =============================
とします。これはReconstruction Errorと呼ばれます。入力したデータになるべく近くなるように誤差逆伝播法で重みの更新を行うことで学習することができます。 1-2. Variational Autoencoder(VAE) VAEはこの潜在変数$z$に確率分布、通常$z \sim N(0, 1)$を仮定したところが大きな違いです。通常のオートエンコーダーだと、何かしら潜在変数$z$にデータを押し込めているものの、その構造がどうなっているかはよくわかりません。VAEは、潜在変数$z$を確率分布という構造に押し込めることを可能にします。 イメージは下記です。 まだよくわかりませんね。実際にプログラムを動かしたものを見ると少しイメージが湧くかと思います。 まずは入力と出力を対比させてみます。(これは$z$の次元を20に設定して学習したものです。)ちょっとぼやっとしていますが、元の形
パーティクルフィルタ/粒子フィルタ(Particle filter)、逐次モンテカルロ法(Sequential Monte Carlo: SMC)など様々な呼び方がありますが、この記事ではパーティクルフィルタという呼び方を使います。このパーティクルフィルタをPythonで実装して状態空間モデルの潜在変数を推定することを試したいと思います。 状態空間モデルにはさらに細かくいくつものモデルが分かれていますが、今回はシンプルなモデルであるローカルモデル(1階差分トレンドモデル)を対象として扱います。この状態空間モデルのトレンドの種類に他に何があるかを知りたい場合はココをご参考としてください。 $x_t$は時刻tにおける潜在状態を表し、$y_t$は観測値を表します。 利用するデータは「予測に生かす統計モデリングの基本」のサンプルデータ(http://daweb.ism.ac.jp/yosoku/)
# 標準正規分布に従う乱数を30,000個生成 x = np.random.normal(0, 1, 30000) # 生成した乱数を2乗する【【ここがキモ!!!】】 x2 = x**2 # ヒストグラムの描画 plt.figure(figsize=(7,5)) plt.title("chi2 distribution.[k=1]") plt.hist(x2, 80, color="lightgreen", normed=True) # 自由度1のカイ二乗分布の描画 xx = np.linspace(0, 25 ,1000) plt.plot(xx, chi2.pdf(xx, df=1), linewidth=2, color="r") となります。このグラフを表示すると下記になります。 2乗しているので、全てプラスになるので$x=0$よりすべて右にデータが移っていて、 2乗なので、 $x
こんにちは、久しぶりにブログを書く@kenmatsu4です。 Stan Advent Calendarの23日目の記事を書きました。 今回のブログでは、Graphical Lassoという、L1正則化をかけた精度行列(分散共分散行列の逆行列)を推定する手法をStanを用いてやってみようというものです。コードの全文はGitHubにアップロードしています。 1. テスト用データの生成 まず、多変量正規分布に従う乱数を生成します。 今回は下記のような平均、分散をもつ6次元のデータを300個生成します。 そして無理やり$x_6$と$x_4$、さらに$x_6$と$x_5$に相関を持たせ、$x_4$と$x_5$が間接相関を持つようにします。これはもともと$x_4$と$x_5$がなかったものの、$x_6$の影響を受けて$x_6$の変動と連動して$x_4$と$x_5$の値も動くので本来相関がない変数同士が
主に統計学、機械学習、データ分析関連の記事で、Qiitaへ投稿し始めて半年くらいになりました。ちょっと今までの記事をQiita APIを使いながら振り返ってみようと思います。(以下2015/8/10時点のデータから算出) 最初にデータを眺めて、その次にそれらの内容を生成したPythonコードと、PythonからQiita APIを使う方法の解説をします。 1.データを眺める 投稿記事のストック数順 上位5位で73%を占めていますね。人気記事は偏るのですね・・・。 最下位の「ピザで理解する分数の割り算の意味」とか個人的には結構気に入っているのですが、全然ストックされませんね ストック数 割合(%) 累積(%) タイトル
ランダムフォレストに関する解説を読んでいるとよく遭遇するOOB(Out-Of-Bag)、その詳細に迫ります。 ブートストラップサンプリング $N$ 個の訓練標本 $\{\boldsymbol{x}_i, y_i \} _{i=1}^N$ から重複を許してランダムに同じだけの数$N$個を選ぶことで、訓練標本集合を作る方法をブートストラップサンプリングと呼びます。ランダムフォレストではこのブートストラップサンプリングで作った$M$個の訓練標本で多数の決定木を作ることから「フォレスト」という名称がついています。 このとき、$N$個から重複ありで$N$個選ぶので、中には選ばれなかったデータがあります。これをOOB(Out-Of-Bag)と呼びます。ランダムフォレストのエラーの評価に使われたりします(ココなど) $i$番目のデータ$ ( \boldsymbol{x}_i, y_i )$に着目すると、
ハミルトニアンモンテカルロ法(HMC)の動作原理をアニメーションを用いて理解してみようという記事です。 先日の記事、「【統計学】マルコフ連鎖モンテカルロ法(MCMC)によるサンプリングをアニメーションで解説してみる。」の続編にあたります。 豊田先生の書籍「基礎からのベイズ統計学」の例題を使わせていただき、サンプリング対象の分布は今回ガンマ分布とします。本記事ではアニメーションに使った部分の理論的な解説しかしませんので、HMCの詳細な解説はこちらの書籍をご参照いただければと思います。 はじめに 推定する対象は$\theta$を変数としたガンマ分布です。ベイズ推定で推定したいパラメーターを$\theta$で表すので、$\theta$の分布として表されます。1 ガンマ分布はこちらです。 $$ f(\theta|\alpha, \lambda) = {\lambda^{\alpha} \over
SparkをiPython Notebook(Jupyter)で動作させ、MLlibを動かしてみるテストです。クラスタリング(KMeans)、分類:Classification(SVM, ロジスティック回帰, Random Forest)をirisデータで試しました。 環境 OS: Mac OSX Yosemite 10.10.3 Spark: spark-1.5.0-bin-hadoop2.6 Python: 2.7.10 |Anaconda 2.2.0 (x86_64)| (default, May 28 2015, 17:04:42) 本稿では上記の環境で行ったものを記載していますので、他の環境では設定が異なる場合もあるかと思いますのでご注意ください。 #1. Sparkバイナリのダウンロード&配置 http://spark.apache.org/downloads.html から
Sparkシリーズ第2弾です。今度はMLlibを使って協調フィルタリングを用いたレコメンデーションの実装を行います。 第一弾 【機械学習】iPython NotebookでSparkを起動させてMLlibを試す http://qiita.com/kenmatsu4/items/00ad151e857d546a97c3 環境 OS: Mac OSX Yosemite 10.10.3 Spark: spark-1.5.0-bin-hadoop2.6 Python: 2.7.10 |Anaconda 2.2.0 (x86_64)| (default, May 28 2015, 17:04:42) 本稿では上記の環境で行ったものを記載していますので、他の環境では設定が異なる場合もあるかと思いますのでご注意ください。また、基本的にiPython NotebookでのSparkの実行を想定しています。
AdventarのPython Advent Calendar 2015 21日目の記事です。 Pythonでグラフを描く時、Matplotlibを使うと思います。また最近はSeabornというグラフを綺麗にしてくれるライブラリがあり、自分はそれを愛用しています。ただ、色をもっと自由に選びたい、設定したいという時に+αでColormapのカスタマイズをすると便利です。今回はこれを紹介します。 #準備 まずはいつもの一式インポートです。大体Anacondaにあるものですが、足りないものは pip install <入れたいライブラリ名>で入れることができます。 import numpy as np import pandas as pd from sklearn import datasets import matplotlib.pyplot as plt import matplotlib
Julia上でデータセットを取得して回帰分析(線形回帰、ポアソン回帰)までやってみるという記事です。 MacにJuliaを導入して、Jupyter Notebookで動かすという最初の最初から書いていきます。なぜなら僕がJulia初心者だからです Jupyterの"Ju"はJuliaの"Ju"らしいので、ぜひJupyterを使いましょう ちなみに、Juliaの本を探そうとAmazonで"Julia"を検索すると痛い目にあうので(特に職場では)気をつけましょうw (参考: https://twitter.com/Kenmatsu4/status/663990102478028800) ##環境 OSX Yosemite 10.10.5 コードの全文 本記事で扱ったコードの全文はGitHub https://github.com/matsuken92/Qiita_Contents/blob/m
StanをつかってTitanicデータをロジスティック回帰してみて、さらに分類の性能評価を少し行ってみるという記事です。 この記事で使う確率的プログラミング言語「Stan」では分布のパラメーターの推定に、ハミルトニアンモンテカルロ法(HMC法)とNUTSという手法が用いられています。厳密には乱数の発生原理が異なるのですが、もう少しシンプルな手法にマルコフ連鎖モンテカルロ法 メトロポリス・ヘイスティングス法(MH法)があります。この動作原理について、私@kenmatsu4が書いた スライド, 基礎からのベイズ統計学 輪読会資料 第4章 メトロポリス・ヘイスティングス法 【統計学】マルコフ連鎖モンテカルロ法(MCMC)によるサンプリングをアニメーションで解説してみる。 の2点がありますので、よければ参考としてください。やっていることのイメージを付ける意図であればMH法とHMC法は大きく違わない
地味だけど重要ないぶし銀「モデル評価・指標」に関連して、Cross Validation、ハイパーパラメーターの決定、ROC曲線、AUC等についてまとめと、Pythonでの実行デモについて書きました。 本記事はQiita Machine Learning Advent Calendar 2015 7日目のものです。 ふと見てみたら12/7が空いていたので、急遽書いてみました コードの全文はこちらのGitHubリポジトリにあります。 0. データセット "Titanic" おなじみ、Titanicデータセットを使用します。客船Titanicの生存者に関するデータで、分類のデモ用データとしてよく用いられています。 まずは前処理とデータインポート seabornにデータセットがあるので、それを使います。 %matplotlib inline import numpy as np import p
Pythonでマルコフ連鎖モンテカルロ法を実装して解説してみる記事です 『計算統計 II マルコフ連鎖モンテカルロ法とその周辺』のp16に この節の内容を実感するために一番良い方法は、どんな計算機言語でもいいから、 ここで述べたことを白紙から実装してみることである。 という事で、素直にやってみました。せっかくなのでコードと仕組みの解説をしようと思います。 先に結果のアニメーションとプロットを表示しておきます (Burn-in期間:1-30 [この期間のデータは色を薄くしてプロットしています。], 棄却含め150回のサンプリングまで) 10,000回繰り返してサンプリングした結果をプロット。(うち、Burn-in: 2,000回) はじめに まず最初に必要なライブラリのインポートを行います。 import numpy as np import numpy.random as rd impor
qiita.com
Pythonでマルコフ連鎖モンテカルロ法(MCMC)を実行できるライブラリ、PyMC3のチュートリアルの「超訳」その2「Case study 1: 確率的ボラティリティモデル」です。 今回も要所要所で原文のニュアンスを基に超訳した部分があります。 原文のURL http://pymc-devs.github.io/pymc3/getting_started/#case-study-1-stochastic-volatility コードはGithubにもまとめてあります。( https://github.com/matsuken92/Qiita_Contents/blob/master/General/case_study1_StochasticVolatirity.ipynb ) ⇒ 動かすために一部改変したのでこちらにアップしました。 もっと現実的な問題を題材としてPyMC3の使い方を理
次のページ
このページを最初にブックマークしてみませんか?
『@kenmatsu4のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く