アプリ版:「スタンプのみでお礼する」機能のリリースについて

3つの比「1:2:3」と「1:4:6」の比の近さと,「1:2:3」と「1:5:10」がどの程度近いか(距離,類似度でもいい)を求める方法がわからず,困っています.

例えば,簡単に推測可能な,2つの比でやると,
<例1> (1)「1:2」と「1:3」の距離と,(2)「1:2」と「1:6」の距離がどちらが近いかは,
(1) < (2)
だと,誰もがわかると思います.
また,
<例2>(1)と,(2)と,(3)「1:3」と「1:10」の距離に対しても,
(1) < (2) < (3)
だと,感覚的にわかると思います.

これを応用して,「3つの比の類似度(比較)」を数値で表す方法はどのようにするのでしょうか?

------------------------------------------------
今まで思いついた案を,先ほどの2つの比の例でやってみます.
(※以下,分数の計算は小数点0.01未満切り捨て)

【案1】 左辺を1に正規化して,右辺を「引いた絶対値」
<例1> (1)|3-2|=1 < (2)|6-2|=4  => (1)が(2)より 3 近い
で表す方法が考えられます.
しかし,この場合,
<例2> (1)1 < (2)4 >??? (3)|10-3|=7 
となり,感覚と違ってしまいます.

【案2】 左辺を1に正規化して,右辺を「前から後ろを割る」
<例1> (1)|2/3|=0.66 >??? (2)|3/6|=0.5  => (1)が(2)より|0.66-0.5| = 0.16 近い?
となり,符号が逆になってしまいます.

【案3】 左辺を1に正規化して,右辺を「後ろから前を割る」
<例1> (1)|3/2|=1.5 < (2)|6/3|=2  => (1)が(2)より|1.5-2| = 0.5 近い
                      もしくは,|1.5/2| = 0.75 倍
と表す方法が,今のところ,妥当だと考えています.
また,この場合は,
<例2> (1)1.5 < (2)2 < (3)|10/3|=3.33
=> (1)が(3)より|1.5-3.33|= 1.83 近い,|1.5/3.33|= 0.45 倍
=> (2)が(3)より|2-3.33|= 1.33 近い, |2/3.33|= 0.60 倍
となり,綺麗に比較できます.
-----------------------------------------------

しかし,3つの比「1:2:3」と「1:4:6」との比較をする場合,
案1の引き算では,それぞれの辺を引いた絶対値(|4-2|+|6-3|,2辺の足し算でいいかどうかは不明)を取る方法が考えられますが,
2つの比の結果より,直観と異なると思います.

また,案2,3割り算も,どれをどう割ったらいいのか,わかりません.

以下,メモです.
(よりよい解法・説明を導くうえで,もし何かの参考になりましたら幸いです.)
====================
(例えば,4/2+6/3?,(4/2)*(6/3)?,でもこの連結演算子になる理由は?)
感覚的には,3つの比というのは,3軸のベクトルと似ている気がします…
例えば,A=(1,2,3),B=(1,4,6)とおいてみると,
内積A・B = 1*1+2*4+3*6 = 24,
外積A×B = (a2b3-a3b2, a3b1-a1b3, a1b2-a2b1)=(2*6-3*4, 3-6, 4-2) = (12, -3, 2),
となる.
ただ,これらが何を意味しているのかは,私にはさっぱりわかりません.
======================

3つの比の比較をする計算方法をご存じの方がいれば,教えていただけないでしょうか?
正直,私は難しく考えすぎる傾向があり,案外,簡単なことなのかもしれません.
実際にどんな比重を対象にするかで,正解はないのかもしれませんが….

よろしくお願いします.

A 回答 (1件)

%%%%引用開始


【案1】 左辺を1に正規化して,右辺を「引いた絶対値」
<例1> (1)|3-2|=1 < (2)|6-2|=4  => (1)が(2)より 3 近い
で表す方法が考えられます.
しかし,この場合,
<例2> (1)1 < (2)4 >??? (3)|10-3|=7 
となり,感覚と違ってしまいます.
%%%%%引用終了

「例2」がわからない.
なんで,(1)1 < (2)4 > (3)7 なんだろう?
(1)1 < (2)4 <(3)7
じゃないの?

で・・・比ってのは,「正規化」することで次元が落とせます.
一般にn+1個の比 a1:a2:a3:a4:・・・:an:an+1 は
どれか必ずは0ではない ai が存在するので,
そのaiで割り算することで,かならず「正規化」できます.
そして,正規化することで,普通の「座標」とみなせます.
ということで,「比の全体」は
n+1個の「座標」によって覆われていると考えられます.
となると,「二つの比」の距離として考えられるのは,
「二つの比が同じ座標にあれば,その座標での距離」
と考えるのは自然でしょう.
「二つの比がどうやっても同じ座標にないときは,距離は無限大」
とみなしておきます.
無限大とみなすことの意味は,
比1:0と比0:1を考えればなんとなくわかると思います.
#気分としては,1:0が0で,0:1が1/0の感覚で「無限大」
#数学的には「実数の一点コンパクト化」という操作に相当して
#実数の「端っこ」を結んで円周にしてしまうイメージ
#xy平面で「直線」の傾きを考えることにも対応する.
#y=axでaを無限にするとy軸になって,それを超えると
#マイナスで絶対値の大きな数がでてくるのが「円周」の雰囲気

これが一つの考え方で,
数学では比全体の集合を「射影空間」と呼び,
きわめて重要な研究対象です。

別の視点からみると・・・・
射影空間は「比の集合」ですが,
比 a1:a2:・・・:an:an+1 を与えることは
n+1次元空間で
a1 x1 + a2 x2 + ・・・ + an xn + an+1 xn+1 = 0
という原点を通る超平面を定めることと同じです.
ということで,「比の距離」を考えることはすなわち,
原点を通る「超平面の距離」を考えることと同じです.
ということで,あとは「超平面の距離」という
比較的目に見えるもので解釈できます.
比1:0と比0:1の例でいけば
比1:0は x=0(y軸),比0:1はy=0(x軸)になるわけで,
考えるのは「直線どうしの距離」.
あとはこの「直線どうしの距離」として
妥当なものを考えればいいのでしょう.
#角度(法線ベクトルのなす角やその正弦や正接)が直観的かな

けども・・・
>実際にどんな比重を対象にするかで,正解はないのかもしれませんが….
結局はそういうことです.
普通の距離だって
ユークリッド距離だとかマハラノビス距離とか
いろいろあるし,実際問題としては
「時間的に近い」とか
「交通費が安ければ近いと見なす」というような
尺度だってあります.
    • good
    • 0
この回答へのお礼

>kabaokaba様
専門的でかつわかりやすい説明をありがとうございます.

すみません.引用いただいた箇所,質問が間違ってました.
%%%%引用開始 【訂正個所】
【案1】 左辺を1に正規化して,右辺を「引いた絶対値」
<例1> (1)|3-2|=1 < (2)|6-2|=4  => (1)が(2)より 3 近い
で表す方法が考えられます.
しかし,この場合,
<例2> (1)1 < (2)4 【<】 (3)|10-3|=7 
となり,感覚と合っています.
%%%%%引用終了

Nつの比 => 正規化したN列の座標ベクトルである
ということまでは理解しました.

ただ,Nつの比の距離は,
・それぞれの比を代入したa1*x1+a2*x2+...+an*xn = 0(原点),を通る「超平面の距離」と同じ
というのは,まだ理解できていません.

>比1:0と比0:1を考えればなんとなくわかると思います.
N=2のとき => 二つの直線の距離,というだけでも苦戦しています.

(比0:1,比1:0の例 => 直線x1=0と直線x2=0の距離(2次元平面でいう,x軸直線とy軸直線との距離)ということまでは理解できましたが,
 x軸とy軸の直線間の距離 => 角度=90°? => どんな式で距離を求めるの?・・と理解が追いつきませんでした.)
過去の質問に,2直線の距離を計算する方法が書いてありましたが,思ったよりややこしいのですね.もう少し勉強しないと….
http://oshiete1.goo.ne.jp/kotaeru.php3?q=77895

間違っていることを前提に書きますが,
座標ベクトルA(a1,a2)=(0,1) とB(b1,b2)= (1,0) とのユークリット距離を考えると,
√( (b1-a1)^2 + (b2-a2)^2 ) = √(1+1) = √2
となって,無限大にならなくなります.
感覚的には,
|B| - |Aa| = |1/a2| - |b1/b2| = 0/1 - 1/0 = 0 - ∞ = ∞
という感じなのかなぁ・・と思っているのですが,式はめちゃくちゃです.

「射影空間」,これはまだまだイメージがつかめていません.ベクトルの座標系変換や,座標系間の類似度などを感覚的に理解するために,重要な概念であることはわかるのですが….

お礼日時:2010/01/16 13:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!