機械学習基礎理論独習

誤りがあればご指摘いただけると幸いです。数式が整うまで少し時間かかります。リンクフリーです。

勉強ログです。リンクフリーです
目次へ戻る

2021-05-01から1ヶ月間の記事一覧

ムーア・ぺンローズ型一般逆行列

ムーア・ぺンローズ型一般逆行列 行列が特異値分解されている時、(ムーア・ペンローズ型)一般逆行列(疑似逆行列)を次の行列と定義します。が正則であれば、これはと一致します。これを以下で証明します。[証明][証明終わり]特異値分解のときのように以下の行…

特異値と特異値分解

特異値 任意の 行列 に対して、となる正数 を特異値と呼び、 次元ベクトル を左特異ベクトル、 次元ベクトル を右特異ベクトル、合わせて特異ベクトルと呼びます。 の第2式の両辺に を左から掛け、第1式の両辺に を左から掛けるととなることが分かります。 …

メトロポリスヘイスティング法(MH法)

本記事では以下で「メトロポリスヘイスティング法」を「MH法」と表記します。 詳細釣り合い条件 マルコフ連鎖の記事で取り上げたのは遷移核が明らかな状態で定常分布を求める問題でした。 しかし、やりたいことは、事後分布が明らかな状態で、事後分布に従う…

バギング

バギングとは バギングは組の学習データ集合の集合に対してそれぞれ学習を行い、 個の予測器の多数決や平均によって予測を行う手法です。 ブートストラップサンプル ブートストラップサンプルとは、個の学習データから重複を許して 個のサンプルを復元抽出し…

CART - 回帰木

回帰木の学習は分類木の学習と似ていますので、CART - 分類木の記事との違いだけ書きます。 分類木との違い 任意のノードにおける目的変数の算術平均を次式で定義します。回帰木における不純度を次式で定義します。は学習データの集合における目的変数の標本…

CART - 分類木

要件 組の学習データが与えられているとします。 番目の学習データの特徴ベクトルはと表されます。 クラス存在すると想定し、とします。このときです。 この学習データを使った分類木の学習アルゴリズムの一種CARTを以下で説明します。 不純度 各ノードに番…

パーセプトロン

モデルの定義 データ集合を とします。 また、 とします。 はクラス またはクラス に属し、 のとき、、 のとき、 とします。パーセプトロンは2クラスを分類するモデルです。 入力ベクトルを変換して、特徴ベクトルを得たとき、以下のモデルで識別します。は…

【Python実装】遷移核

問題 毎日、同じメニューでは飽きるので、ランチメニューの変更が表の遷移核に従っているとする。 初日のラーメン、カレー、焼きそばの確率が0.3,0.2,0.5のとき、 10日目までのラーメン、カレー、焼きそばの確率を求めよ。 ソース #########################…

マルコフ連鎖

マルコフ連鎖 時間とともに変化する確率変数のことを確率過程といいます。時刻の時の確率変数をとすると、のように変化します。が従う確率分布は、です。がのみから決まる時、この確率過程をマルコフ連鎖といいます。 遷移核 毎日、同じメニューでは飽きるの…

主成分分析 - 誤差最小化による定式化

の別の表現 次元の正規直交基底 を導入します。各データ点 は次のように書けます。 の左から をかけます。 を に代入します。線形代数が得意な人は が自然に見える(導くまでもない)と思います。 目的関数の定義 次元の線形部分空間は、最初の 個の基底ベクト…

主成分分析 - 分散最大化による定式化 - 導出その2

分散最大化 主成分分析 - 分散最大化による定式化 - 導出その1では場合を定式化した後に 一般のについて帰納法を使って定式化しましたが、それとは異なる方法(分散最大化という方針は変わらない)で定式化していきます。をデータ集合の平均とします。をデータ…

主成分分析 - 分散最大化による定式化 - 導出その1

主成分分析とは 主成分分析は、主部分空間と呼ばれる低次元の線形空間上への、データ点の直交射影のことです。主成分分析はKL展開、KL変換とも同義です。 要件 データ集合があります。 は次元のユークリッド空間内の変数とします。次元(に射影することを考え…

K-means法

導入 次元のデータ集合を個のクラスターに分割することを考えます。プロトタイプと呼ばれる個の次元ベクトルを導入します。 各データに対し、対応する2値指示変数を定めます。のイメージは下図です。(の場合) 目的関数 目的関数を以下のように定めます。目的…

逆関数法

逆関数法とは 逆関数法とは、累積分布関数の逆関数を用いて、標準一様分布に従う確率変数から、所望の分布に従う確率変数を生成させる方法です。 逆変換法とも言うようです。を生成させたい確率分布に従う確率変数とし、 をその累積分布関数とします。 が連…

フィッシャーの線形判別 - 多クラス

要件 個のクラスに割り振られた個の次元のデータがあります。 各クラスのデータの分離を保ちつつ、次元へ削減することを考えます。2次元の2クラスのデータを1次元に次元削減する例を下図で示しました。のようなクラス内分散が小さく、クラス間分散を大きくす…

フィッシャーの線形判別 - 2クラス

要件 2個のクラスに割り振られた個の次元のデータがあります。 各クラスのデータの分離を保ちつつ、1次元へ削減することを考えます。2次元の2クラスのデータを1次元に次元削減する例を下図で示しました。のようなクラス内分散が小さく、クラス間分散を大きく…

モンテカルロ積分

モンテカルロ積分法 台形公式は低次元の積分には有効ですが、高次元ではうまくいかないことが多いようです。近似したい積分が、以下であるとします。が確率分布に従う時、大数の法則により近似解は次のように書けます。このように積分を乱数で代用する近似法…

積分近似 - 複合台形公式

台形公式 区間上の関数の積分を考えます。補間多項式の記事で求めた補間多項式を用いて、積分近似してみます。では以下のようにおきました。はによらない定数ですが、計算が大変なため、求めません。の近似のためのの計算式をニュートン・コーツの公式といい…

補間多項式

ルジャンドル多項式 関数に近い多項式を考えます。 区間のいくつかの点のの値から、多項式を補間して近似を行います。区間の中に個の点を取ります。 個の点ではとは一致します。補間多項式の構成には次のルジャンドル多項式が有用です。 補間多項式 ルジャン…

固有値とスペクトル分解

固有値と固有ベクトル を の対象行列とするとき、となる 組の固有値と呼ぶ実数 と固有ベクトルと呼ぶ でないベクトル が存在します。 個の固有値 は固有方程式と呼ぶ 次方程式の解として与えられます。 そして、固有値に対応する固有ベクトル は正規直交系に…

関連ベクトルマシンによる回帰

RVM(関連ベクトルマシン)のモデルの定義 与えられた入力ベクトルに対する実数値の目標変数の条件付き確率分布を次のようにモデル化します。ここで、とします。 平均値は次の線形モデルで定義されます。ここで、と定義すると、は以下のように書けます。で、と…

【Python実装 - sklearn使用】kNN法による回帰

kNN法による回帰 kNNによる回帰を行うときは、KNeighborsRegressorを作成して、fitする。 reg = KNeighborsRegressor(n_neighbors=n_neighbors).fit(X_train, y_train) ソース import matplotlib.pyplot as plt import numpy as np from sklearn.model_selec…

【Python実装 - sklearn使用】kNN法による分類の汎化性能

やりたい事 kNN法による分類をを変化させてグラフを書いてみます。 データを訓練データとテストデータに分割 引数stratifyに均等に分割させたいデータ(多くの場合は正解ラベル)を指定すると、そのデータの値の比率が一致するように分割されます。 # データ…

【Python実装 - sklearn,mglearn使用】kNN法による分類

kNNによる分類 kNNによる分類を行うときは、KNeighborsClassifierを作成して、fitする。 clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X, y) ソース import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split fr…

これなら分かる最適化数学-基礎原理から計算手法まで

必携の1冊 機械学習を学ぶ上で最適化数学は必須の項目です。 最適化数学の本として、超おすすめなのがこの本です。 数学的記法も易しいものを用いているので、数学が苦手な人も読めると思います。数式の変形がとても丁寧なので、独学には最適です。章ごとに…

【Python実装 - sklearn使用】ラッソ回帰と過学習

ソースの説明 ソースは【Python自前実装】曲線フィッティングがベースなので、そちらをご一読ください。 ラッソ回帰 ラッソ回帰は以下の目的関数を最小化する回帰のことで、過学習を防ぐことができます。 # ラッソ回帰(L1正則化)のモデルを作成 lasso_model …

【Python実装 - sklearn使用】リッジ回帰と過学習

ソースの説明 ソースは【Python自前実装】曲線フィッティングがベースなので、そちらをご一読ください。 リッジ回帰 リッジ回帰は以下の目的関数を最小化する回帰のことで、過学習を防ぐことができます。 # リッジ回帰(L2正則化)のモデルを作成 ridge_model …

【Python実装 - sklearn使用】曲線フィッティング

ソースの説明 ソースは【Python自前実装】曲線フィッティングとほぼ同じです。 違いは、LinearRegression が sklearn.linear_model.LinearRegression になっただけです。 ソース import matplotlib.pyplot as plt import numpy as np from sklearn import li…

【Python実装 - sklearn使用】直線フィッティング

線形回帰モデルを使う 線形回帰モデルを使うためにimportします。 from sklearn import linear_model モデルを作成し、学習データを渡し、予測します。 予測時に学習データをの行列にしておく必要があります。 # 線形回帰のモデルを作成 model = linear_mode…

【Python実装 - sklearn使用】digitsデータセットの3と8をSVMで分類

import matplotlib.pyplot as plt from sklearn import datasets, svm from sklearn.metrics import accuracy_score, confusion_matrix from sklearn.metrics import precision_score, recall_score, f1_score # digitsデータをロード digits = datasets.loa…

目次へ戻る