『入門 機械学習による異常検知 — Rによる実践ガイド —』（コロナ社、2015）
第2刷正誤表井手剛
https://ide-research.net/jpn/book/
July 13, 2022

Chapter 1

異常検知の基本的な考え方• p.19 2.2.2 最初のパラグラフ（坂内匠様のご教示に感謝いたします）。
– 誤: 単に式(2.3)の対数を計算すると– 正: 単に式(2.3)の対数を計算して符号を変えると

2

Chapter 2

正規分布に従うデータからの異常検知• p.28, 式(2.17)。
PN
1(n)– 誤: 0 = ∂L)
n=1 (µ − x∂µ = − 2σ 2PN1(n)– 正: 0 = ∂L)
n=1 (µ − x∂µ = − σ 2• p.34 式(2.28)の導出に関し、 y2 , . . . , yN の期待値がゼロになるという事実を明示的に書いていなかったので若干わかりにくかったと思います。
下記のように更新します（中西惇様のご指摘に感謝します）。
– 旧: 最後に、定理 2.4 の 3. ですが、定理 2.3 と式 (2.24) により– 新: 最後に、定理 2.4 の 3. ですが、p(Y ) の式によれば yn の期待値が u⊤n u1 に比例していること、 したがって固有ベクトルの直交性から n = 2, . . . , N に対しゼロになることに注意します。 このことと、定理 2.3 と式 (2.24) により• p.43 実行例2.5、4行目。これは間違いではありませんが、実行例のすぐ上の説明と矛盾しているので訂正します。大塚誠様のご教示に感謝いたします。
– 誤: a <- rowSums((Xc %*% solve(Sx)) * Xc) # 異常度– 正: a <- colSums( t(Xc) * solve(Sx,t(Xc)))# 異常度• p.46 式 (2.42) およびその上の式（藤本望夢様のご教示に感謝します）。
– 誤:
dz (1) · · · dz (N ) = dv 2−1 |v|−(N −2)/2 dS1,Ndz (1) · · · dz (N ) = dV 2−M |V|−(N −M −1)/2 dSM,N
3

CHAPTER 2. 正規分布に従うデータからの異常検知

4– 正:dz (1) · · · dz (N ) = dv 2−1 |v|(N −2)/2 dS1,Ndz (1) · · · dz (N ) = dV 2−M |V|(N −M −1)/2 dSM,N• p.47 式(2.44)（藤本望夢様のご教示に感謝します）。
– 誤:
p(A) = f (A) × 2−M |A|−(N −M −1)/2 ×2M π M N/2
ΓM (N/2)

p(A) = f (A) × 2−M |A|(N −M −1)/2 ×2M π M N/2
ΓM (N/2)– 正• p.55 下から6行目（眞田明様のご教示に感謝します）。
– 誤: µ̂ は式(2.19)で示したとおり、平均 0、分散 σ 2 (N + 1)/N の正規分布に従います。
– 正: x′ − µ̂ は式(2.19)で示したとおり、平均0、分散 σ 2 (N + 1)/N の正規分布に従います。
• p.56, 式 (2.57)
qhi−(m+1)/21t2– 誤 S(t | N − 1, 0) = Γ[(m+1)/2]
1+Γ(m/2)πmmq
hi−(m+1)/22t1– 正 S(t | m, 0) = Γ[(m+1)/2]
Γ(m/2)
πm 1 + m• p.56, 式 (2.57)
qhi−(m+1)/2t2
1– 誤 S(t | N − 1, 0) = Γ[(m+1)/2]
Γ(m/2)
πm 1 + mqhi−(m+1)/21t2– 正 S(t | m, 0) = Γ[(m+1)/2]
1+Γ(m/2)πmm

Chapter 3

非正規データからの異常検知• p.63 実行例3.1、3行目（濱田慧様のご教示に感謝いたします）。
– 誤: si <- sd(Davis$weight)*(N-1)/N #標準偏差– 正: si <- sd(Davis$weight)*sqrt((N-1)/N) #標準偏差• p.69 3.2.3 節の冒頭4行（遠藤秀和様のご教示に感謝いたします）。(3.16)式(n)は(3.18)式の誤り。また、zi ではなくてδ(z (n) , i)の期待値。
– 誤: 最尤推定に使う尤度 L(θ | D) は(3.16)式のようなすっきりした形になっています。問題は仮想的変数が未知だったことですが、今やわれわれは、(3.20)式に基づき数値として計算済みと想定して(n)(n)います。 zi をqi に置き換えた上で素朴に(3.16)式をパラメターで微分すると、次のような式を得ます。
– 正: 最尤推定に使う尤度L(θ | D)は(3.18)式のようなすっきりした形になっています。 問題は仮想的変数が未知だったことですが、今やわれわれは、(3.20)式に基づき数値として計算済みと想定して(n)います。 δ(z (n) , i)をqi に置き換えた上で素朴に(3.18) 式をパラメターで微分すると、次のような式を得ます。
• p.71、上から3行目（森川浩司様のご指摘に感謝いたします）。
– 誤: 標準偏差sig0=3の正規分布– 正: 標準偏差sig1=3の正規分布• p.83、実行例3.6のすぐ上（森川浩司様のご指摘に感謝いたします）。
– 誤: 評価します（実行例3.6）。
– 正: 評価します。次の実行例3.6は、標本数をn，カーネル行列をKとして格納した前提の計算例です。
• p.88 式 (3.51)（藤本望夢様のご教示に感謝します）。
5

CHAPTER 3. 非正規データからの異常検知

6– 誤:L(Θ|D) = lnNY(n)p(x|Θ) =NXln

n=1

i=1KX

πk N (x(n) | µk , Σk )

k=1

– 正:
L(Θ|D) = ln

NYp(x(n) |Θ) =n=1NX
n=1lnKXπk N (x(n) | µk , Σk )k=1

• p.92、実行例3.8、1行目（山下智輝様のご指摘に感謝いたします）。
– 誤: $ 混合比を取り出す– 正: # 混合比を取り出す

Chapter 4

性能評価の方法• p.112、上から3行目（佐々木俊久様のご指摘に感謝いたします）。
– 誤: ソートされた異常度anomaly sortedの関数として– 正: ソートされた異常度score_sortedの関数として

7

Chapter 5

不要な次元を含むデータからの異常検知• p.126 最初の式。森川浩司様のご指摘に感謝いたします。
PNPN– 誤: N1 i=1 u⊤ x(n) = N1 u⊤ n=1 x(n) = N1 u⊤ µ̂PNPN– 正: N1 n=1 u⊤ x(n) = N1 u⊤ n=1 x(n) = u⊤ µ̂• p.128 式(5.13)およびその下の式（福永裕子様、 岩田和大様のご教示に感謝いたします）。
– 誤: 正規直交基底u1 , . . . , um を求めるためには
1ui = √ X̃vi
λi(5.13)とすればいいことが直ちにわかります。なぜなら
111u⊤vi⊤ X̃⊤ X̃vj = pλj vi⊤ vj = p
λj δi,j = δi,ji uj = pλi λjλi λjλi λjとなるからです。
– 正: 正規直交基底u1 , . . . , um を求めるためには
1ui = √ X̃viνi(5.13)とすればいいことが直ちにわかります。なぜならu⊤i uj = √111vi⊤ X̃⊤ X̃vj = √νj vi⊤ vj = √νj δi,j = δi,jνi νjνi νjνi νjとなるからです。
89• p.130、式(5.18)の2行下。森川浩司様のご指摘に感謝いたします。
– 誤: 正規直交ベクトルをr − M 本加えて
– 正: 正規直交ベクトルをM − r本加えて• p.130、下から４行目。池田弘様のご指摘に感謝いたします。
– 誤: 式(5.21)から、ΛM のゼロ対角要素に対応する部分を省略して– 正: 式(5.20)から、ΛM のゼロ対角要素に対応する部分を省略して• p.132 上から4行目。吉川岳様のご指摘に感謝いたします。
– 誤: N × N の中心化グラム行列の上位r個の規格化された固有ベク
トルv1 , . . . , vm を求め– 正: N × N の中心化グラム行列の上位m個の規格化された固有ベク
トルv1 , . . . , vm を求め• p.132、下から3行目。森川浩司様のご指摘に感謝いたします。
– 誤: M 次元空間の正規直交基底r個が– 正: M 次元空間の正規直交基底m個が• p.143 式(5.45)（藤本望夢様のご教示に感謝します）
。
– 誤:

p(z (n) |x(n) , Θ) = N z (n) M−1 W⊤ (x − x̄), σ 2 M−1– 正:
p(z (n) |x(n) , Θ) = N z (n) M−1 W⊤ (x(n) − x̄), σ 2 M−1となるからです。
• p.144、式(5.47)の3行目。森川浩司様のご指摘に感謝いたします。
2– 誤: − M2 ln(2πσ ) + p– 正: − M2N ln(2πσ 2 ) + p• p.144、式(5.49)。那須翔太様のご指摘に感謝いたします。
⊤– 誤: ⟨z (n) z (n) ⟩ = σ 2 M′⊤′−1– 正: ⟨z (n) z (n) ⟩ = σ 2 M′

+ ⟨z (n) ⟩⟨z (n) ⟩⊤−1+ ⟨z (n) ⟩⟨z (n) ⟩⊤• p.154 上から2行目（辻善夫様のご教示に感謝します）。
– 誤: Dにしたのと同一の非線形変換x ← ϕ(x)を施して、– 正: Dにしたのと同一の非線形変換x → ϕ(x)を施して、CHAPTER 5. 不要な次元を含むデータからの異常検知

10• p.155 式 (5.69)（眞田明様のご教示に感謝します）
。
– 誤:

v⊤
r1am=1 (D, D′ ) = 1 − √1 HN BHN ′ √γ1λ1– 正:
am=1 (D, D′ ) = 1 −v⊤r
√1 HN BHN ′ √ 1
γ1λ1

2

Chapter 6

入力と出力があるデータからの異常検知• p.167 式(6.20)（平田大貴様のご教示に感謝します）。
– 誤:e(λ) =12diag(IM − H)−1 (IM − H)ỹN
Ne(λ) =

12diag(IN − H)−1 (IN − H)ỹNN– 正:• p.168 1行目（平田大貴様のご教示に感謝します）。
– 誤: また、diag(IM − H)−1 は、第i対角要素が(1 − Hi,i )−1 となる対角行列である。
– 正: また、diag(IN − H)−1 は、第i対角要素が(1 − Hi,i )−1 となる対角行列である。
• p.168、最初の式。森川浩司様のご指摘に感謝いたします。
−1= A−1 + A−1 x̃(n) [1 − x̃(n)⊤ Ax̃(n) ]x̃(n)⊤ A−1−1= A−1 + A−1 x̃(n) [1 − x̃(n)⊤ A−1 x̃(n) ]−1 x̃(n)⊤ A−1– 誤: [· · · ]– 正: [· · · ]• p.168、式(6.23)。
 (n)2ỹ − x̃(n)⊤ α̂ridge
2PN– 正： e(λ) = N1 n=1 (1−H1n,n )2 ỹ (n) − x̃(n)⊤ α̂ridge– 誤： e(λ) = N1

PN

1N =1 (1−Hn,n )2• p.172、 図6.3 (b)。 これは出版社との連携ミスで、 別の図が使われてしまったようです。原図は下記です。森川浩司様のご指摘に感謝いたします。
11

CHAPTER 6. 入力と出力があるデータからの異常検知

0.4
0.3
0.2
0.1
0.0

anomaly score

0.5

120

10

20

30

40index• p.172、実行例6.2。5行目。異常度の計算にミスがありました。佐々木俊久様のご指摘に感謝いたします。
– 誤: a <- (as.numeric(ypred) - y)^2/((1 - TrHN)*sig2)– 正: a <- (as.numeric(ypred) - y)^2/((1 - TrHN)^2*sig2)• p.174、真ん中の式の上。那須翔太様のご指摘に感謝いたします。
– 誤: 生のxを扱う代わりに、個の正規直交基底– 正: 生のxを扱う代わりに、m個の正規直交基底• p.176、下から5行目。那須翔太様のご指摘に感謝いたします。
– 誤: 基底pを[c1 , . . . , cM ]⊤ のように求めます。
– 正: 基底p1 を[c1 , . . . , cM ]⊤ のように求めます。
• p.184、上から8行目。大堀龍一様のご指摘に感謝いたします。
– 誤: そのようにして特異ベクトルを(α̃1 , β̃ 1 ), (α̃2 β̃ 2 ), . . .のように求めたとしましょう。
– 正: そのようにして特異ベクトルを(α̃1 , β̃ 1 ), (α̃2 , β̃ 2 ), . . .のように求めたとしましょう。
• p.189の2つ目の式（藤本望夢様のご教示に感謝します）。
– 誤:
σ 2 IN +σ2λ̂Φ⊤ Φ = (σ 2 )N λ̂−M |A|– 正:
σ 2 IN +σ2λ̂Φ⊤ Φ = (σ 2 )N λ̂−Mϕ |A|• p.189、3番目の式。森川浩司様のご指摘に感謝いたします。
−1
2– 誤: σ 2 IN + σλ̂ Φ⊤ Φ= σ12 IMϕ − Φ⊤ A−1 Φ−12= σ12 IN − Φ⊤ A−1 Φ– 正: σ 2 IN + σλ̂ Φ⊤ Φ

13
• p.189 式(6.66)（森川浩司様、藤本望夢様のご教示に感謝します）。
– 誤:ln E(σ 2 ) =iN
1 hln(2π) − ln (σ 2 )N λ̂−M |A|22
1 ⊤− 2 yNIMϕ − Φ⊤ A−1 Φ yN
2σ– 正:ln E(σ 2 ) = −i
1 hNln(2π) − ln (σ 2 )N λ̂−Mϕ |A|22
1 ⊤− 2 yNIN − Φ⊤ A−1 Φ yN
2σChapter 7

時系列データの異常検知• p.198 実行例 7.1の2行目。森川浩司様のご指摘に感謝いたします。
– 誤:
dt <- read.table(file=paste(dir,"qtdbsel102.txt",sep=""))– 正:
X <- read.table(file=paste(dir,"qtdbsel102.txt",sep=""))• p.200 下から4行目（眞田明様のご教示に感謝します）
。
(t)

(t)

(t)

(t)

(t)

– 誤: ただし、v (t) = [v1 , v2 , . . . , vk ]⊤ です。
(t)– 正: ただし、v (t) = [vk , vk−1 , . . . , v1 ]⊤ です。
• p.202 手順 7.2（眞田明様のご教示に感謝します）
。
– 誤:
(t)

(t)

(t)

(t)

∗ a) 履歴行列とテスト行列 : 式(7.4) と式(7.5)からH1 とH2 を作る。
(t)(t)∗ b) 特異値分解: H1 , H2 を特異値分解し、左特異ベクトルの行(t)(t)列Um , Qm を求める。
– 正:∗ a) 履歴行列とテスト行列 : 式(7.4) と式(7.5)からX1 とX2 を作る。
(t)(t)∗ b) 特異値分解: X1 , X2 を特異値分解し、左特異ベクトルの行(t)(t)
列Um , Qm を求める。
• p.203 上から4行目。辻善夫様のご指摘に感謝いたします。
– 誤: 過去側に主部分空間への射影– 正: 過去側の主部分空間への射影
1415• p.205 式 (7.10) 。大堀龍一様のご指摘に感謝いたします。
– 誤: ξ (t) ≈ α1 ξ (t−1) + α2 ξ (t−2) + · · · + αr ξ (t−r)– 正: ξ (t) ≈ α1 ξ (t−r) + α2 ξ (t−r+1) + · · · + αr−1 ξ (t−2) + αr ξ (t−1)• p.207 式 (7.15) 。大堀龍一様のご指摘に感謝いたします。
– 誤: ξ (t) ≈ A1 ξ (t−1) + A2 ξ (t−2) + · · · + Ar ξ (t−r)– 正: ξ (t) ≈ A1 ξ (t−r) + A2 ξ (t−r+1) + · · · + Ar−1 ξ (t−2) + Ar ξ (t−1)• p.208 下から2行目の式（平田大貴様のご教示に感謝します）。
– 誤:∂L= YX⊤ − AXX⊤
∂A– 正:∂L= Σ−1 (YX⊤ − AXX⊤ )∂A• p.215 図7.9のキャプション。小野剛様のご指摘に感謝いたします。
– 誤: 図7.9 部分空間同定法の説明。
– 正: 図7.9 部分空間同定法の説明。 本文中の設定だとpとfには一般に多少の重なりが生じます（図7.4 も参照）。
• p.219 上から6行目。辻善夫様のご指摘に感謝いたします。
– 誤: 改めててデータを– 正: 改めてデータを• p.220 手順7.4の 2)（眞田明様のご教示に感謝します）。
′– 誤: 先に状態変数の推定値 Z ′ = {ẑ (1) , . . . , ẑ (T ) } を用意する（T ′ =T −w ）。
′– 正: 先に求めた状態変数の推定値から Z ′ = {ẑ (1) , . . . , ẑ (T ) } を用意する（T ′ = T − w ）。
• p.221。下から3行目（藤本望夢様のご教示に感謝します）。
– 誤: 分子はモデル (7.28) および式(7.29) そのものですが– 正: 分子はモデル (7.27) および式(7.29) そのものですがChapter 8

よくある悩みとその対処法• p.232 式(8.3)の下から (8.4)まで（眞田明様のご教示に感謝します）。
– 誤: 例 え ば 共 分 散 行 列 の 場 合 は、 Σt = (1/t)
x̄t x̄⊤t なので、 第1項について f(t)共分散= x(t) x(t)(t) (t) ⊤−n=1 x x

Pt⊤

とおいて更新式を作り、その後第2項を加えることで次のように計算できます。
Σ̃t+1 = (1 − β)Σ̃t + β f(t+1)

共分散Σt+1 = Σ̃t+1 − x̄t+1 x̄⊤t+1(8.4)(n) (n) ⊤x−n=1 xPt⊤(t)(t) (t) ⊤x̄t x̄t なので、第1項について f = x x
とおいて Ft = (1/t) n=1 f (n)– 正: 例 え ば 共 分 散 行 列 の 場 合 は、 Σt = (1/t)

Ptに対して更新式を作り、その後第2項を加えることで次のように計算できます。
Ft+1 = (1 − β)Ft + β f (t+1)Σt+1 = Ft+1 − x̄t+1 x̄⊤
t+116(8.4)

付録• p.258、下から2番目の式。森川浩司様のご指摘に感謝いたします。
−1−1−1– 誤: Λ−1aa = Σaa − Σab Σbb Σba Js Λaa Λab = −Σab Σbb−1−1−1– 正: Λ−1aa = Σaa − Σab Σbb Σba Js Λaa Λab = −Σab Σbb• p.259、定理A.9。森川浩司様のご指摘に感謝いたします。
– 誤: p(x | x) および p(y) は次で与えられる。
– 正: p(x | y) および p(y) は次で与えられる。
• p.265、下から4行目。 g(x) = cの形の制約についての記述が乱暴でしたので修正いたします。森川浩司様のご指摘に感謝いたします。
– 誤: g(x) = cという制約を加えても，同様に定理が成立することは明らかです。
– 正: g(x) = cという制約を加えても，式(A.68)が成立することは明らかです。

17

索引
現時点で判明している誤りはありません。

18