統計的学習理論の用語紹介

# Abstract
統計的学習理論に出てくる用語を紹介する.
関連して、以下のサイトを上から順番に読むと良い.

https://qiita.com/nkt_dev/items/089ab5f082731e474c10
https://qiita.com/mohashi3/items/2951ffdee03d463453b6
https://www.hellocybernetics.tech/entry/2017/06/20/135402
https://www.jstage.jst.go.jp/article/bjsiam/28/1/28_32/_pdf
https://hermite.jp/slides/202009_IIS.pdf
# レベル1

データ: 観測によって得られる情報

学習データ: 学習に用いられるデータのこと. 狭義には、仮説パラメータなどを推定するために直接用いられるデータを指す.

検証データ: 学習結果の性能を検証するためのデータ. 主に、学習アルゴリズムに含まれる正則化パラメータなどを調整するために用いられる.

観測データ: 観測済みのデータ. 通常は学習データと検証データを指す.

テストデータ: 学習アルゴリズムの予測精度を評価するためのデータ. **テストデータは観測データではない**点に注意. テストデータは、「将来的に観測されるデータ」と想定され、学習結果の性能を評価するために別途用意されなければならない.

入力データ・出力データ・ラベル: 
データが入力と出力の組で表される時、データの入力部分を入力データ、出力部分を出力データという. 入力が$x$,出力が$y$の時、入出力データを$(x,y)$と表す。入力$x$がとりうる値の集合を入力空間といい$\mathcal{X}$で表す. 出力値の集合は$\mathcal{Y}$で表す. 出力データが有限集合に値を取るとき、その値をラベルという. とりうるラベルが2種類の時、にゅう出力データ$(x,y)$を2値データといい、ラベルが３種類以上の時多値データという

仮説: 入力空間から出力空間への函数を仮説といい、仮説の集合を仮説集合という. 学習アルゴリズムを観測データ($\simeq$学習データ)を仮説に変換する函数とみなすことができる. 

$\begin{align}
alg:\mathcal{D} \to \mathcal{F};\lbrace (x_{i},y_{i}) \rbrace_{i=1,2,\dots,N} \to f
\end{align}$

(例)2値判別問題における学習アルゴリズムには、サポートベクトルマシンやブースティングがある

判別器・判別函数: 有限集合に値をとる仮説を判別器と呼ぶ. 判別器を記述するために用いられる実数値函数やベクトル値函数を判別関数という. 例えば、、出力が2値ラベルの時、判別関数$f:\mathcal{X} \to \mathbb{R}$を用いて判別器$h:\mathcal{X} \to \lbrace 1,-1\rbrace$を$h(x)=sign(f(x))$と表す.わざわざ判別関数を使って判別器を分解している.これによって仮説集合のモデリングや記述が簡単になる場合がある.

目的関数: 最適化されていく関数.

損失関数: 出力値と予測結果の間の誤差を図る関数を損失関数という.損失関数の値が大きいほど、誤差や損失が大きいことを意味する.目的関数の一つ.

誤差関数: 損失関数の別名.

コスト関数:損失関数に【正則化項】という計算を加えたもの

評価関数: 評価フェイズでの損失関数.　最適化されるわけではないので目的関数ではない.

正則化:過学習（学習しすぎ）を抑えるために調整する計算のことです。

# コラム1
機械学習は以下の手順で行われる:
- モデルを決める
- 目的関数を決める
- 学習アルゴリズム(最適化手法)を決める
- 学習アルゴリズムを実行して最適パラメーターを求める

# レベル2
判別問題: 出力の集合$\mathcal{Y}$が有限集合の時、入力データから対応するラベルを予測する問題を判別問題という. 判別問題では、データからラベルを予測するための判別境界を学習する.

2値判別問題: $|\mathcal{Y}| = 2$の時2値判別問題という. 2値判別のための学習アルゴリズムには、サポートベクトルマシンやブースティングがある.
    - 迷惑メール問題:
           - 入力データ: メールのテキストデータ
           - 出力ラベル: spam or non-spam 
           - 損失関数に0-1損失を使う.

回帰問題: 出力が実数を取るとき、入力データから出力を予測する問題を回帰問題という.
        - 判別問題と異なり、出力と完全一致する値を予測することは通常不可能
        - よって、予測の制度を図る損失関数として２乗損失をよくつかう

ランキング問題: Web検索、将棋の電脳戦など. 適当に損失を設定することで判別問題に帰着できる.

予測損失と経験損失: 仮説の予測損失は、データがある確率分布にしたがって発生すると仮定したときの、仮説の損失の期待値. 経験損失は、観測データに対する仮説の損失の算術平均値.経験損失は、確率分布を一様分布とした場合の損失の期待値として表すことができ、これから、一般に経験損失は予測損失の不偏推定量になっていることが簡単に示せる.多くの統計的学習の問題は、予測損失を最小化する仮説を求めるという問題に定式化できる. しかし、通常の問題設定ではデータの分布は未知なので、正確な予測損失の値は計算することはできない. そこで近似として、経験損失を最小化する仮説をまず考える. その後、経験損失を使った学習で求めた仮説の精度を評価するために、経験損失と予測損失の間の違いを見積もる. つまり、経験損失と予測損失の差を評価するための方法が必要である.このような理論的評価から得られる知見を用いて、学習アルゴリズムによって得られる仮説に精度保証を与えたり、既存のアルゴリズムの性能を改良することなどが可能になる.

マージン損失: 学習アルゴリズムは通常、損失関数の(仮説のパラメーターによる)微分係数を使って構成されるので、損失関数が微分不可能な場合(例えば0-1損失など)、学習アルゴリズムの構成や実行が困難である.　この問題は判別問題において顕著である. そこで、判別問題では、仮説として、間になめらかな実数値関数を噛ませて、それと符号関数($sign$)の合成関数として表現し、滑らかな関数を学習する、という手法を取ることが多い. 滑らかな関数を使って微分可能な滑らかな損失関数を構成することで、学習アルゴリズムを実行しやすくする.間に一枚噛ませる滑らかな実数値関数のことを、「判別関数」という.このような考え方で損失を構成する際に、(0-1損失や2乗損失のような)素朴な損失を拡張させた概念として、「マージン損失」というものを導入する. 判別問題では、0-1損失を拡張した0-1マージン損失を考える.しかし、0-1マージン損失はそのままだと非凸な不連続関数であるため、最適化しやすい別の関数に置き換えて学習アルゴリズムを構成するアプローチをとることが多い。 例えば、サポートベクトルマシンという学習アルゴリズムでは「ヒンジ損失」、ブースティングという学習アルゴリズムでは「指数損失」、ロジスティック回帰という学習アルゴリズムでは「ロジスティック損失」というマージン損失を用いる.「素朴な損失をマージン損失に置き換える」「マージン損失が非凸で不連続な場合、別のマージン損失に置き換える」という2段階を考えている.このようにして、0-1損失の代わりに別の性質の良いマージン損失に置き換えることを正当化するには、性質の良いマージン損失を使って学習された判別関数が予測判別誤差を小さくしていることを検証する必要がある.その検証のために、「判別適合的損失」という概念を考える.

判別適合的損失: 
判別関数$g$とそのマージン損失$\phi$について、その予測損失を$R_{\phi}(g)$とする. 難しいので省略.

複雑度: 仮説集合がどれだけ大きいかを表す指標で基本的なものにVC次元、ラデマッハ複雑度がある.

2値判別問題におけるVC次元: 2値判別問題を考える. この時VC次元を次のように定義する:
$\begin{align}
\text{ある入力$x=(x_1,\dots,x_n) \in \mathcal{X}$に対して、$\mathcal{Y}^n$の部分集合} \\
\lbrace (h(x_1),\dots,h(x_n)) \in \mathcal{Y}^n |h \in \mathcal{H} \rbrace \\
\text{の要素数を}
\Pi_{\mathcal{H}}(x_1,\dots,x_n) :=|\lbrace (h(x_1),\dots,h(x_n)) \in \mathcal{Y}^n |h \in \mathcal{H} \rbrace|
\text{
とおく.このとき、$\mathcal{H}$のVC次元$\rm{VCdim}(\mathcal{H})$を
}
\rm{VCdim}(\mathcal{H}):=\max \lbrace n \in \mathbb{N} | \max_{(x_1,\dots,x_n)\in \mathcal{X}^n} \Pi_{\mathcal{H}}(x_1,\dots,x_n) = 2^n \rbrace 
\text{
で定義する.
}
\end{align}$

近似誤差と推定誤差,過剰適合:
以下が成り立つ
$\begin{align}
R_{\rm{err}}(h_{S}) - R_{\rm{err}}(h_{0}) \leq \rm{bias_{\mathcal{H}}} +\rm{var_{\mathcal{H}}}
\end{align}$
ただし、
$\begin{align}
\rm{bias_{\mathcal{H}}}  =　R_{\rm{err}}(h_{\mathcal{H}}) - R_{\rm{err}}(h_{0}),
\rm{var_{\mathcal{H}}} = \sqrt{\frac{2}{n} \log \frac{2|\mathcal{H}|}{\delta}}
\end{align}$
データ数$n$を固定した時,仮説集合$\mathcal{H}$のサイズが大きければ大きいほど近似誤差$\rm{bias_{\mathcal{H}}}$は小さくなるが推定誤差$\rm{var_{\mathcal{H}}}$が大きくなる. この現象を過剰適合という. 
過剰適合を避けて予測精度の高い仮説を得るためには、${bias}_{\mathcal{H}}+{var}_{\mathcal{H}}$の値が小さくなるように仮説集合を調整する必要がある.つまり、
$\hat{m} = \arg \min_{m}  {bias}_{\mathcal{H}_{m}}} +{var}_{\mathcal{H}_{m}}$
とするとき、$\mathcal{H}_{m}$を用いれば良い.
データ数$n$が十分大きい時は$bias_{\mathcal{H}}$に対して$$\rm{var_{\mathcal{H}}}$はそれほど大きくならないので、過剰適合は起こらない.
近似誤差の値はデータの分布に依存するので、この基準で仮説集合を選ぶ方法は実用的ではない。実用的な方法として、正則化法が知られている.
（過剰適合の例）
線形モデルでは、仮説空間の次元＝基底関数の数,なので、基底関数の数が多いほど過剰適合が起こりやすい. すなわち、例えば説明変数が$x$の1個だけの場合、$\phi_{n}(x) = x^n (0 \leq n 
 \leq D, D\in \mathbb{Z}_{\geq 0})$で定まる冪級数展開による近似を考えた時、$D$が大きいほど観測データにフィットする近似曲線が得られるが、すでに与えられた観測データに過剰に忖度するあまり柔軟性を失い、未知のデータに対する予測能力がへる.


正則化: ペナルティを課す.

代理損失: 
[このページ](https://hermite.jp/slides/202009_IIS.pdf)
を参照.
```
今回は 2 値判別問題に代理損失を用いることの正当性について考えることにします。

記号は前回定義したものを断りなく使用します。

前回の議論から予測 ϕerr
-損失にはベイズ規則が存在し、ベイズ規則を条件付確率で表現することができました。機械学習の一般論に従えば、現時点で入手可能な教師データを使って予測 ϕerr
-損失の推定量を考えて、学習アルゴリズムによってその損失を最小化する仮説（推定量）を求め、直接得ることが出来ないベイズ規則の代わりに用いる、というようになるのですが、0-1 損失を最小化する方法は 2n
 通りある判別方法を総当たりで調べる以外の良い方法が知られていません。そこで ϕerr
-損失の代わりとなる損失（これを代理損失と言います）を用いて 2 値判別を行うということが機械学習では良く行われています。
```