機械学習の基礎用語や初歩的な手法、数学的な理解を深めませんか?環境構築が不要、オンラインで実行が可能な機械学習入門チュートリアルを公開中!機械学習の世界へ飛び込んでみませんか? スクラッチで最小二乗法と最急降下法をPythonでコーディング(線形回帰) ロジスティック回帰の概要や数学的理解と実践に役立つ知識(ロジスティック回帰) まず呼び方ですが、Kaggleと書いて「カグル」と読みます。日本でも最近は定着してきましたが、Kaggleに参加している方を「カグラー(Kaggler)」とも呼びます。 Kaggleですが、本サイトへ行くと一番上に書かれていますが「The Home of Data Science & Machine Learning」(データサイエンスと機械学習の家)と題されている通り、世界中の機械学習・データサイエンスに携わっている約40万人の方が集まるコミニティーです。 Ka
「ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装」を勉強しています。 4.3.2 数値微分の例 を読んでいて、内容は理解できたのですが、接線をプロットする gradient_1d.pyがわからなかったので、考えたメモです。 ソースコードは # coding: utf-8 import numpy as np import matplotlib.pylab as plt def numerical_diff(f, x): h = 1e-4 # 0.0001 return (f(x+h) - f(x-h)) / (2*h) def function_1(x): return 0.01*x**2 + 0.1*x def tangent_line(f, x): d = numerical_diff(f, x) print(d) y = f(x) - d*
この記事ではニューラルネットワークに必要な要素の一つ、活性化関数について説明します。ただ、その前に簡単にニューラルネットワークについておさらいをしたいと思います。 ニューラルネットワークは人間の脳をモデル化したもので、一つ一つがニューロンと呼ばれる神経細胞を模したモデルの集まりから成り立っています。 ニューロンは入力層、中間層、出力層のそれぞれが存在します。 入力層のニューロンから出力された情報は中間層のニューロンへの入力となり、中間層のニューロンから出力された情報は出力層のニューロンへの入力となるように、複雑に連携しています。 こられのニューロンの数が多くなれば多くなるほど複雑な処理に対応できやすくなります。 このように複雑に連携しているニューロンですが、1つのニューロンに着目した場合は動作が非常にシンプルとなっています。 次の図は3つの入力(X1、X2、X3)から入力を受信したニューロ
Quote: "Amigos y nadie más. El resto, la selva" -- Jorge Guillén How to install Octave via Homebrew in Mac OS X 10.10 Yosemite and later Fri, 17 Oct 2014 04:21:00 +0000 From the machine-learning-scientific-and-plotting dept. (73050) (28) by Luis Here is a very quick way to install octave with aquaterm on Mac OS X 10.10 a.k.a. Yosemite as well as 10.11 a.k.a El Capitan. Note that these steps are no
αとβの値を探る グラフでイメージをつかむ この記事のその1では、$\alpha$と$\beta$それぞれをなんらかの値で固定した場合に最小値を見つけられることをみてきましたが、実際にこのデータに対して近似直線(回帰直線)のパラメーター$\alpha, \beta$を求めるには、$\alpha$と$\beta$が同時に最小値をとる場合を探さなくてはなりません。 その1で扱った関数$S$を、$\alpha$と$\beta$の2変数関数と見立てて整理すると下記のようになります。 S(\alpha, \beta) = \left( \sum_i^n x_i^2 \right) \alpha^2 + n\beta^2 + 2 \left( \sum_i^n x_i \right)\alpha \beta - 2 \left( \sum_i^n x_i y_i \right)\alpha - 2 \
最近、機械学習、人工知能等が流行っておりその基盤となる統計学についての知識が重要となっていると思います。そこで、統計学の中でもその効果がわかりやすい回帰分析の原理についてPythonで計算したりグラフを書いたりしながら概念的に理解できることを目的として説明を試みたいと思います。 統計の専門家ではないので、もしご指摘・コメントありましたらぜひご連絡ください。数学的に厳密でない点もあると思いますが、ご容赦ください... データセット まずはデータセットを入手します。 carsデータ このページではPythonを用いて説明を進めますが、使用するデータは統計解析ソフトRのなかにあるデータセットのcarsデータを用います。ここからcsvデータをダウンロードして利用してください。(ただし、このデータのDescriptionによると1920年代のデータのようなので、あくまでサンプルとしてのデータになりま
勾配降下法は何に使う? 勾配降下法は統計学や機械学習で多く使われています。特に機械学習というのは基本的に何かしらの関数を最小化(最大化)する問題を数値解析的に解くことに帰結する場合が多いです。(e.g. 最小二乗法 → 誤差の二乗和を最小化(参考)、ニューラルネットワークのパラメータ決定 etc...) なので、基本的にはひたすら微分して0となるところを探す問題ですね、微分して0。で、その微分して0となる値は何か、をプログラムで解く場合に重要になるのがこの勾配降下法です。幾つか勾配法にも種類がありますがここでは最急降下法、確率的勾配降下法の2つを扱います。まずはイメージをつかむために1次元のグラフで確認していきたいと思います。 1次元の場合 1次元の場合は、確率的という概念はなく、ただの勾配降下法になります。 (どういうことか、はのちほど) 1次元の例は、正規分布をマイナスにしたものを使っ
Google DeepMind社が開発しているAlpha Goの論文を読んでみたけど、うっすらとしか理解できない。機械学習の知識が足りない。stochastic gradient descentとstochastic gradient ascentってなんだよ!なんかの必殺技にしか見えない。いろいろ調べながら読んでみると、コンピュータ囲碁が劇的に強くなった原因であるモンテカルロ木探索におけるプレイアウト(Natureの論文だとrollout)時の打ち方(Policy network)とモンテカルロ木探索のノードの評価値(value network)を決めるところに畳み込みニューラルネットワークを使った深層学習を適用しているらしい。モンテカルロ木探索については情報処理学会学会誌「情報処理」の以下の記事がわかりやすかった。 美添一樹: モンテカルロ木探索-コンピュータ囲碁に革命を起こした新手法
最急降下法は、最適化したい関数f(x)の一階導関数f'(x)を見て、より最適な点へ更新していき、最終的に最もよい点に収束させる手法である。 図4.17 例えば、図4.17のようなf(x)と初期値x_0が与えられたとする。まずは最大化することを考える。 (偏導関数)>0なので、最大化するには正の方向に移動すればよい。更新率をηとおいて と更新すればよい。 図4.18 新しく更新されたx_1における偏導関数も正の値をとるので、同様に更新する。 図4.19 仮に最大化する過程で偏導関数が負になったときも同様に更新すればよく、偏導関数が負ということは最大値をとるxは現在のxよりも小さい(負の向き)にあるので、 を用いて更新することができる。 次に、最小化することを考える。 図4.17 先ほどの図4.17を再掲した。x_0において(偏導関数)>0なので、最小化するには負の向きに動かさなければならない
確率変数 X1,X2X_1,X_2X1,X2 に対して,分散共分散行列(単に共分散行列とも言う)Σ\SigmaΣ を以下のように定めます: Σ=(σ12σ12σ12σ22)\Sigma=\begin{pmatrix}\sigma_{1}^2&\sigma_{12}\\\sigma_{12}&\sigma_{2}^2\end{pmatrix}Σ=(σ12σ12σ12σ22) ただし,σ12\sigma_{1}^2σ12 は X1X_1X1 の分散,σ22\sigma_{2}^2σ22 は X2X_2X2 の分散,σ12\sigma_{12}σ12 は X1X_1X1 と X2X_2X2 の共分散です(この記事では Cov(X1,X2)\mathrm{Cov}(X_1,X_2)Cov(X1,X2) という記号は使いません)。 対角成分には分散が並び,非対角成分
共分散は, 「XXX の偏差 × YYY の偏差」の平均 で定義されます。 ※偏差とは平均との差のことです。 定義だけでは共分散の意味は分かりにくいので,簡単な具体例で計算してみます。 555 人でテストを受けたデータを考える。 X:X:X: 国語の点数,YYY :数学の点数。 各々の点数は,(50,50),(50,70),(80,60),(70,90),(90,100)(50,50),(50,70),(80,60),(70,90),(90,100)(50,50),(50,70),(80,60),(70,90),(90,100) このときの共分散を計算してみましょう。 まず,国語の平均点 μX\mu_XμX は, μX=15(50+50+80+70+90)=68\mu_X=\dfrac{1}{5}(50+50+80+70+90)=68μX=51(50+50+80+70+90)=68
まずは復習。 分散とは「各データが平均値からどれだけ離れているか」という、データの散らばり具合を表す。 具体的には、分散は「(各データの平均値からの距離)の2乗の平均」。 分散は2乗であることに注意。単位をそろえるために、分散の平方根を取ったものが標準偏差。 標準偏差をσで表すと、分散はσ^2で表される。 式で表すと次のようになる。 ここで、次のようなベクトルを導入する。(なぜ? あとで値を複数持つデータに拡張するのに便利だから) すると、さきほどの分散の式は、次のような縦ベクトルと横ベクトルの積の形で書くことができる。 (’は転置を表す) これまでの話で、たとえば、数学のテストの点数がどれくら散らばっているか、ということを知ることができる。 ここで、英語のテストも行った場合、数学と英語の点数の関係を知りたい、という場合には、複数のデータ群を扱う必要がある。 例えば、生徒の「数学の点数」と
thriftとかhadoopなど,何やらいろいろと手を出してしまい,ここのところブログの更新が滞ってしまっていますが,今日は前から書きたかったトピックについて自分へのメモの意味も含めて記しておきたいと思います. はじめに 最近,といっても結構前からなのですが,海外のブログなどで「機械学習の勉強を始めるガイドライン」についてのエントリーがいくつか見られ,かつ,議論も少し盛り上がっています.僕は機械学習が好きなだけで,専門というにはほど遠いのですが,僕も一利 用者としてはこのトピックに関してはとても興味があります. 機械学習というと,色々な数学的な知識が必要であったり,統計学や人工知能の知識も必要になったりしまったりと,専門的に学ぶ機会が無かった人にとっては興味が湧いてもなかなか始めるには尻込みしてしまうことかと思います.今日紹介するエントリーは, そんな方々にヒントになるような内容になっ
P(X)P(Y∣X)=P(Y)P(X∣Y)=P(X∩Y)P(X)P(Y|X)=P(Y)P(X|Y)=P(X\cap Y)P(X)P(Y∣X)=P(Y)P(X∣Y)=P(X∩Y) p(X)p(X)p(X) :事象 XXX が起きる確率 =∣X∣∣U∣=\dfrac{|X|}{|U|}=∣U∣∣X∣ P(Y∣X)P(Y|X)P(Y∣X) :事象 XXX が起きたもとで事象 YYY が起きる確率(条件付き確率とも呼ばれます。詳しくは:条件付き確率の意味といろいろな例題 ) =∣A∣∣X∣=\dfrac{|A|}{|X|}=∣X∣∣A∣ (PX(Y)P_X(Y)PX(Y) と表記する流儀もあります。) よって,「 XXX も YYY も起きる確率」=「 XXX が起きる確率」×「 XXX が起きたもとで YYY が起きる確率」なので, 「 P(X∩Y)=P(X)P(Y∣X)P(X\cap Y
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く