プログラマーになりたい。

プログラミングや写真や本や読書会のことや、日常のこと。

テスト問題や知識を評価しようとしたゼミ論について、いまさらだけど反省してみる

ゼミでおととしやったアイディアは、あれは、やりかたがあまりにも短絡的だった。と、それにつきるのだけど、じぶんが何をやっていたのかもう一度みなおす意味で少しメモを書いてみる。何カ所か数式で書けばいいのだけど、面倒くさくてやってないので、見にくいですすみません。用語も微妙ですすみません。


PageRankは、ページと人間の関係を、1種類のノードだけでうまく表現しているけど。
実際には「リンク」のようなメタ情報が、わかりやすく置いてあるようなデータというのはめずらしい。
基本的には、ある基準と照らし合わせて評価、表現されていることが多いのではないか。

PageRankが(ページA,ページB)の関係性を用いており、ページAとページBは同一の群に含まれる(?)のに対して

  • (単語,文書)、
  • (人,文書)、
  • (人,テスト問題)
  • (人,知識)
  • (知識,テスト問題)

のようなデータは前後の要素の属する群が異なる。

実際、PageRankはページ同士の隣接行列(を少しいじったもの((すべてのページ間が強連結でないとべき乗法で固有ベクトルを求められないので、「関係ないページに直接アクセスする確率」などと称して行列のゼロ要素を、ある値に置き換えて非ゼロにする)))の、絶対値最大の固有値に対する固有ベクトルだから。上記のようなデータには適用できない。
ちなみに、なぜ絶対値最大の固有値に対する固有ベクトルかというと、それに対する射影の長さ(内積の値)が、もっともよく隣接行列の要素同士の「距離」をあらわすから、というような感じだったと思う。

登場人物を減らすアイディア

で、非常に単純な思いつきなのだけど、積を取ってなんとか隣接行列にしてしまうことを考えた。
(人,テスト問題)のデータ(行列)から、(テスト問題,テスト問題)の「隣接行列」のようなものを作ってしまうには、内積かそのアークコサインをとればいいと考え、やってみたことがある。
内積だけならば、もとの行列にその転置行列をかけてやればいい。こうすると、少なくとも正方行列にはなるので、やろうと思えばべき乗法ができるようになる。

しかし、どうもこれは奏功しなかった気がする。ちないみに「気がする」というのは、よく考えたら提案手法そのものをどうやって評価すればいいのかわからないからです。でも、ともかく面白い結果が拾えたりはしなかった。

テストの点数は何をあらわしているか

ここで、そもそも、何が欲しくてテストをするのか、何があれば便利なのかを考えてみる。
実際のところ、場合によるけれど、一応人に対するテストというのは、適切な「テストの点数」が欲しいというよりは、(人,知識)の関係が知りたくて実施するのではないか。


だから、テストの点数というのはかなり強引な尺度だといえる。
ある知識と別の知識が、点数上交換可能だったりするが、これにはとくに論理的な理由がないことが多いだろう。
(たとえば、入試でよくあるけれど、なぜ理科の10点と国語の10点を同じように扱ってよいのか。おそらく社会的なコンセンサスがあるだけで、それ以外に正当な理由はないと思う。)

(人,問題)の関係と(問題,知識)の関係から(人,知識)の関係を求めることはできるか?

受験者を、持っている知識によってあるM次元のベクトルで表現できるとする。
ある知識群について受験者がどのような状態なのかを知るためには、テスト問題作成時に想定する知識ベクトル群の張る空間内に、受験者のベクトルが十分表現できないといけない。
テスト問題は、(問題,知識)の関係からこの知識ベクトルの空間にベクトル表現したとき、それら問題ベクトルの合成で受験者のベクトルが完全に表現されるように、作成されなければならない。
本来的にはそのはずだ。


ところで、「(問題,知識)の関係」というのは当然求められると思って書いてきたのだけど、関係「ある/ない」以上のことを提議するのは無理かもしれないけど、それが必要なような気がしてきた。いいのだろうか…。
どうも、実際的には知識が先にあるというより、(人,問題)の関係性の行列の、各固有ベクトルが各知識に対応する気もする…。


でも、まあ、これにはとりあえず目をつぶるとすれば、ある人の答案の○×を1,0に対応させて並べたベクトル(横長)に、縦方向に問題、横方向に知識をとった関係性の行列を掛けて、得られたベクトルがその人の知識の状態だと言えるはず。
でも、あんまりすっきりしない。

「テスト理論」の発表で見た図は

tsukuba.R#4でid:hiratake55による

Rで項目応答理論

というテスト理論の発表があって、そこで見た図に、横軸に回答数みたいなのを、縦に点数をとったグラフがあったのですが。このグラフをふと思い出して、あれはいろんな問題の

  • 点数=受験者ベクトル・問題ベクトル

の合計というよりは

  • 受験者ベクトルの問題ベクトル成分(ベクトルそのもの)

の合成ではないかとふと思った。
ベクトルの合成をするとき、よく、ベクトルの先に別のベクトルの根元をくっつけて、前者の根元から後者の先っぽに向けて新しくつベクトルをつくって答えを出す。
あれの繰り返しを、比較的表現力のある軸上(縦軸の点数)にうつして、それのを眺めているような気がしたのですが。

Creative Commons License ©2007-2021 IIDA Munenori.