「Machine Learning – A Probabilistic Perspective」第6章を読んだ

前回の続き。難しくなってきたが細々と読み続けている。これを読み切ったら大抵の機械学習本は読めるようになるのではという感覚がある。

第6章は、Frequentist statistics 頻度統計について。この章は比較的知っている内容が多いので読みやすかったと思う。

目次は以下の通り。

  • 6 Frequentist statistics
    • 6.1 Introduction
    • 6.2 Sampling distribution of an estimator
      • 6.2.1 Bootstrap
      • 6.2.2 Large sample theory for the MLE *
    • 6.3 Frequentist decision theory
      • 6.3.1 Bayes risk
      • 6.3.2 Minimax risk
      • 6.3.3 Admissible estimators
    • 6.4 Desirable properties of estimators
      • 6.4.1 Consistent estimators
      • 6.4.2 Unbiased estimators
      • 6.4.3 Minimum variance estimators
      • 6.4.4 The bias-variance tradeoff
    • 6.5 Empirical risk minimization
      • 6.5.1 Regularized risk minimization
      • 6.5.2 Structural risk minimization
      • 6.5.3 Estimating the risk using cross validation
      • 6.5.4 Upper bounding the risk using statistical learning theory *
      • 6.5.5 Surrogate loss functions
    • 6.6 Pathologies of frequentist statistics *
      • 6.6.1 Counter-intuitive behavior of confidence intervals
      • 6.6.2 p-values considered harmful
      • 6.6.3 The likelihood principle
      • 6.6.4 Why isn’t everyone a Bayesian?

著者はベイジアンなアプローチを取った方が一回限りのイベントなどから上手くモデルを構築出来ると述べられているが、頻度主義の統計に慣れしたんでおくことは機械学習の分野で広く使われているため有用であると述べている。

頻度主義とベイズ統計の違いは、頻度主義がデータはランダムでありパラメータが固定されていると考えるのに対して、ベイズ統計ではデータが固定されており、得られたデータから最尤推定によりランダムなパラメータを確定させる、ということです。

最後の6.6節では、頻度統計の望ましくない振る舞いであるpathologyが述べられている。信頼区間やp値に関する問題点などが挙げられる。最後になぜ皆がベイジアンではないのか?という話が書かれており、その中で20世紀はノンベイジアンの時代であったが、21世紀はベイジアンの時代になると述べられている。これが正しかったかは時間が証明するだろう、と締めくくられており、少しカッコいい。

「Machine Learning – A Probabilistic Perspective」第5章を読んだ

前回(「Machine Learning – A Probabilistic Perspective」第4章を読んだ)の続き。

第5章はベイジアン統計について。基本的に著者はベイジアンの立場を取っているようで、本書はここまでベイズ統計の立場から機械学習モデルの解説をしている。次の章は、頻度統計の立場の話だが、そこではなぜ頻度統計ではなくベイジアンの見方を取るべきなのかということが語られている。

分かりやすい解説スライドへのリンクを張っておきます。

目次は以下の通り。

  • 5 Bayesian statistics
    • 5.1 Introduction
    • 5.2 Summarizing posterior distributions
      • 5.2.1 MAP estimation
      • 5.2.2 Credible intervals
      • 5.2.3 Inference for a difference in proportions
    • 5.3 Bayesian model selection
      • 5.3.1 Bayesian Occam’s razor
      • 5.3.2 Computing the marginal likelihood (evidence)
      • 5.3.3 Bayes factors
      • 5.3.4 Jeffreys-Lindley paradox *
    • 5.4 Priors
      • 5.4.1 Uninformative priors
      • 5.4.2 Jeffreys priors *
      • 5.4.3 Robust priors
      • 5.4.4 Mixtures of conjugate priors
    • 5.5 Hierarchical Bayes
      • 5.5.1 Example: modeling related cancer rates
    • 5.6 Empirical Bayes
      • 5.6.1 Example: beta-binomial model
      • 5.6.2 Example: Gaussian-Gaussian model
    • 5.7 Bayesian decision theory
      • 5.7.1 Bayes estimators for common loss functions
      • 5.7.2 The false positive vs false negative tradeoff
      • 5.7.3 Other topics *

最初の方はベイズ統計を使って、どのようにモデルを決めていくかといった内容。MAP推定など。

5.6に経験ベイズの話があり、少し理解しきれていない箇所があるので調べた。以下のページが詳しい。

経験ベイズ

つまりは、事前確率が良く分かっていない状況で、データをもとにして事前確率分布を求めるということだろうか。

最後の方はFalse positiveとFalse negativeについてや、ROCカーブなどについて。この辺は適宜必要な時に見返せば良さそう。

「Machine Learning – A Probabilistic Perspective」第4章を読んだ

前回(「Machine Learning – A Probabilistic Perspective」第3章を読んだ。)の続き。

4章は多変数ガウシアンモデルについて。この章は数学的に他の章よりも難しいと、一番初めに書かれており確かにその通りで難しい。流し読みな感じだけど大丈夫だろうか。

分かりやすい解説スライドを見つけたのでこれで復習しよう。

 

目次は以下の通り。(*がついているところは数学的に難易度が高いところ)

  • 4 Gaussian models
    • 4.1 Introduction
      • 4.1.1 Notation
      • 4.1.2 Basics
      • 4.1.3 MLE for an MVN
      • 4.1.4 Maximum entropy derivation of the Gaussian *
    • 4.2 Gaussian discriminant analysis
      • 4.2.1 Quadratic discriminant analysis (QDA)
      • 4.2.2 Linear discriminant analysis (LDA)
      • 4.2.3 Two-class LDA
      • 4.2.4 MLE for discriminant analysis
      • 4.2.5 Strategies for preventing overfitting
      • 4.2.6 Regularized LDA *
      • 4.2.7 Diagonal LDA
      • 4.2.8 Nearest shrunken centroids classifier *
    • 4.3 Inference in jointly Gaussian distributions
      • 4.3.1 Statement of the result
      • 4.3.2 Examples
      • 4.3.3 Information form
      • 4.3.4 Proof of the result *
    • 4.4 Linear Gaussian systems
      • 4.4.1 Statement of the result
      • 4.4.2 Examples
      • 4.4.3 Proof of the result *
    • 4.5 Digression: The Wishart distribution *
      • 4.5.1 Inverse Wishart distribution
      • 4.5.2 Visualizing the Wishart distribution *
    • 4.6 Inferring the parameters of an MVN
      • 4.6.1 Posterior distribution of μ
      • 4.6.2 Posterior distribution of Σ *
      • 4.6.3 Posterior distribution of μ and Σ *
      • 4.6.4 Sensor fusion with unknown precisions *

Linear Discriminant Analysisがどういうものか何となくわかった気がする。もうちょっと復習が必要だが、とりあえず先に進んでみる。先ほどのスライドにもあったが、ガウス分布はシンプルでありながら現実に即した分布であるので、解釈がしやすい分布であり、線形代数で計算がすむということで広く使われている。

「Machine Learning – A Probabilistic Perspective」第3章を読んだ

前回の続き。「Machine Learning – A Probabilistic Perspective」第3章を読みました。

第三章の目次は以下の通り。この章は、離散データをもとにナイーブベイズなどの手法でモデルを生成しようという話です。段々と数学的に難易度が上がってきた。

  • Generative models for discrete data
    • Introduction
    • Bayesian concept learning 65
      • Likelihood
      • Prior
      • Posterior
      • Posterior predictive distribution
      • A more complex prior
    • The beta-binomial model
      • Likelihood
      • Prior
      • Posterior
      • Posterior predictive distribution
    • The Dirichlet-multinomial model
      • Likelihood
      • Prior
      • Posterior
      • Posterior predictive
    • Naive Bayes classifiers
      • Model fitting
      • Using the model for prediction
      • The log-sum-exp trick
      • Feature selection using mutual information
      • Classifying documents using bag of words

この章で例として出てくるのは、いくつかの数字を観測したうえで、どのモデルから数字が生成されているかを推定するというもの。例えばD={16,8,2,64}を観測したうえでは、2の累乗というモデルの確率が一番高くなります。

その他にも、いくつかのデータが追加された場合に事後確率を更新することができる、ということが書かれています。これによりベイズ推定がオンライン学習に適しているということが言えるそうです(詳しくは8章)

ナイーブベイズについてもこの章の後半で述べられています。ナイーブという言葉の意味はフィーチャーが独立であることを仮定しないから付けられたとのことです。もしこの仮定が成り立たなくても、モデル自体がシンプルなためオーバーフィットしづらく、結果的に良い性能が出ることが多いそうです。

最後にはドキュメントの単語から、内容を分類するタスクが述べられています。Dirichlet Compound Multinominalという分布を使うと、一度観測されたデータはより観測されやすいとモデル化できるそうです。単語のようなスパースなデータを扱う際に、一度登場した単語は同じ文章中に再び登場しやすい、という直感的な感覚に合っているモデルです。

「Machine Learning – A Probabilistic Perspective」第2章を読んだ

前回の続き。

2章は確率論の復習です。一通り、確率は習っているのでスムーズに進めました。確率分布の性質などの部分は後から出てきたときに見返せば良いかなという感じです。

最後に情報理論の節があります。データの分布の相関を測るために使われるのかな。

2章の目次は以下の通り

  • Probability
    • Introduction
    • A breif review of probability theory
      • Discrete random variables
      • Fundamental rules
      • Bayes’ rule
      • Independence and conditional independence
      • Continuous random variables
      • Quantiles
      • Mean and vairance
    • Some common discrete distributions
      • The binomial and Bernoulli distributions
      • The multinomial and multinoulli distributions
      • The Poisson distribution
      • The empirical distribution
    •  Some common continuous distributions
      • Gaussian (normal) distribution
      • Degenerate pdf
      • The Laplace distribution
      • The gamma distribution
      • The beta distribution
      • Pareto distribution
    • Joint probability distributions
      • Covariance and correlation
      • Multivariate Student’s t-distribution
      • Dirichlet distribution
    • Transformations of random variables
      • Linear transformations
      • General transformations
      • Central limit theorem
    • Monte Carlo approximation
      • Example: change of variables, the MC way
      • Example: estimating π by Monte Carlo integration
      • Accuracy of Monte Carlo approximation
    • Information theory
      • Entropy
      • KL divergence
      • Mutual information

以下は、メモしておきたいことを列挙。

Bayesianなアプローチをとってモデルを構築することのメリットは、長期間の頻度が手に入らないイベントを予測するモデルを構築出来ることである。

二項係数nCkは”n choose k”と発音する。

ガウス分布は外れ値(outlier)の影響を受けやすいので、そういう場合は The Stuent’s t distribution を使うとよい。

2つの確率密度分布のdissimilarityを測る尺度として、KL divergenceがある。

低い相関係数であっても、高いMIC(maximal information coefficient)があれば、非線形な関係がある。

 

「Machine Learning – A Probabilistic Perspective」第1章を読んだ

段々と機械学習の概要や基本的な数学が身についてきたと思うので、巷の評価が高い「Machine Learning – A Probabilistic Perspective」を読み始めることにした。

1000ページを超える大著であるため、挫折しないように章ごとにまとめを書いていきたいと思う。

第一章の目次はこんな感じ

  • Machine learning: what and why?
    • Types of machine learning
  • Supervised learning
    • Classification
    • Regression
  • Unsupervised learning
    • Discovering clusters
    • Discovering latent factors
    • Discovering graph structure
    • Matrix completion
  • Some basic concepts in machine learning
    • Parametric vs non-parametric models
    • A simple non-parametric classifier: K-nearest neighbors
    • The curse of dimensionality
    • Parametric models for classification and regression
    • Linear regression
    • Logistic regression
    • Overfitting
    • Model selection
    • No free lunch theorem

目次を見て分かる通り、第一章は機械学習の分類と概要について。

本のタイトルにProbabilistic Perspectiveとある通り、線形回帰の部分からしっかりと確率的になぜ回帰曲線が選ばれるかということが書かれている。

知らなかった言葉としては、latent factorがある。これは高次元のデータのなかに潜在する多くの変数を説明するfactorのこと。

parametric, non-parametricという用語も何となく聞いたことがあるレベルだったが、モデルが固定長のパラメータを持つ場合はparametric、そうでなければnon-parametricということらしい。

ロベールのC++入門講座 その1

ロベールのC++入門講座

ロベールのC++入門講座

将来への不安から今年中にロベールのC++入門講座を読んどこうと思った。

分からなかったこと等のメモとしてここを使っていこうと思う。

最初の方は知っていることが多いので飛ばし気味。

これは知らなかった。includeの話。

P129

ファイル名を< >で囲めば設定されたフォルダの、” “で囲めば今のフォルダのファイルを優先的に調べる。

デーモン君のソース探検 その1

買ってみた。

VMWare上のUbuntuで進めていきます。

まずはNetBSDのソースコードを取得します。がしかし、cvs loginができずに書いてあるとおりには進めないので、普通にFTPでNetBSDのソースコードを取得してきた。

取ってきたバージョンは5.1で、本は1.6を使っているけど基本的なコマンドのソースは同じだろうという判断で進めていきます。

ちなみにlocateコマンドのデータベース作成ですが、


# sh /etc/weekly

はUbuntuでは無いようなので、


# sudo updatedb

でデータベースをアップデートできます。

ロベールのC++入門講座 その2

5章4節

Struct1.cppを今までの理解の確認をかねて、ポインタ渡しのコードにしてみる。


#include <iostream>
using namespace std;

const int MAX_NAME = 16;

struct Student {
char name[MAX_NAME + 1];
int scoreJapanese;
int scoreMath;
int scoreEnglish;
};

void Show(const Student* student) {
cout << "名前 : " << (*student).name << endl << "国語 : "
<< (*student).scoreJapanese << endl << "数学 :"
<< (*student).scoreMath << endl << "英語 ;"
<< (*student).scoreEnglish << endl;

}

int main() {
Student student[] = { { "赤井孝", 73, 98, 86 }, { "笠井大介", 64, 45, 40 }, {
"吉田叶", 76, 78, 69 }, };

int size = sizeof student / sizeof *student;

for (int i = 0; i < size; ++i) {
Show(&student[i]);
}
}