📑

ラベルセットが順序尺度である場合のモデル評価方法

2022/12/11に公開

おはようございます。今回は、ラベルセットが順序尺度である場合のモデル評価方法についてです。詳しくは以下に。

前置き

作品

この記事では便宜上、人間やAIモデルによって作られたもの全般を、総称して「作品」と呼ぶことにします。分かりやすい例としては、文章、芸術作品(絵画など)、建物などです。
また、AIモデルによる作品の例は次のものです。

  • 機械翻訳タスクにおける翻訳された文章
  • 文書要約タスクにおける候補文(要約結果)
  • 画像キャプション生成タスクにおける生成されたキャプション
  • 画像生成タスクにおける生成された画像

問題設定

今回の記事では、次のような問題を考えてみます。

設定

仮に、各作品に対してA、B、C、D、E、F、およびGの7種類のうちいずれかのラベルが付与されているとします。これらのラベルは、人間によるランクづけです。人間が、何かしらの基準により良し悪しを判定したものです。Aが最高ランクで、B、C…と進むにつれランクが下がります。Gが最低ランクです。このような順序性のあるラベル群を、順序尺度と言います。

各作品に対してラベル(A、B、…Gのいずれか)を推論するためのモデルを、1つまたは複数準備します。そして、各モデルごとに各作品のラベルを推論し、推論結果(A、B、…、Gのいずれか)を作品に割り当てることを考えます。その点では、分類タスクみたいなものです。

当然ですが、推論結果が的中(推論結果、および元々付与されているラベルが一致していること)するモデルが理想です。また、推論結果が不正解だとしても、なるべくランクが近いほうが理想的です(例えば、ある作品に付与されているラベルがEなら、推論結果がAであるよりもCやDのほうが良い)。

ここで問題は、より具体的に、どうやってモデルを評価(モデルの推論性能の評価)すればよいかです。

特に、新しい作品やランクづけ未済の作品を、自動的に評価できると便利です。そうなると、ラベルを推論するためのモデルを評価したくなる場面が出てくると思います。そんなときに、この問いについて考えるのが意義深いと思います。

さらに細分化するなら、次のそれぞれの場合ごとに答えを考えてみたいです。

  • 各作品のラベル自体を推論したい場合
  • 複数の作品のランクの高低を相対的に比較して評価したい場合

補足:「評価」という言葉の分類

この記事では、「評価」という言葉、あるいはこれに類する言葉は、主に次の2種類のうちいずれかになります。

  • 作品に対する、モデルによる評価(モデルによる推論結果が人的評価にどのくらい沿っているかを表す。簡単な例だと、正解率などの数値。この記事では、その評価の高さを「評価値」と表現する。)
  • モデル自体に対する評価

評価という言葉自体の意味合いが分からなくなった場合は、上の分類のうちどれに当てはまるのかを考えるといいです。

大まかな方針

上の問いには、まずは「どういうモデルほど良いモデルとするか」の大まかな方針を定めます。個人的には、場合に応じて次の方針を採るのがいいと思います。

前者/後者 場合 採るとよい方針 モデル評価方法(あるいは評価指標)の例
前者 各作品のラベル自体を推論したい場合 「ラベル自体を高精度で推論できるモデル」を良いモデルとする方針 ・正解率
・MAE(平均絶対誤差)
・「0.5の『ランク差(の絶対値)』乗」を評価値とする方法
後者 複数の作品のランクの高低を相対的に比較したい場合 「比較的ランクの高い作品ほど高く評価できるモデル」を良いモデルとする方針 ・相関係数
・2作品のうちどちらが高ランクかをモデルに推論させてモデルを評価する

ここで便宜上、1つ目の場合を前者、2つ目の場合を後者と呼んでいます。
また、あとで見返す際の利便性のために、モデル評価方法の例の列を加えています。これについてはこれから説明します。

各作品のラベル自体を推論したい場合

この場合に、上述の問題に対してどう答えを出すか。

正解率(accuracy)は…

最も単純なのは、分類系タスクにおいておなじみの正解率(accuracy)を用いることです。作品ごとに、推論結果が正解なら評価値として1.0点、不正解なら0.0点を付与し、最後に各得点の平均を取ります(※得点が連続量であることを強調するために、1.0のような小数で表現しています)。
その値の高いモデルほど、良いモデルとするわけです。

しかしこの方法だと、ラベルEに対し、推論結果がAでもDでも同じ0点です。Dのほうが正解のEに近いのに、Aに比べてDを高く評価することができません。
今回のA、B、…、Gのように順序性のあるラベル群(順序尺度という)の場合、このような問題が生じます。

それならMAEではどうか…

それならば、各ランクを等間隔の数値に置き換え(A→6、B→5、C→4という具合に)、MAE(平均絶対誤差)によってモデルを評価するのはどうでしょう。確かにこの方法なら、正解のランクに近い推論結果を出したモデルほど良いモデルとすることができます。
しかし、これには問題があります。まず、各ランク間の差は本当に等間隔で大丈夫なのかということです。実際、「AとBの差」と「BとCの差」を必ずしも同等に扱えばいいとは限りません。
ただ、いったんここでは、その問題は気にしなくてもいいものとします。だとしても、別の問題があります。実はこの方法には、推論結果が正解に近い場合に対して高い評価を過度に与えすぎるきらいがあるのです。次のグラフをご覧ください。

このグラフは、モデルによる推論の結果に対する評価をグラフにしたものです。
パターン1は、評価指標を単純な正解率にした場合です。パターン2は、MAEの場合です。
縦の軸は、評価値です。このグラフは、推論結果がベスト(つまり正解)の場合に1.0、ワーストの場合に0.0を取るようにして作ったものです。パターン2については、実際のMAEの値を4で割ってそれを1から差し引けば、「推論結果がベストなら1.0、ワーストなら0.0」を満たした評価値になります。

こうして見ると、パターン2、は推論結果が正解から1ランクずれていても評価値が0.75にもなります。正解から2ランクずれていても、評価値は0.5もあります。甘い評価になってしまっていることは否めません。
こうなると、無難に中庸的な評価(特にD近辺)をしておくのが良い戦略になりやすくなってしまいます。言い換えれば、そういう守りの傾向の強いモデルが良いモデルになりやすくなってしまいます。
なのでもうちょっと、正解を積極的に当てにいくような攻めのモデルが良いモデルになりやすくなるようにしたいです。

問題に対する解答例

ここまで長くなりました…。
そこで提案する評価方法の一例は、「0.5の『ランク差(の絶対値)』乗」を評価値とする方法です。正解のランクに対して推論結果が1ランク差(正解のランクよりも高いか低いかは無関係)なら、評価値は0.5です。2ランク差ならさらに0.5をかけて0.25。3ランク差ならさらに0.5の乗算で0.125、という具合です。

この方法をグラフにしたのが、上のパターン3のグラフです。
見ての通り、全体的にパターン2に比べて不正解の推論結果に対する評価値を低く抑えることができています。また、もちろんこれなら正解に近い推論結果のほうが評価値が高くなるので、その点でパターン1よりも優れています。

評価方法のさらなる改善のためのtips

実際に目指す目的やKPIにもよりますが、上の解答例のような評価方法(正解率やMAEのデメリットを克服できている評価方法)なら、そこそこ十分な気はします。ですが、より良い評価方法を追求したい場合もあると思います。そのために、いくつかの追加情報を載せておきます。
これを終えたら、「人的評価を高精度で推論できるモデル」ほど良いモデルとする場合についての説明は終わりです。

  • 乗算の値を変える

先ほどの解答例では、ランク差の分だけ0.5を累乗しました。この0.5の代わりに、0.4や0.3など別の値にする手もあります。というのは、0.5でもまだ少し大きい気がするからです。
また、2ランク以上離れた推論結果に対して評価値を付ける意味は乏しいので、その場合は分かりやすく0点にしてしまってもいいと思います。
ただ、これはランクの種類の数にもよると思います。詳しくはすぐ下を。

  • ランクの種類の数も考慮する

やや今さらですが、ランクの種類の数についての考慮も重要です。今回はランクの種類の数が7つであり、特別多くはありません。しかし場合によっては、15とかもっと多いケースがありえます。その場合、推論結果が正解から1ランクずれているだけなら、評価値はあまり減らさないようにする必要があります。
そこで対策ですが、集約してランクの種類の数を減らすとかしたほうがいいかもしれません。または、グラフの形状自体を変えると良さそうです。

  • ラベリングが不均衡である場合の対策

あとは特定のラベルの作品がだいぶ多い場合に、どう対処するか。不均衡問題などと言われます。
対策はいろいろありますが、個人的には重みづけをした正解率を用いるのが一策です。より具合的には、メジャーなラベルの作品に対しては小さく重みづけをし、逆にマイナーなラベルには大きく重みづけをします。
こうすれば、「メジャーなラベルをひたすら割り当てる」という戦略を成立させづらくすることができます(ただ、もともとこの戦略は、ラベルが2種類程度だけ、かつデータが特定のラベルに偏っている場合くらいにしか使えないですが)。重みづけの値に応じて加重平均を取ればいいだけなので、分かりやすいし、計算もしやすいです。

ちなみに不均衡問題への他の対策として、適合率と再現率の調和平均(F1スコアや、どちらかに比重を置いた調和平均)をモデルの評価指標とする手があります。あるいは、AUCを用いる手もあります。
ただ、ラベル群が順序尺度か否かに関係なく、不均衡問題は結構シビアです。慎重にならないと、間違った選択をしかねないです。念入りに調査や考察をしたほうがいいです。

  • CEM(Closeness Evaluation Measure)

CEMは、2020年のACLにて採択された論文にて提唱された評価指標です。
『An Effectiveness Metric for Ordinal Classification:
Formal Properties and Experimental Results』
https://arxiv.org/pdf/2006.01245.pdf

ラベル間の関係性(特に順序性)や、各ラベルへのデータの分布ぐあいを考慮したものとなっています。以前この論文の影響を受けて、今回のような考察をするようになりました。
本記事ではこの論文の詳細を割愛しますが、興味があればぜひ読んでみてください。

複数の作品のランクの高低を相対的に比較したい場合

ここまでは、単一のモデルを絶対的に評価したい場合向けの話でした。ここからの話は、「比較的ランクの高い作品を高く評価できるモデル」ほど良いモデルとする場合です。

今のところ、特に確たる答えを持っていないですが、おおまかに次の2パターンの方法が考えられます。
ただその前に、問題に対して例を付け加えてみます。

問題に対して付け加える例

いったんここでは、作品の一覧とその内容を次のように仮定します。

作品No. ラベル あるモデルによる評価値
作品1 F 0.15
作品2 C 0.30
作品3 E 0.35
作品4 G 0.25
作品5 A 0.55
作品6 C 0.45
作品7 D 0.20
作品8 A 0.40

ラベルと評価値の間の相関の強さで、モデルを評価する方法

方法の内容

この方法では、まず各ラベルを数値化します。例えば、単純にA → 6、B → 5、C→4、…、G → 0のようにして、各ラベルに数値を割り当てます。ここでは、その数値を数値化ラベルと呼ぶことにします。
その結果を散布図にすると、次のようになります。

これで見えてきたかもしれませんが、この方法は、この散布図のデータにおける両者の間の相関係数(ピアソンの相関係数)でもってモデルを評価する方法です。相関係数の高いモデルほど、良いモデルとします。そして、各モデルごとに相関係数を算出し、それらの値によってモデル間の良し悪しを判定するというわけです。

ちなみに、このデータの場合だと相関係数は約0.6です。

この方法の整合性

確かにこの方法なら、ランクの高い作品を高く評価できるモデルほど、良いモデルと言えそうです。
それがなぜなのかは、上の散布図で考えると分かりやすいかもしれません。ランクの高い作品を高く評価できるモデルというのは、ランクの低い作品を低く評価し、他方でランクの高い作品を高く評価するモデルです。なので、点の散布としては右肩上がりのようになるはずです。右肩上がりになるということは、相関係数は0近辺ではなく、それなりに大きい値になります。この方法では、相関係数の大きいモデルを良いモデルとするわけです。よって、「ランクの高い作品を高く評価できるモデルほど良いモデル」と言えます。

この方法の短所

しかし、相関係数というもの自体にも難点があります。それは、値の揺らぎやすさです。
例えば、外れ値の影響を受けやすいです。特に中央側よりも端側のデータが外れ値だと、相関係数はかなり影響を受けます。
また、単純にデータ量が不足している場合も、相関係数の値は揺らぎやすいです。データ量が少ないと、データの値が少し変わるだけで相関係数が大きく変わったりします。
このように、値が揺らぎやすいです。そのため相関係数は、モデルの良し悪しの材料としては少々心もとないです。

ちなみに、相関係数に比べると順位相関係数(スピアマン、ケンドールなど)は、外れ値の影響を受けにくいです。とは言っても、端側のデータが特異である場合やデータ数の少ない場合は、依然として不安定な値を取りやすいと思います。

2つの作品の組み合わせごとに、どちらの作品が高ランクなのかをモデルに推論させる方法

方法の内容

この方法は、次の表を見るとイメージが付くでしょうか。

組み合わせNo. 1つ目の作品No. 2つ目の作品No. どちらが高ランク 推論結果 正解?
組み合わせ1 作品1 作品2 作品2 作品2 正解!
組み合わせ2 作品1 作品3 作品3 作品3 正解!
組み合わせ3 作品1 作品4 作品1 作品4 不正解…

例えば「組み合わせ2」の場合、1つ目の作品(作品1)と2つ目の作品(作品3)とでは、後者のほうが高ランクです(前者はF、後者はEのため)。それに対して、モデルによる推論結果においても、後者のほうが高ランクです(前者の評価値は0.15、後者は0.35のため)。つまり、どちらが高ランクなのかをモデルが正しく推論できています。この場合を正解とします。
これをすべての組み合わせごとに出し、正解率を出します。正解率の高いモデルほど良いモデルとする、というのがこの方法です。

ただし、ランクの同じ作品同士に対しては、優劣はないので推論の対象外とします。
また、2つの作品の間にランク差があっても、1ランクくらいしか違わないならこれも推論対象としないほうがいいかもしれません。ランク差が1だけの場合だと推論難易度が高すぎになるので、モデルの適正な評価が難しくなってしまうおそれがあるためです。

また、特に両者の作品に対する推論結果が同じである場合は、当然、評価値も同じになります。その場合は、半分正解であるものとして扱うのが分かりやすいです。

この方法のメリットについての考察

これは1つの私見にすぎませんが、相関係数を用いる方法に比べると、値(正解率)は不安定になりにくいと思います。これは単純に、相関係数を用いる場合のデメリットがないためです。
また、正解率という概念自体も感覚的につかみやすいです。
以上のことから、相関係数に比べると、「正解率の高いモデルのほうが良いモデル」と言われた場合の納得感も大きい気がします。

ただ、このような方法を試したことはほとんどないですし、このような方法による実験の書かれた論文もほとんど見たことないです…。なので、この方法がどこまでいいのかは何とも言えないです…。

終わりに

以上、2種類の場合ごとの、モデル評価の方法について論じました。参考になれば幸いです。

Discussion