本日の読書そのほかサイトマップPLOFILEなかしゅん/1993/09/04生まれ将来の進路に疑問を抱き自由を求め休学中。基本的に「やらされる」「お金(安定)目当て」「熱意が少ない」「入ったらなにやらされるかイメージがつかない」などの大手企業的環境は求めていない。好きな言葉:「知識を授かることはこの世でもっとも大きな恩恵である。学者にはこれ以上与えられるものなど何もない。趣味:読書、散歩、記事をかくこと、睡眠。アフィリエイト人気の投稿ベルマンフォード法をやっと理解した。3,906ビューインスタグラムをやる意味が正直わからない。人工知能って要は確率とか統計学じゃん。2,820ビューモンテカルロ法で円周率を計算する。最近の投稿pythonのlambda(無名関数)の使い方、map関数との組み合わせについてdjangoでログイン機能を実装するmacのGrapherはかなり優秀(ルンゲクッタ法の刻みとか変えられる)Googleのブラウザアプリteachable-machineで遊んでみたアメリカには天才ハッカーが多い気がする<米空軍が17歳にハッキングされる>自動運転車のハッキング(テスラのイーロンマスク氏も警鐘を鳴らす)、日本におけるセキュリティエンジニア人材不足ルノーが示した車が近未来的すぎる。数学macのGrapherはかなり優秀(ルンゲクッタ法の刻みとか変えられる)macにデフォルトで入っているアプリケーションに「Grapher」というものがあります。「Launchpad」→「その他」の中に格納されているため以外に知らない人も多いです。「Grapher」とはグラフ作成ツールです。gnuplotとかWolframと同じようなものです。今回はそんな「Grapher」のある機能を知ってしまったので紹介します。微分方程式の近似解法を選択できる無料のくせにその汎用性は素晴らしいです。微分方程式を解かせることはもちろん、「オイラー法」「ルンゲクッタ法」と選択できます。その解の刻み幅まで選択できます。こんな素晴らしいツールがあるなんて知らなかった。自分は使ったことないですが、gnuplotみたいにデータをファイル出力することもできるみたいです。Equations」を用います。開くと右上に「インスペクタ」と書かれた青のiマークがあると思います。そこをクリックしますそうすると設定用の小さなウィンドウが開きます。そこの中の「積分器」というのをクリックすると近似解法を選択できます。その下のステップサイズを自分で入力すると解の刻み幅を任意に変更できます。最後に以上「Grapher」を用いた微分方程式の解法などの設定方法に述べてきました。「Grapher」にはもっと便利な機能がありそうなので、また新たに発見したら更新します。コメントを残すpythonでモンテカルロう!(3章)「Rによるモンテカルロ法」という書籍を用いてモンテカルロ法について勉強したことをまとめていこうと思います。本書に記載されているRのサンプルコードを写経しても意味ないので、pythonでコードを書き直しながら理解を深めていこうと思います。dx\end{eqnarray}上式の積分の計算をする際に、密度fからサンプル(X1,.....,Xm)を生成し近似として以下の経験平均を算出します。その際にfは様々な確率分布が用いられます。モンテカルロシミュレーションには正規分布や、ポアソン分布、コーシー分布が用いられることが多いようです。h(x_j)\end{eqnarray}h(m)は大数の強法則により、サンプル数を増やすとEf[h(x)]に収束します。試しに例3.3を解いてみます。dx\)を近似することができます。\sin(20x)\}^2\end{eqnarray}pythonで実装すると以下のようになります。例題3.3は一様乱数ですが、サンプル(X1,.......Xm)を確率分布から発生させる場合の問題もあります。4のときを想定して解いてみます。d\theta}\end{eqnarray}このままでは確率分布が使えないので、式変形をします。d\theta}\end{eqnarray}こうすると、正規分布とコーシー分布が出てきます。解き方には2種類あります。試しに両方の方法で解いてみて、近似解の精度をみてみましょう。3.435061555229311コーシー分布よりも、正規分布でサンプリング(正規近似)した方が精度は良いみたいです。コーシー分布は外れ値をとる可能性が大きく、裾が広いのでその影響が出ています。>>コーシー分布と正規分布についてはこちら今回の被積分関数のプロット図です。青線が\(\delta(x)\)の分子、緑線が\(\delta(x)\)の分母です。」で勉強開始したので、3章のサポートベクターマシンについて書いてみます。ついては以前にまとめたので、今回は飛ばします。サポートベクターマシンとは?2クラス分類において高性能を叩き出す分類器を作成する。汎化能力を上げる方法としてマージン最大化が行われる。マージン最大化のために、二次計画法、特にラグランジュの未定乗数法やカルーシュ・クーンタッカー条件(KKT条件)が用いられる。非線形分類では、リプレゼンター定理を用いカーネル化を行い特徴空間に写像する。サポートベクターマシンについて本気で根本から理解しようとするとこれらの専門用語を掘り下げないといけません。scikit-learnのライブラリに用意されているので理論的背景を理解しなくてもSVMを用いて実装はできるわけです。ブラックボックス状態で使うのは嫌なので、どこまで理解できるかわかりませんが、このたび本気で理解してみることに。ついでに本書によると以下のマイクロソフトの公式チュートリアル(論文?)がおすすめらしいです。英文なのでしんどいですが。日本語では以下がおすすめ。文章だけではわかり辛いと思うので図での説明。(1)\\\end{eqnarray}ベクトルの長さを定義して上の式を標準化する。ベクトルの長さは以下のように定義できる。\frac{2}{\|w\|}\end{eqnarray}この式の左辺は、正の超平面と負の超平面の距離である、要するに最大化するマージンである。サンプルが正しく分類されているという制約のもとでSVMの目的関数の最大化する問題は、マージン\(\frac{2}{\|w\|}\)を最大化する問題に帰着できる。\)を最小化する方が簡単である。最小化する際には、二次計画法(ラグランジュの未定乗数法)により解ける。スラック変数を使った非線形分離可能なケースへの対処スラック変数\(\eta\)を用いることで非線形分類のために線形規約を緩和することができる。直感的に説明するならば、適切なコストペナルティを科した上で誤分類が存在する状態のまま最適化問題を収束させることが可能になった。正値のスラック変数は線形規約の式にそのまま追加される。\\\end{eqnarray}したがって、最小化すべき新しい対象(先の制約の対象)は以下のようになる。\sum_{i}\xi^{(i)}\end{eqnarray}あとは、変数cを使って誤分類のペナルティを制御すれば良い。Cの値が大きいと誤分類のペナルティが大きく、小さければペナルティは小さく誤分類に対して寛容ということになる。これによりマージンの幅が制御できるので、以下の図に示すようにバイアスとバライアンスのトレードオフを調整できる。確認のためパーセプトロンのアルゴリズム、ロジスティック回帰、SVMを用いて実際にIrisのデータセットを分類し、可視化してみる。dpi=300)plt.show()パーセプトロンによる分類ロジスティック回帰モデルによる分類サポートベクターマシンによる分類スポンサーリンクカーネルSVMを使った非線形問題の求解SVMが人気の理由の一つに非線形問題をカーネル化するのが容易であることが挙げられます。以下のようにnumpyのlogical_xor関数を使って200個のサンプルを用意し、2つのクラスラベルがつけられているとする。dpi=300)plt.show()これを線形SVMを用いた場合、サンプルをうまく分割できない(適切な超平面見つからない)のは明らかです。した線形分離できないようなものを射影関数を用いて、高次元空間へと射影し線形分離できるようにします。以下の式で表現できる射影を使ってクラスを分離します。x_2^2)\end{eqnarray}これによりグラフに示されている二つのクラスを線形超空間を使って分離できるようになります。それを元に特徴空間へ再度射影することで非線形の決定境界が得られます。以下は、非線形分離するまでの過程を視覚的に表現したものです。コメントを残すコーシー分布と正規分布(python)正規・コーシーベイズ推定量というものを勉強した際、そもそも正規分布とコーシー分布ってどう違うねんって思ったので、pythonでプロットしてみること。np.random.randn(N)#グラフ描画plt.xlabel("rand")plt.ylabel("freq")plt.hist(norm,bins=40,color="r")plt.show()特に難しくはない。標準正規分布で平均0、標準偏差1になるようにランダムに10000点プロットし、ヒストグラムにしたものです。裾が軽い(外れ値をとるものが少ない)ため、様々な数理モデルに利用される。np.random.standard_cauchy(size=N)#グラフ描画plt.xlabel("rand")plt.ylabel("freq")plt.hist(cauchy,bins=100,color="g")plt.show()コーシー分布は外れ値をとる確率が高く、外れ値が重要な意味をもつ場合には利用される分布です。株価暴落など、正規分布の裾が軽い分布でモデル化できないときなどに用います。外れ値と最頻値をとる頻度に差がありすぎて、わかりづらいので120〜240を拡大してみます。回数は少ないですが存在してます。一つの特徴は「確率密度関数を描画すると左右対称の確率分布にも関わらず、その平均は0ではない」ことです。-∞〜∞の範囲で広義積分をすると、その極限は存在しないことがわかります。そのため平均(期待値)が存在しないので、大数の法則や中心極限定理が成り立ちません。モンテカルロ積分で積分計算を近似することもできない(精度がよくない)です。