やりたいことは、例えばユーザA,B,Cに質問ア、イ、ウを行い次のような結果だった場合、A-Bの相性は0%、A-Cの相性は66%、B-Cの相性は33%といったものです。できれば○×ではなく5段階評価にしたりユーザの傾向(特定の回答をするグループ)なども算出できれば理想です。
ア イ ウ
A ○ × ○
B × ○ ×
C ○ ○ ○
よろしくお願いします。
ア、イ、ウ、エ、オの5つをそれぞれ一つの質問に対する回答とします。
回答の5つは、隣り合っている質問と出来るだけ近いニュアンスにし、両端の回答は真逆のニュアンスになる様に回答を考えます。
また他の質問の回答で、同じ得点の回答と似たようなニュアンスに調整する必要もあるでしょう。
ア(+1)イ(+2)ウ(+3)エ(+4)オ(+5)のように各回答に得点を設定し、各質問ごと比較したい対象の人との点差を取り、その平均値が0に近いほど相性が良く絶対値が大きいほど相性が合わない…といった具合でしょうか。
何のひねりもなくてツマンナイですが…
数学的な方法を使えば多様な方法があるのですが(ベクトルを使った内積を用いる方法など)、説明が大変過ぎるのと、私もイマイチ理解しきれていないので、プログラムに関する知識を深めれば色々方法が見つかると思いますよ。
それ、私が考えた「現実的でない方法」です。ユーザ数が例のように3人しか居ないわけではありません、1000人、10000人となったとき、ユーザ登録するごとに10000ユーザのデータと照合しないといけません。またその方法だと一致度は算出できますがグルーピングはできません。
2015/08/28 21:28:26調べた限り多次元尺度構成法というのが近い感じがしてます。