あなたは何と呼んでますか?機械学習で頻出の関数・指標の枠組みについて
機械学習には用語がいっぱい
機械学習モデルの役割は、未知のデータに対する予測精度を最大化するように、既知のデータを利用してモデル内部のパラメータを最適化することです。 最適化するためには、理想と現実の距離を図るための指標や関数が必要です。 機械学習は最適化のお化けみたいなモデルも扱うので、関数も指標もたくさん出現し、ごちゃごちゃしてきます。
また、データサイエンス界隈は本質的に学際分野で、数学やら物理学やらコンピュータサイエンスやら経済学やら、 それぞれの分野での慣習的な呼び方があるので、色々な分野出身の人と会話していると、さらに混乱してきます。 GRIにも様々なバックグランドの人がいるので、たまに誤解する時があります。 議論の文脈を考えれば大方は伝えたいことは理解できるのですが、最近は統一感が欲しくなってきました。
このページに個人的な呼び方をまとめます
特に人によって色々な呼び方がされてると感じる項目に関して扱います。 フィードバックを頂いたりして随時アップデートする予定ですが、現時点での個人的な呼び方を整理しておこうと思います。
TL;DR
- 最適化したい最終的な関数は目的関数(Objective Function)
- 目的関数はコスト関数(Cost Function)と正則化項(Regularization Term)に分解できる
- コスト関数はデータ点ごとの誤差を表す損失関数をデータ全体に適用したもの
- 識別モデルでいうAccuracyなどの指標、回帰モデルでいうR2などの指標は評価指標(Metrics)
- 決定木のジニ不純度や情報利得は分割基準(Criteria)
目的関数とコスト関数と損失関数
それぞれの定義を、線形回帰モデルを例にして示します。 正則化項が付加された線形回帰モデルでは、最適化したい関数は以下のように記述します。
ここで、はモデル内部のパラメータ(線形回帰係数)、はn番目の正解データと予測値との距離を表す関数、は過学習を防ぐためにペナルティを課す正則化項を表します。
上式でいうとそれぞれ、
- 目的関数:
- コスト関数:
- 損失関数:
にカテゴライズされます。人によって特にバラつくのは以下のようなパターンです。
- コスト関数と正則化項をまとめてコスト関数と定義
- コスト関数と損失関数を同じものと定義(両方まとめて損失関数など)
ふわっとした議論の場合には気にならないのですが、モデルの性能が思ったより悪かった時など厳密に議論し始めると途端にミスコミュニケーションが発生するので、 少なくとも社内では各関数の言葉の定義に統一感を出したいと思っています。
評価指標
評価指標はモデルの精度をざっくりと直感的に示すのに利用されます。
識別モデルの場合では、
- Accuracy
- Precision
- Recall
- F1
が挙げられます。各指標ごとに、例えばAccuracyは正解率などの和名もありますが、その和名はどれも直感的にピンと来ないので、評価指標は英名を利用推奨派です。
また、回帰モデルの場合では、
- R2
- MSE
- MAE
などが挙げられます。MSEなどは場合によってコスト関数にもなるので、どちらの文脈で使っているかがきちんと伝わると良いと思います。
【番外編】分割基準
GRIでは決定木ベースのモデルを利用することが多いので、決定木モデル特有の話題も書いておきます。 決定木は、ノードと呼ばれる単位にデータを分割し、葉と呼ばれる終端ノードで識別あるいは回帰モデルを走らせます。 データをうまく分割してやらないと、モデルの性能は期待できません。 「うまい分割のされ方」の指標として、識別モデルでは
- Gini不純度
- 情報利得
回帰モデルでは
などがよく利用されます。 これらの指標のことをメトリクスと呼ぶ人もいると思いますが、その場合はモデルの性能を示す評価指標と同じ名称になる可能性があるので、 「分割基準」「基準」「Criteria」などの言葉の方が間違いがないと考えています。
最後に
データサイエンスは色々な分野の人と議論できるので、とても楽しいです。 ただ、言葉の揺らぎも大きいなと感じます(マーケティング的な使われ方も含めて)。 正確な議論する時はお互い共通認識を持った言葉がベースになるので、みんな納得できる尤もらしい呼び方を模索していきたいです。