「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]);
}
}