見出し画像

テストの採点データを行列の低ランク近似で分析してみる

はじめに

こんにちは、ライフイズテックのデータサイエンティストのホンディーです。今回の記事も情報AIドリルで学習していただいている皆さんの学習データの分析のお話です。

普段は項目反応理論を使って各種学習データを分析していますが、最近、その分析に行列の低ランク近似を利用することも可能だと聞きました。

自分の認識では低ランク近似は推薦システムや機械学習の次元削減で使う手法であり、ドリルの学習データやテストの採点データの分析で使えるイメージが無かったので面白そうだと感じました。そこで、手元のデータで少し試してみたので紹介します。

行列の低ランク近似とは

行列の低ランク近似というのは、ざっくりいうと$${{m\times n}}$$行列$${{V}}$$を、もっとランクが小さい行列の積で近似しましょうという試みです。$${{m}}$$や$${{n}}$$よりも小さい整数$${{k}}$$を決めて、$${{V}}$$を$${{m\times k}}$$行列と、$${{k\times n}}$$行列の積で近似します。

英語版ですが参考にWikipediaへのリンクを貼っておきます。

分解する方法には複数のやり方がありますが、今回は非負値行列分解を採用しました。簡単に言うと分解後の行列の要素が全部0以上になるようにする手法です。

テストデータの低ランク近似による分析のイメージ

行列の話が続くとイメージしにくいと思うので、ここから小さめのデータセットを実際に低ランク近似してみてどんな分析ができるのかやってみます。

状況として、15人の生徒と3問のテスト3回の受験データ(つまり問題は9問)があったとします。ただしここで全員が全部のテストを受験したわけではなく一部受けてないテストもあったとします。

つまり、縦に生徒、横に問題をとり、正解を1、不正解を0、受験してないテストの問題はNullとすると次のような行列データになります。この行列を$${{V}}$$としておきます。

これを低ランクの行列に分解しましょう。今回はランクを$${{k=2}}$$とします。

受験していない部分は仕方がないので、データがある部分について積ができるだけ近い値になるような低ランクの行列のペア、$${{15\times 2}}$$行列の$${{W}}$$と$${{2\times 9}}$$行列$${{H}}$$を探します。見つかったのがこちらです。

さて、ここからが面白いところです。この2つの行列はその積がもとの行列を近似するように作っているわけですから$${{V \approx W\times H}}$$となりますが、ここで$${{W}}$$と$${{H}}$$には欠損値がありません。そのため、$${{W\times H}}$$にも欠損値はなく、実際にその生徒が受験してない問題に該当する要素にも何らかの値が入ります。

実際に計算すると下図のようになります。0.5を境にそれより大きいものを緑、小さいものを赤に塗りました。

このようにして元のデータを2つの行列に分解してもう一度掛け合わせることで補完された欠損値を、もしその生徒がこの問題を解いていたら正解できたかどうかの予測値とみなすことができます。面白いですね。

また、$${{W}}$$の各行の$${{k}}$$個(先程の例では2個)の数値(ベクトル)はその生徒に関する何かの情報を表した物とみなすことができ、同様に$${{H}}$$の各列の$${{k}}$$個(同様に先ほどの例では2個)の数値(ベクトル)は各問題に関する何かの情報を表した物とみなすことができます。

それぞれ生徒の何らかの意味での学力と、問題の難易度(大きいほうが正解と判定されやすいので解きやすさと考えたほうが妥当)に関する情報とみなすのが自然だと思います。

項目反応理論との比較

 精度の比較

さて、低ランク近似で問題の正誤が予測できるとなると気になるのは普段使っている項目反応理論と比べてどのくらい精度が良いのかです。

詳細は省きますが、実際に600人くらいの生徒と60問ほどの問題をピックアップして、項目反応理論と、$${{k}}$$の値をいくつか変えた低ランク近似で問題の正誤をどのくらい当てられるのか比較してみました。

その結果、$${{k=1}}$$であれば、項目反応理論の2パラメーターモデルのほうが正確でしたが、$${{k=2}}$$の時点でほぼ互角か、低ランク近似のほうが若干高い精度で予測ができていました。

この$${{k}}$$の値はもちろん2が上限なんてことはなく、3,4,5…と増やして行くことができ、徐々に精度が上がっていきます。(ただし、増やしすぎると過学習が起きて途中から下がりますので注意してください。)

項目反応理論はテストの結果を分析する専用の手法なのに対して、低ランク近似の方はもっと汎用的な手法で基本的に別の分野で使われている物なのでこれには驚きました。

ただ、落ち着いてよく考えてみると、項目反応理論の2パラメーターモデルは生徒ごとに学力パラメーターが1つと、問題ごとに困難度と識別力の2パラメーターを利用します。つまり、生徒が1000人で問題が100問なら、$${{1000\times 1 + 100\times 2 = 1200}}$$パラメーターを使います。

一方で$${{k=2}}$$の低ランク近似は生徒と問題それぞれにパラメーターが2個設定されるので、$${{1000\times 2 + 100\times 2 = 2200}}$$パラメーターを使います。

つまり、$${{k=2}}$$の低ランク近似のほうが使っているパラメーターが多い分精度が高かったようです。一方で、生徒ごとのパラメーターが一種類少ない分、大幅にパラメーター数が小さくなる項目反応理論の方で、ほぼ互角の精度が出せるということは項目反応理論のモデルのほうがコスパが良い、とも考えられますね。

項目反応理論の1パラメーターモデルでは、$${{k=1}}$$の低ランク近似とパラメーター数が同じになるのでこれで比較したらどちらが勝つのか気になるところです。

もし、項目反応理論よりも高い精度で正誤の予測をしなければならないことがあったら、低ランク近似も検証の候補に入ると思いました。(でも、本当にそんな場面になったら、もっと別の機械学習モデルを試すようにも思いますね。)

パラメーターの活用について

実際に業務での活用を考えると、今のところ、生徒ごとの問題の正解率を予測したいということは少なく、もっぱら問題の難易度などの特徴の評価に使っています。

この場合、2個のパラメーターに困難度と識別力という意味付けがされている項目反応理論のほうが便利です。

低ランク近似の方はその種の意味付けがなく、その問題の難しさに関連する何かの数値でしかないので算出されたパラメーターを使ってそのまま何らかの洞察を得ることは難しそうです。

ただし、$${{k}}$$の値をもう少し大きくして(5〜8くらい?)ユークリッド空間への埋込みとみなして問題間の類似度を見るといった使い方はあるのかもと期待はしています。追々試してみたいです。

出力される値の使いやすさについて

これは先程の$${{W\times H}}$$の値を見ていただくとわかるのですが、低ランク近似の場合、近似した結果の値が1を超えることもあります。また、今回の例では非負値行列分解を用いたので0を下回る事はありませんでしたが、特異値分解などの別の手法を採用して低ランク近似すると、0を下回ることもあります。

このあたりは、最初から正解率をモデル化するものとして設計されていて確実に0から1の間で正解率を予想してくれる項目反応理論のほうが便利です。

一方で、低ランク近似の方は確率としては利用できないので0.5で区切ってそれ以上を正解と予想、それ未満を不正解と予想するものとして評価しました。

計算効率について

項目反応理論と低ランク近似の比較において、もう一点考えておきたいことは計算効率です。

項目反応理論にも低ランク近似にもそれぞれ複数のやりかたが存在するので単純に言い切れるものではありませんが、最初にデータを入手した段階で生徒と問題の両方のパラメーターが未知という状況から推定を行うのは、低ランク近似のほうが高速かつ手軽に行える傾向にあります。

特に項目反応理論で問題のパラメーターを推定するのにベイズ推論を用いる場合は計算時間も大きくかかります。

一方で、項目反応理論の方は先に問題のパラメーターだけ推定できていれば、新たに問題を解いた生徒がいた場合にその生徒の学力パラメーターを手軽かつ高速に推定することができます。

低ランク近似の場合は追加で生徒が問題を解いたらもう一度全体を推論し直しです。

このような特性があるので、1問回答するごとに随時推論を行う必要があるCBT(Computer Based Testing)での利用は今後も項目反応理論のほうが採用されるでしょう。

今後に向けて

テストデータの分析に低ランク近似が使えるという話は本当に偶然知ったのですが、軽く検証してみただけでもかなり面白い世界が広がっていること感じました。

僕の普段の業務ではパラメーターの解釈性が重要なので、自分が使うのは当分項目反応理論の方になるとは思いますが何か機会があれば低ランク近似も活用したいですね。

一方で、項目反応理論(2パラメーターモデル)の精度がランク2の近似と同程度しかないというのは自分にとって少し衝撃的なことでした。また、パラメーターを増やせばまだ精度を上げる事ができる、ということが$${{k=3}}$$以上の低ランク近似によって示されたとも思います。

実は項目反応理論には生徒の学力パラメーターや問題の識別力を多次元で表現する多次元項目反応モデルがあり、こちらもパラメーターの数を増やすことができます。パラメーターを増やすことによる精度の改善余地がまだまだあるのであれば、今後こちらの検証も取り組んでいきたいなと思いました。

まとめ

今回は偶然知った行列の低ランク近似の学習データへの活用について紹介しました。

過去の経験として、これにはこういう手法が使えるよ、と噂を聞いて試してもなかなか評判通りの成果は得られないことが多かったのですが、今回試した低ランク近似は期待以上の精度を叩き出してくれました。

実は前職時代にレコメンドエンジンを作る検証の中で低ランク近似も試したのですが、そのときは他の手法に劣っていて採用しなかったため、今回も期待していなかったのです。ちなみにその時も非負値行列分解を試しました。

ライフイズテックに転職してきて、おそらくもうレコメンド周りの知識を使うことは無いだろうと思っていたのですがこうして当時の技術に再開すると何でも勉強しておくといいことがあるなと感じますね。

ここ1年使っている項目反応理論がだいぶ手に馴染み、別の分野を勉強する余力も出てきたので今後はもっと幅広い技術の活用を見据えて学習と検証に取り組んでいきたいと思います。


おしらせ

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


この記事が気に入ったらサポートをしてみませんか?