サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
ie110704.net
表題の通り、潜在ディリクレ配分法(LDA; Latent Dirichlet Allocation)によるトピックモデルを学習させて、WordCloud・pyLDAvisで可視化までやってみます。 データセットの用意 今回は日本語でやってみたかったので、以下のlivedoorニュースコーパスを利用させていただきました。 - https://www.rondhuit.com/download.html 日本語のコーパスとしては定番ですね。 ダウンロードしてきた圧縮ファイルを解凍して、各ドキュメントのパスを読み込んでおきます。 import glob import numpy as np import pandas as pd from tqdm import tqdm np.random.seed(0) text_paths = glob.glob('livedoor-news-corpus
今回は、以下の論文の文章分散表現、Sparse Composite Document Vectors; SCDVについて書きます。 SCDV : Sparse Composite Document Vectors using soft clustering over distributional representations: https://arxiv.org/abs/1612.06778 実は去年に試しに実装していたのですが、他にネタがないためまだ投稿していませんでしたので、書こうと思います。 SCDVについて SCDVは、文章ベクトルを取得する方法の1つです。 文章ベクトルを取得する手法はDoc2Vecなど色々ありますが、論文において、取得した文章ベクトルを用いたマルチラベル分類では、他の方法よりも高い精度を出せているようです。 うーむ、ていうか、NTSGってのはなんだ。 すでにこ
割と今更ですが、深層学習において、汎化性能を保つための工夫の一つであるDropoutを使って推論を行うことが、近似的にベイズ推論になっているという論文がありますので、それについて記します。 また、実際に試験的にMNIST画像分類で推論をしてみて、様子について確認してみようと思います。 論文の概要 論文は下記になります。 Dropout as a Bayesian Approximation: Representing Model Uncertainty in Deep Learning: https://arxiv.org/abs/1506.02142 Dropoutを適用させた深層学習は、deep gaussian modelにおける変分ベイズ推論となる事を理論的に示しています。 上記の が事後分布を表しており、これを近似する分布 を として考え、これがDropoutによってネットワーク
データの確認 上記で述べたように、元々特徴量はほとんどが主成分化されているため、どのカラムがどういった内容を表すのかは不明です。 また、欠損値もありません。 クラスについて集計をしてみますと、 データ件数 不正利用フラグ=1の件数 不正利用データ確率 と、かなり不均衡なデータになっています。 相関行列のヒートマップを可視化してみると、 df = pd.read_csv('./data/creditcard.csv') plt.figure(figsize=(18,15)) sns.heatmap(df.corr(), annot=True, vmax=1, vmin=-1, fmt='.1f', cmap=cm) plt.show() といった感じ。(不正利用クラスのカラムは最下段の Class の項目) データサンプリング 上記の通り、データがかなり偏っていますので、ちゃんとモデルを学習
久しぶりにベイズモデルをやります。 今回は、Kaggleのデータセットで公開されている、男子プロテニスの試合結果データがありましたので、これを使って各プレイヤーの強さをモデル化してみます。 - Association of Tennis Professionals Matches -ATP tournament results from 2000 to 2017- そもそも私が趣味がテニスであり、プロテニスもよく観ていますので、スポーツアナリティクスをやる場合には、親近感のあるテニスのデータで何かしらやってみたいと思っていました。 なので、たびたびテニスの専門用語などを普通に書いてしまうかと思いますので、読みづらかったらすみません。 今回もコードはカーネルで投稿していたり。 kaggle kernel: https://www.kaggle.com/itoeiji/player-s-str
今年2月頃、TensorFlow 1.5が公開され、TensorFlowをDefine by Runで実行できる「Eager Execution for TensorFlow」が追加されました。 TensorFlowといえば、Define and Runが特徴的ですが、その特性上、デバッグがかなりやり辛い印象でした。 ちなみにDefine and/by Runについて整理しておきますと、 Define by Run: 計算グラフ(ニューラルネットの構造)の構築をデータを流しながら行う Define and Run: 計算グラフを構築してから、そこにデータを流していく といったプログラミングスタイルで、ChainerやPyTorchがDefine by Run型のライブラリとなります。 今回はTensorFlowにDefine by Runモードが追加されると聞いて少し気になっていましたので
今回は、状態空間モデルの中でも基礎となる、ローカルレベルモデルをPyStan、PyMC3、Edwardで実装してみました。 コードは以下にも置いておきました。 ※Stanのログ出力も入ってしまって、とても長いので注意 GitHub: https://github.com/Gin04gh/datascience/blob/master/compare_state_space_model/notebook.ipynb Statsmodelsで状態空間モデル 適当に時系列データを作成します。 import numpy as np import matplotlib import matplotlib.pylab as plt %matplotlib inline from tqdm import tqdm y = np.cumsum(np.random.normal(size=100)) plt
一方、今回紹介するPlotlyに関しては、こちらもJupyter notebook上で、マウスで動かしたりできるグラフを生成することができます。 どちらもPythonから実行できますが、他にもRやJuliaなどの他言語からも実行可能のようです。 逆に異なる点としては、Plotlyには3Dプロットのグラフもありますが、Bokehには3Dプロットがありません。 また、詳しくは後述しますが、Plotlyにはオンラインとオフライン、無償版と有償版の使い分けがあります。 また、今回は紹介しませんが、このPlotlyのグラフ生成機能をベースとしたWebアプリケーションフレームワークとして『Dash』というものもあるみたいです。 Dash: https://plot.ly/products/dash/ Plotlyは、インタラクティブなグラフを作成できるオープンソースのライブラリです。 Python、R
環境の作成 必要なライブラリを読み込みます。 import time import copy import numpy as np import pandas as pd import chainer import chainer.functions as F import chainer.links as L from plotly import tools from plotly.graph_objs import * from plotly.offline import init_notebook_mode, iplot, iplot_mpl init_notebook_mode() 可視化には、Plotlyを使ってみました。 Plotly: https://plot.ly/python/ Jupyter notebook上でも、グラフをマウスでぐりぐりと操作できるので、面白いです。
Edward Edwardはベイズ統計などで扱うような確率モデルを実装できるライブラリです。 同じPythonのライブラリで言えば、PyStanやPyMCがその類のものになります。 Edward: http://edwardlib.org/ 特徴としては、 2016年より開発されている確率的プログラミングのPythonライブラリ Dustin Tran氏(Open AI)が開発をリード LDAで有名なコロンビア大学のBlei先生の研究室で開発 計算にTensorFlowを用いている 計算速度がStanやPyMC3よりも速い GPUによる高速化が可能 TensorBoardによる可視化も可能 などが挙げられます。 ベイズ統計はもちろんですが、深層学習などに対するベイズの適用の実装も可能のようです。 この辺りについてはチュートリアルに色々と参考例があり、例えば、下記のようなアルゴリズムの実装が
統計検定2級対応の公式教科書です。 準1級の試験ではありますが、だいたいの問題が区間推定や仮説検定、回帰分析や分散分析などが大半の割合を占めていますので、こちらをメインに勉強を進めていきました。 この書籍に記載されている内容については、ほぼすべて理解できているよう努めました。 ただし、これまでの過去問に一切出題されていない部分に関しては、理解が間に合ってなくても大丈夫だと思います。 例えば、仮説検定でいえば、 検定や 検定は定番の問題としてよく出題されますが、相関係数の検定などは今まで出題されたことがありません。(多分) なので、 検定や 検定は、やり方を暗記するだけではなく、どうしてそのような検定統計量を導くことができるのか、それで検定が可能なのかまでを理解しておくようにしました。 2級までであれば、出題形式も割と決まった感じであり、かつ回答もマーク式ですので、やり方の暗記でも通用するか
私が大学・大学院で勉強していた本です。 統計学の書籍の中では、個人的には難しい部類に入ると思います。 測度論の勉強が済んでいる前提で始まりますので、そのあたりの知識が不足している場合は、ルベーグ積分の書籍を読む必要があると思います。 私は数学科で、勉強していた環境としては、どちらかといえば、現場的なデータ分析というよりは、確率論や数理統計学の純粋な理論を専攻する傾向が強かったので、測度論なども授業で学んだ後に、上記書籍に取り組みました。 確率論(講座 数学の考え方)
深層学習において文脈情報を学習させる方法としては、再帰的ニューラルネットワーク(RNN)を用いる方法と畳み込みニューラルネットワーク(CNN)を用いる方法があります。 今回はそれぞれの方法で、文章を学習させてラベル分類を行うモデルを、Chainerを使って実装しました。 RNNによる文章分類モデル RNNは系列データを学習させることに適したニューラルネットワークです。 文章データは、文字や単語の時系列とみなすことができますので、文字や単語を値として捉えて文章の順番にしたがって入力することで、文脈情報を学習させることができます。 今回はネットから適当に拝借した英語の短文を用意し、それが質問かそうでないかを分類するモデルを実装してみました。 ここで、トリミングで記号を削除することで、「?」も削除することで、文脈情報のみから分類してみます。 data = [ ["Could I exchange
最近は、深層学習の技術の発展によって、自然言語処理界隈でも深層学習を利用する例で賑わってきている印象です。 今回は上記書籍にも紹介されている、Attention Model + Sequence to Sequence Modelを使った対話モデルをChainerで実装してみました。 系列変換モデル(Sequence to Sequence Model) 自然言語処理の典型的の応用タスクとしては、機械翻訳、文章要約、対話、質問応答、文章分類などがあります。 これらのうち、文章から文章への変換とみなせるタスクを考えてみると、 機械翻訳 = 「翻訳元の言語の文章」から「翻訳先の言語の文章」への変換 対話 = 「相手の発言の文章」から「自分の発言の文章」への変換 質問応答 = 「質問の文章」から「応答の文章」への変換 とみなすことができます。 以上から、これらのタスクは系列から系列への変換を行う
DATA SCIENTIST'S BLOG WHO WORKS AT THE STRATEGIC CONSULTING FIRM ニューラルネットワーク(Neural network; NN) 順伝播型のニューラルネットワークです。 簡単な練習問題として、アイリスのデータを分類するモデルを書きました。 ニューラルネットワークを使うまでもない問題ですが、実装の仕方の勉強のため、基本的な問題にしました。 各コードでやっていることを理解すると、別の問題も書くことができますし、他のニューラルネットワークへの参入もグッと楽になりました。 ChainerによるNNの実装1 ニューラルネットワークの実装です。 GitHub: https://github.com/Gin04gh/samples_py/blob/master/NeuralNetwork_Chainer_ver1.ipynb 移設しました。
このページを最初にブックマークしてみませんか?
『ie110704.net』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く