[掲示板へもどる]
一括表示

  [No.3595] 対応分析プロットのアイテム間の距離について 投稿者:ナカイマ  投稿日:2018/05/04(Fri) 20:04:13
対応分析プロットのアイテム間の距離について (画像サイズ: 813×591 436kB)

樋口先生こんばんは。
前回一度質問させて頂いたナカイマと申します。

今回は対応分析の結果におけるアイテム間の距離について質問があって投稿させて頂きました。
対応分析の結果として得られたプロット上のカテゴリ間の距離を数値化する方法を教えて頂けないでしょうか?例を挙げますと、写真のプロット上にある”上_先生と私”を基準として、”中_両親と私”、”下_先生と遺書”のどちらが距離として”上_先生と私”に近いのか数値化することを目標としています。つまり、キーワードの頻度を行に、各コーパス(例でいうと本の上中下)を列として作成したクロス表から得られた対応分析の結果を元に、(1) ”上_先生と私”から”中_両親と私”までの距離と、(2) ”上_先生と私”から”下_先生と遺書”までの距離、これら2つを数値化することが目的になります。

現在調べた限りで私が知っていることを下記に説明させて頂きますので、もし全く見当違いの方法を取っていたり、正しい計算過程をご存知でしたらご教示いただけないでしょうか?

ものすごく極端にシンプルにしたクロス表を例として作らせて頂きます。表の中の数字はそのコーパスにおける単語の絶対頻度です。

    上 中 下
先生  9, 2, 0 = 11
父   0, 8, 1 = 9
お嬢さん 1, 0, 9 = 10

1: 得られたクロス表(ここではキーワード ×コーパス)からプロファイルという(通常行に合わせた)相対的な頻度に変換する。各行または列を一つの塊とみてこの相対頻度のセットをベクトルとしてとらえる。

    上  中 下
先生  0.9, 0.2, 0
父   0, 0.8, 0.1
お嬢さん 0.1, 0, 0.9

2: 各列(ここでは各コーパス)のキーワードを合計して、全てのコーパスの総語数で割った値を求める。参考にした文献ではAverage profileと呼ばれていました。下のようになるかと思います。

先生 = 11/30 = 0.36..
父 = 9/30 = 0.3
お嬢さん = 10/30 = 0.33..

3: その後、”上_先生と私”から”中_両親と私”までのカイ二乗距離を求める。”上_先生と私”のプロファイルは[0.9, 0, 0.1]で、”中_両親と私”のプロファイルは[0.2, 0.8, 0]と考えています。

ですので、
√(0.9 - 0.2)^2 / 0.36.. + √(0 - 0.8)^2 / 0.3 + √(0.1 - 0)^2 / 0.33.. ≒ 3.52

という流れで計算しています。 この流れで”上_先生と私”から”下_先生と遺書”までの距離求めて、両者を比べて中と下のどちらが”上_先生と私”に(キーワードの使用に関して)似ていると結論付けることは可能でしょうか?

またこのような計算過程を通して得られた距離はプロット上の距離とも完全に対応していると考えてよろしいでしょうか?
次元削減の手法ということもあり、二次元のプロットにした時点で元の情報が失われることを前提としているかと思いますのでどのように解釈すべきか、私にとっては計算過程がすごく難解なこともあって全く検討がつきません。もしよろしければご教示お願いします。

http://www.khcoder.info/cgi-bin/bbs_khn/khcf.cgi?list=&no=1912&mode=allread&page=0
なども参考にして見ましたが、自分の理解力だけではどうにも難しいと感じております。もしお時間よろしけばご教示よろしくお願い致します。


  [No.3596] Re: 対応分析プロットのアイテム間の距離について 投稿者:HIGUCHI Koichi  投稿日:2018/05/04(Fri) 21:23:38

こんにちは、樋口です。書き込みありがとうございます。

対応分析の結果を保存する際に「CSV」形式を選べば、プロットされた場所の
座標を得られます。プロット座標が得られれば、距離は簡単に計算できようか
と思います。なお距離を計算するなら、対応分析のオプション画面で「スコア」
として「対称」を選んでおくのが良さそうです。

ただ、プロットを一目見て明白に違いが分からない程度であれば、あまり距離
の違いにこだわる(距離の違いを強調するのは)良策でないようにも思えます。

※このことは、プロット座標の距離を見るにせよ、プロファイル間のカイ二乗
距離をみるにせよ、あるいはジャッカード係数・コサイン係数・ユークリッド
距離などを使うにせよ、同じことです。


  [No.3597] Re: プロジェクト読み込み時のエラーについて 投稿者:ナカイマ  投稿日:2018/05/05(Sat) 05:35:55

Re: プロジェクト読み込み時のエラーについて (画像サイズ: 681×492 48kB)


樋口先生おはようございます。

早速のお返事ありがとうございます。先生にご教示頂いた通り早速試してみようと思ったのですが、プロジェクトに読み込む際に添付画像のエラーが出てしまって先に進めません。

PCはWindows8.1, KHコーダーはversion 3.Alpha.13cを使用させて頂いております。

一度全て削除して再度ダウンロードし直してみましたが同じエラーが出てきます。8万件ほどのレビューデータを分析しようとしておりまして、ファイルのサイズなどに関して何か問題はありますでしょうか?(17550KBですのでhttp://khc.sourceforge.net/FAQ.html#d-sizeでも説明されている通りそこまで問題ではないかとは思います。)

何か試せることがあればご教示頂けませんでしょうか?

よろしくお願い致します。

p.s.
樋口先生の回答について2点ほど追加で質問があります。

1. CSV形式に保存して得られた座標を用いて距離を計算する場合はユークリッド距離ではなくカイ二乗距離の計算方法を用いるべきでしょうか?

2. 「プロットを一目見て明白に違いが分からない程度であれば、あまり距離の違いにこだわる(距離の違いを強調するのは)良策でないようにも思えます。」とのことですが、何か詳しい理由があれば教えて頂けませんか?私自身の分析の目的として、一つの文書を基準として、その文書との類似性が高い文書を見つけることを目指しています。そこで40~50個ほどのキーワードの頻度を利用して、基準とした文書と似たキーワードの高さをもつ文書を最も類似性の高い文書として結論づけようというのが今考えている流れです。ですが、他にも異なる文書同士の類似性を示せるものをご存知でしたら、その点に関してもぜひご教示頂けたらと思います。


  [No.3606] Re: プロジェクト読み込み時のエラーについて 投稿者:HIGUCHI Koichi  投稿日:2018/05/06(Sun) 15:07:05

こんにちは、樋口です。書き込みありがとうございます。

うーん、初めて見るエラーです。Eドライブをお使いのようですが、空き容量
は十分に(数GB以上)ありますか? もしかすると、なんらかの理由で解凍
(unzip)に失敗したのかもしれません。

一度再起動した上で、デフォルトのCドライブ(C:\khcoder3)でお試しいただ
くといかがでしょう。また、まずはチュートリアルのファイル(kokoro.xls)
で試してみるといかがでしょう。

> 追加のご質問1

プロットされた場所の距離、座標間の距離であれば、私ならユークリッド距離
を使うと思います。

> 追加のご質問2

これもあくまで「私なら」ということですが、微妙な距離の違いを数値化して
示しても、説明が難しいように思ったので、そのように書きました。

例えばこのツリーの冒頭に貼り付けていただいた対応分析の場合、次のように
書けます。

(A) 「上」と「下」は原点から見て大きく異なる方向にあるので、異なる特徴
を持っていたとわかる。(B) どのように異なっていたかというと、「上」には
「先生」「持つ」「人間」などの語が多く、「下」には「K」「お嬢さん」など
の語が多かった。

(A) 「上」「下」の位置関係だけで無く、(B) 語の違いを説明できます。微妙
な距離の違いに注目する場合、(A)は可能でしょうが、(B)が難しいかなと思っ
たのです。もし(B)が難しいと、距離の違いにどんな意味があるのか、何に起因
する違いなのか、説明が難しいかなということです。

※どの程度微妙な違いかということによりますが。


  [No.3608] Re: プロジェクト読み込み時のエラー解決しました! 投稿者:ナカイマ  投稿日:2018/05/08(Tue) 00:38:37


樋口先生おはようございます。
返事が遅くなってすみません。

エラーの件解決しました!学校のコンピューターを使用して分析を試みていたのですが、別の端末に切り替えただけでEドライブからでも問題なく作動します。前処理以降の分析もきっちりできますし、対応分析のプロットの座標も問題なく取得できました。本当にありがとうございます。

追加の質問1への回答についてですが、ユークリッド距離を使用する理由をお伺いすることは可能でしょうか?
また樋口先生のおっしゃるユークリッド距離はプロットに表示された点の座標だと理解しております。その場合は、多次元の情報を含む大きなクロス表を次元圧縮を用いて可視化したものなので、ある程度の情報が失われていると思います(dimension 1 とdimension 2の合計が100%でない限りの話ですが)。ですので、もし多次元空間でのアイテム間の正確な距離を求めたい場合はクロス表からプロファイルを求めて、そのプロファイルからカイ二乗距離を求めるという流れにすべきなのではと考えているのですが、この考え方自体は間違ったものでしょうか?

追加の質問2への回答についてですが、前の投稿で使用した例で考えますと全くその通りだと思います。しかし、私の行なっている分析に当てはめてみた場合にも同じ考えになるのか、もしよろしければ樋口先生の意見を伺いたいと思っています。しかし、この件はKH コーダーのエラーや解析手法など当掲示板の主旨とは異なるお話かと思いますのでここでの説明は控えさせて頂いて、先生が公開していらっしゃるeメールの方(ko-ichi@ss.ritsumei.ac.jp)に連絡させて頂いて、お話を伺ってもよろしいでしょうか?

樋口先生がお忙しいことは重々承知しておりますので、もしそのような質問は受け付けていない、または時間がないという場合はご放念頂いて構いません。質問1についての先生の考えだけでもお聞かせ頂ければ幸いです。


  [No.3609] Re: 距離の計算について 投稿者:HIGUCHI Koichi  投稿日:2018/05/08(Tue) 01:27:50

こんにちは、樋口です。書き込みありがとうございます。

> ユークリッド距離を使用する理由

Symmetric mapの場合(KH Coderではスコアとして「対称」を選択した場合)、
プロットされた座標間のユークリッド距離は、プロファイル間のカイ二乗距離
の近似となっているからです。

さらに詳しくはこちらの書籍の5章9章あたりがお勧めです。
http://amzn.to/1s0Fu3v

> 次元圧縮前の距離を求めた方が正確

お書きの通りと考えます。ですから2次元のプロット間の距離ではなく、プロ
ファイル間のカイ二乗距離を求めるという考え方は良いと思います。

ただ、プロファイル間のカイ二乗距離が良いのか、それともコサイン係数とか
Jaccard係数が良いのかという点については、いくらか検討の余地があるかも
しれません。1つ1つの文書が長い場合にはコサイン係数の利用が多く見られる
ように思いますし、短い場合にはJaccard係数の方が良さそうです。対応分析
と組み合わせて距離の分析をするという場合は、対応分析で使われているカイ
二乗距離が良さそうでしょうか。

> 追加のご質問2

原則として、この掲示板がKH Coderの利用についてのご相談窓口となっていま
す。掲示板に書き込んでいただくか、あるいは公開が望ましくない場合には(
私は直接関与しませんが)コンサルテーションサービスをお使いいただく手も
ありますので、ご検討いただけましたら幸いです。
https://twitter.com/khcoder/status/991208148454129664
https://twitter.com/khcoder/status/991208263008964608


  [No.3610] Re: 距離の計算について 投稿者:ナカイマ  投稿日:2018/05/09(Wed) 06:47:58


樋口先生おはようございます。

返信ありがとうございます。

「文書が長い場合にはコサイン係数の利用が多く見られるように思いますし、短い場合にはJaccard係数の方が良さそうです。」とのことですが1つ1つの文書の語数にバラツキの大きい場合にはどちらがいいのか樋口先生の意見をお聞かせ頂けないでしょうか?テキスト分析どころか統計解析全般の経験そのものも全くない初心者なので、どの程度から長い文書なのか、または短い文書なのか少し検討をつけるのが難しいと感じています。

私の場合、トリップアドバイザーのレビュー本文(タイトルは対象外で全て英語で書かれているレビュー)を分析対象としておりまして、平均語数が75語、語数の標準偏差が68語となっておりまして、少し語数にばらつきが大きい文書が分析対象だと思っています。個人的には大きくても143語程度だと考えると特に"大きな文書"という訳でもないのでJaccord係数でいいのかなと感じていますが、経験もなしに恣意的に解釈して進めてしまうとあとが怖いので樋口先生の意見を聞かせて頂ければと思います。

ユークリッド距離を利用する理由、コンサルテーションサービスの件に関しても承知致しました。いつも丁寧にご対応ありがとうございます。

お手すきの際に、上記の質問に関してご返信頂けたらと思います。
よろしくお願いします。


  [No.3611] Re: 距離係数の選択について 投稿者:HIGUCHI Koichi  投稿日:2018/05/09(Wed) 19:33:51

こんにちは、樋口です。書き込みありがとうございます。

> どの程度から長い文書なのか、または短い文書なのか

文書が似ているかどうかという類似度を計算するには、含まれている語が似て
いるかどうかを見ます。

そのとき、「語Aが含まれているかどうか」「語があるかないか」で比べるの
がJaccard係数です。仮に分析対象の語が100種類ほどあったとして、1つの文
書に注目すると90種類ぐらいの語は出現していなくて、10種類ぐらいの語が
1語あたり1回から3回くらい出現している、というような状況ではJaccard係
数の強みが生きてきます。

それに対して、コサイン係数では「語Aがいくつ含まれているか」で計算しま
す。単に出現しているかどうかだけでなく、1回だけなのか5回なのか10回なの
かという違いを計算に含めたい場合はコサイン係数が良いでしょう。

これらの係数について詳しくは、こちらの本がお勧めです。
http://amzn.to/2Bl9MHx


  [No.3612] Re: 距離係数の選択について 投稿者:ナカイマ  投稿日:2018/05/09(Wed) 20:41:32

樋口先生こんばんは。

返信ありがとうございます。
Jaccord係数とコサイン係数の説明とてもわかりやすくて、勉強になりました。もう少し自分でも調べてみます

ありがとうございました。