見出し画像

多次元項目反応理論(多次元IRT)の紹介

はじめに

こんにちは。ライフイズテックでデータサイエンティストをしているホンディーです。

先月の記事ではテストの採点データを低ランク近似で分析する方法を紹介しましたが、最後の方でそれと対比する形で実は項目反応理論にも多次元版があるよって話を一言だけ書きました。

今回の記事ではその多次元項目反応理論(以下、多次元IRT)に焦点を当てどのようなものなのか概要を紹介したいと思います。

学力を多次元で表す必要性について

そもそも、なぜ多次元IRTが必要なのかについて僕が普段分析している「情報Ⅰ」の学習データを題材に考えていきましょう。

通常のIRT(2パラメーターモデル)は、生徒ごとに学力パラメーター$${\theta}$$があり、問題ごとに識別力$${a}$$と困難度$${b}$$があると仮定して、問題の正解率を算出できるという前提の元に理論が構築されています。

この大前提にいきなり課題があるのです。「生徒の学力は本当に1個の数値で表せるのか?」と。

改めて生徒の学習データ、特に共通テストの予想問題や模試など情報Ⅰの範囲全体から幅広く出題されるテストの受験データなどを見てみると当然ながら生徒ごとに得意不得意があることが見て取れます。

ある生徒はプログラミングに関する問題は得意だが、情報社会やメディアに関する問題については苦手であったり、別の生徒はその逆、という事象はよくあることです。
単元ごとに得手不得手があるのかと思いきや、例えば教科書で同じ単元内に入っていても、コンピューターを構成する機器(制御装置や主記憶装置)などの名前と役割についてはよく理解しているが、論理回路を用いた演算の問題は不得意といった例もあり、なかなか状況は複雑です。(※ 実況出版の最新情報Ⅰでは 第3章のシステムとデジタル化にこの2種のテーマが含まれます)

多次元IRTによる対応

1個の数値で学力を表すのが難しいのであれば、学力を構成する複数の要素ごとに個別の数値(=多次元)で学力を表現するようにしてはどうだろうか?というのが多次元IRTの基本的な発想です。

学力$${{\theta}}$$ではなく、プログラミング力$${{\theta_0}}$$、データの活用力$${{\theta_1}}$$、コンピューターの構成に関する知識$${{\theta_2}}$$、…のように複数のパラメーターがあるイメージです。(正確には何番目のパラメーターが何の能力を表すのかを明確には指定できず、複数のパラメーターが存在することだけを仮定して推定した結果を見て、これは何を表すものだろうかと解釈を考えるのですが。)

そして、問題側もそれぞれの力がどの程度必要なのか複数のパラメーターで識別力と困難度を表すようにします。

多次元IRTには補償型と非補償型という2つのモデルに大別でき、数式が異なりますが、一般的に使われているのが補償型なのでこちらを紹介していきます。(両者の違いは最後に補足します。)

多次元IRTにおける正答率の式

いよいよ多次元IRTにおける具体的な数式を見ていきましょう。まず、通常の項目反応理論におけるある生徒(学力$${{\theta}}$$)の問題(識別力$${a}$$、困難度$${b}$$)に対する正解率は定数$${D=1.701}$$を使って次の式で表されました。

$$
p(\theta | a, b) = \frac{1}{1+e^{-Da(\theta-b)}}.
$$

この式の右辺の分母の指数関数の指数部分に着目し、さらに$${-D}$$は定数ですから、変数部分だけ取り出してみると、$${a(\theta-b)}$$が大きくなるほど正解率が高くなることを意味します。$${a}$$は正の数ですから学力$${\theta}$$が困難度$${b}$$より大きいほど正解しやすいということですね。

この$${a(\theta-b)}$$の部分に多次元の学力が反映されるように工夫していきます。

例として3次元のIRTを考えましょう。この場合、1人の生徒の学力は3つのパラメーターのベクトル、$${(\theta_0, \theta_1, \theta_2)}$$で表されます。それによって更に問題ごとにどの学力パラメーターがどの程度正解率に影響するかそれぞれ$${(a_0, a_1, a_2)}$$で表し、それぞれどの程度必要かを$${(b_0, b_1, b_2)}$$と仮置きします。
そして、先程の指数関数の肩の部分を次のように置き換えます。

$$
a_0 (\theta_0 - b_0) + a_1 (\theta_1 - b_1) + a_2 (\theta_2 - b_2).
$$

3種のパラメーターについてそれぞれ同じ式を作って和を取ったものですね。これを展開すると、次式になります。

$$
a_0 \theta_0+a_1 \theta_1+a_2 \theta_2 -a_0b_0-a_1b_1-a_2b_2.
$$

ここで、後半の$${-a_0b_0-a_1b_1-a_2b_2}$$の部分に着目すると、これは生徒のパラメーターに影響せず、問題ごとに1つに定まる値です。そのため、まとめて$${d = -a_0b_0-a_1b_1-a_2b_2}$$と置きます。こうすることによって$${(b_0, b_1, b_2)}$$は全部消えてしまったので、問題ごとのパラメーターは$${(a_0, a_1, a_2)}$$と$${d}$$になります。

さらに前半部分はベクトルの内積を使って書き換えておきましょう。
$${\boldsymbol{a} = (a_0, a_1, a_2)}$$ と $${\boldsymbol{\theta} = (\theta_0, \theta_1, \theta_2)}$$の内積を $${\boldsymbol{a} \cdot \boldsymbol{\theta}}$$とすると、先程の式は
$${\boldsymbol{a} \cdot \boldsymbol{\theta}+d}$$ となり元の1次元のIRTの式とかなり似た形で表現できます。

これを元の正解率の式に戻したものが次の中辺の式です。さらに項目反応理論の各種テキスト等を見ていると分子と分母に$${e^{D(\boldsymbol{a} \cdot \boldsymbol{\theta}+d)}}$$を掛けて指数部のマイナスを消した右辺の形での表記をよく見るので合わせて紹介します。

$$
p(\boldsymbol{\theta} | \boldsymbol{a}, d) = \frac{1}{1+e^{-D(\boldsymbol{a} \cdot \boldsymbol{\theta}+d)}} = \frac{e^{D(\boldsymbol{a} \cdot \boldsymbol{\theta}+d)}}{1+e^{D(\boldsymbol{a} \cdot \boldsymbol{\theta}+d)}}.
$$

共通テスト予想問題のデータで試した感想

多次元IRTのモデルの式が理解できたので、実際のデータで実験してみました。

ライフイズテックが学習塾や予備校に提供している情報AIドリルでは、共通テスト本番を見据えた予想問題を解くことができます。

すでに多くの生徒様に学習していただいているので3回分ほどのデータをピックアップして多次元IRTのパラメーターを推論してみました。

多次元IRTでは何次元のモデルを使うか(生徒の学力パラメーターを何次元で表現するか)を決める必要がありますが、共通テストの大問1〜大問4にそれぞれ対応するパラメーターが検出できるといいなぁ、という期待から一旦4次元で試しました。

結論としては確かに大まかに、第X回の第3問(プログラミング)はこの学力パラメーターが高い生徒が高得点を取れている、といった傾向が現れるケースも有りました。しかし、その一方で、別の第Y回の第3問で高成績の生徒は別のパラメーターが高い生徒の成績がいい、といったような少々扱いづらい現象も発生しています。もちろん、同じテストの同じ大問であっても小問ごとに異なる能力が必要な問題もたくさんあります。

出題分野(予想問題の大問)と用意したパラメーターがピッタリ一対一に対応するといったことはなく、長文や長めのプログラムを読み解いていく力であったり、正確な数値計算を行う力、専門用語に関する理解のような、より抽象度の高い分け方で学力を数値化しているようにも見えました。

この多次元IRTを使いこなそうと思うと、僕自信がもっと情報Ⅰの問題に関する解像度を高めて的確な解釈ができるようになる必要がありそうです。

また、同一の大問でもテストによって必要なパラメーターが異なるとなると、 4次元では足りなかったのかもしれません。しかし、高次元化していくとパラメーターの推論が安定しなかったり、必要なデータが増えたり、乱数を使うため再実行するたびに何番目が何を意味するかといった解釈も入れ替わってしまうなどいろいろな不便さも出てきます。用途や入手できたデータ量、コンピューターリソースなどに応じて通常の項目反応理論と使い分けていく必要がありますね。

まとめ

多次元IRTについては、まだいくつかの学習データについてパラメーターの推論を試してみただけですが、これまで使っていた1次元のIRTで生徒ごとの得意不得意がモデルに反映できていない問題への対応として何かしらの効果はありそうだと感じました。その一方で使いこなしていくのが難しい技術であり自分のスキル向上の必要性も実感しました。

試す前は、特に得意不得意がはっきり出やすいデータの活用やプログラミング分野についてもう少しくっきりと特定のパラメーターとの対応が見れるかなと思っていたのですがそれほど単純な話ではなかったですね。

しかし、このように大問数と揃えた次元では不足感があったり、解釈が難しくなったりするということは、逆に考えるとこれまで提供してきた予想問題で多様な能力を測定できる問題を提供できていた、とも言えるのかなとも感じました。

共通テストの情報Ⅰは来年1月が初めての実施で過去問が無く、どのような問題が出るのか不確実性が高い状況にあります。この状況においても、生徒のみなさんが幅広い出題に対応できる力をつけて、安心して試験に臨めるようになる教材が提供できるよう、僕自信もスキルアップに励んでいきたいと思います。

おまけ: 補償型と非補償型の多次元IRTの違い

補償型と非補償型のモデルをそれぞれざっくり説明すると、複数の能力があったときに、ある能力が大きく高ければ他の能力の不足をカバーできると考えるのが補償型で、カバーできないと考えるのが非補償型です。
英語の長文問題を例にすると、「語彙力と文法の両方がそこそこ優秀なら読み解ける」問題があったときに、「文法は苦手でも語彙力が超優秀」な生徒が語彙力で文法の知識不足をカバーして解けると考えるのが補償型で、文法の知識が不足してるなら語彙力ではカバーできないと考えるのが非補償型です。
この考え方の違いにより正解率を表す式が変わります。


おしらせ

ライフイズテック サービス開発部では、気軽にご参加いただけるカジュアルなイベントを実施しています。開催予定のイベントは、 connpass のグループからご確認ください。興味のあるイベントがあったらぜひ参加登録をお願いいたします。皆さんのご参加をお待ちしています!


いいなと思ったら応援しよう!