★ 0/1データのクラスタリングについて ★

7390. 0/1データのクラスタリングについて いちろう 2005/08/05 (金) 21:01
├7392. Re: 0/1データのクラスタリングについて 青木繁伸 2005/08/05 (金) 21:50
│└7395. Re^2: 0/1データのクラスタリングについて いちろう 2005/08/05 (金) 22:16
└7391. Re: 0/1データのクラスタリングについて kzkishi 2005/08/05 (金) 21:47
 ├7394. Re^2: 0/1データのクラスタリングについて いちろう 2005/08/05 (金) 22:06
 │└7396. Re^3: 0/1データのクラスタリングについて にゃんちゅう 2005/08/05 (金) 22:19
 │ └7399. Re^4: 0/1データのクラスタリングについて いちろう 2005/08/05 (金) 22:30
 │  └7401. Re^5: 0/1データのクラスタリングについて 青木繁伸 2005/08/05 (金) 22:44
 │   └7402. Re^6: 0/1データのクラスタリングについて いちろう 2005/08/05 (金) 23:01
 │    └7403. Re^7: 0/1データのクラスタリングについて Shimp 2005/08/06 (土) 01:21
 │     └7410. Re^8: 0/1データのクラスタリングについて いちろう 2005/08/06 (土) 12:34
 │      └7412. Re^9: 0/1データのクラスタリングについて Shimp 2005/08/06 (土) 23:06
 └7393. Re^2: 0/1データのクラスタリングについて 青木繁伸 2005/08/05 (金) 21:54
  ├7429. Re^3: 0/1データのクラスタリングについて ろろ 2005/08/11 (木) 02:10
  └7397. Re^3: 0/1データのクラスタリングについて kzkishi 2005/08/05 (金) 22:22
   ├7400. Re^4: 0/1データのクラスタリングについて いちろう 2005/08/05 (金) 22:41
   └7398. Re^4: 0/1データのクラスタリングについて 青木繁伸 2005/08/05 (金) 22:29


7390. 0/1データのクラスタリングについて いちろう  2005/08/05 (金) 21:01
初めまして。
クラスタリングの手法選択に悩んでいます。
100人に15個の項目について,Yes,Noで答えてもらいました。
すべての項目をNoと答えた人はいません。
この結果を15個の0/1データとして扱い,デンドログラムを使ったクラスタリングをしたいと考えています。
クラスタリングの方法として,私は,15次元の空間上における各データ点のベクトルの向きで分けることを考えました。0/1データですので,ベクトルの長さは問題にしなくてよい,と考えています。
そこで,コサイン類似度を計算しました。
さて,コサイン類似度のマトリックスは得られたのですが,クラスタリングの手法が思いつきません。1-コサイン類似度で「類似度」から「距離」にしてUPGMAを使ったところ,それなりにもっともらしい結果は返ってきましたが,なんとなく不細工なやり方だと感じています。
恐らくこのようなデータの取り扱いは多くなされており,手法も確立しているのだと思いますが,探しても見つかりません。
こちらのサイトでウォード法をなどを使えるマクロを落として使いましたが,連続変数でない0/1データに対してもユークリッド距離を用いるクラスタリング法は有効なのでしょうか?
ご助言いただきたいです。よろしくお願い致します。

     [このページのトップへ]


7392. Re: 0/1データのクラスタリングについて 青木繁伸  2005/08/05 (金) 21:50
> そこで,コサイン類似度を計算しました。
> さて,コサイン類似度のマトリックスは得られたのですが,クラスタリングの手法が思いつきません。1-コサイン類似度で「類似度」から「距離」にして UPGMAを使ったところ,それなりにもっともらしい結果は返ってきましたが,なんとなく不細工なやり方だと感じています。

どこが,どう,不細工なのか,他の人にはわかりにくいかも。。


0/1データは特別で,ダミー変数とも呼ばれ,連即変数(間隔尺度)としても扱えますよというのは,統計学の常識です。

距離行列の定義もいろいろありますし,クラスター分析は結果オーライの分析手法なので,いろいろやってみるのが良いのではないでしょうか。

     [このページのトップへ]


7395. Re^2: 0/1データのクラスタリングについて いちろう  2005/08/05 (金) 22:16
青木さん,
コメント有り難うございます。

> どこが,どう,不細工なのか,他の人にはわかりにくいかも。。

あはは。そうですね。私の単純な感想であり,掲示板では不適切と分かっていながら,不細工と言ってみました。統計の素養があまりないので,手持ちの武器をいろいろ組み合わせた素人芸みたいになってるんじゃないか,実は正攻法が存在するんじゃないかと思ったわけです。

> 0/1データは特別で,ダミー変数とも呼ばれ,連即変数(間隔尺度)としても扱えますよというのは,統計学の常識です。

これは連続変数,のタイプミスですよね?なるほど。そうなんですか。

> 距離行列の定義もいろいろありますし,クラスター分析は結果オーライの分析手法なので,いろいろやってみるのが良いのではないでしょうか。

なんだか勇気が湧いてきました。しかし論文を書くときにうまく説明できるか不安です。はじめの投稿で書きましたように,今,2つのデンドログラムをざーっと見渡して比較しているところです。他にもいくつか試して合意のある枝に注目していこうかと考えています。

     [このページのトップへ]


7391. Re: 0/1データのクラスタリングについて kzkishi  2005/08/05 (金) 21:47
>クラスタリングの方法として,私は,15次元の空間上における各データ点のベクトルの向きで分けることを考えました。

そもそも,それってクラスタリングになっていますか?
クラスタリングだと,15次元空間の任意の点に各個体が分布しうるのが前提だと思うのですが。
例えば,3次元で考えて,原点からxyz軸に沿って長さ1の辺をもつ立方体を想像して下さい。
この場合,お書きの内容だと,100人は必ず立方体のどこかの頂点に存在していることになると思います(原点以外)。
ベクトルで考えたとしても,原点から各頂点に向かうベクトルのどれか,になるだけですね。
次元が15に増えても状況は変わらないと思います。
この状況でクラスタリングを行うことが妥当だとは,あまり思えないのですが…。

     [このページのトップへ]


7394. Re^2: 0/1データのクラスタリングについて いちろう  2005/08/05 (金) 22:06
kzkishiさん

コメント有り難うございます。

> >クラスタリングの方法として,私は,15次元の空間上における各データ点のベクトルの向きで分けることを考えました。
>
> そもそも,それってクラスタリングになっていますか?

あ,言い方がまずかったみたいです。15次元空間における角度,という見方をすればクラスタリングできるかな,と思ったわけです。なので,各データ間の角度ををコサインで表して,類似度マトリクスを作ったのです。それも,まずいですかね?

     [このページのトップへ]


7396. Re^3: 0/1データのクラスタリングについて にゃんちゅう  2005/08/05 (金) 22:19
そもそも項目をクラスタリングしたいのですか,個人をクラスタリングしたいのですか?

     [このページのトップへ]


7399. Re^4: 0/1データのクラスタリングについて いちろう  2005/08/05 (金) 22:30
にゃんちゅうさん,

> そもそも項目をクラスタリングしたいのですか,個人をクラスタリングしたいのですか?

個人です。被験者の回答パターン,というのが正しいでしょうか?

     [このページのトップへ]


7401. Re^5: 0/1データのクラスタリングについて 青木繁伸  2005/08/05 (金) 22:44
クラスター分析のほかにも,ケースをクラスタリングする方法は,主成分分析,因子分析,数量化III類,数量化IV類,主座標分析などなど何種類もありますよ。

因子分析,主成分分析においても,相関係数行列からスタートするか,分散・共分散行列からスタートするかによっても違いますしね(相関係数行列からスタートするしかないことも多いですが)。

分析手法によっても,微妙に結果は違いますしね。

     [このページのトップへ]


7402. Re^6: 0/1データのクラスタリングについて いちろう  2005/08/05 (金) 23:01
青木さん,
コメント有り難うございます。

> クラスター分析のほかにも,ケースをクラスタリングする方法は,主成分分析,因子分析,数量化III類,数量化IV類,主座標分析などなど何種類もありますよ。
> 分析手法によっても,微妙に結果は違いますしね。

な るほど。ただ,今回はデンドログラムでどうクラスタリングされるのか,クラスター間の関係はどうなっているのか,ということを見たかったので視覚的に分か りやすいクラスター分析を採用しようと思ったわけです。「分ける」ということに着目したらご紹介いただいた方法を使えばうまく情報が引き出せるかも知れま せんね。軽く調べてみようかしら。

     [このページのトップへ]


7403. Re^7: 0/1データのクラスタリングについて Shimp  2005/08/06 (土) 01:21
似た様な事を以前にしたことがあるのですが,数量化III類の結果をクラスター分析することで,それっぽい(私にとって説明しやすい)結果を得た経験があります。適当に情報を捨てたことが良かったのかもしれません...

Excelの件については,例えば距離行列を作成する直前までExcelで仕上げて,その後はRを使っています。
http://www.okada.jp.org/RWiki/index.php?RjpWiki

Excelのシートから直接テキストエディタに貼ればタブ区切りテキストになると思うので,例えば,

X1 X2 X3
sample1 1 0 0
sample2 0 1 1
sample3 0 0 1
sample4 0 1 1
sample5 1 0 0
sample6 1 1 1
sample7 0 0 1
sample8 0 0 1
sample9 0 0 1
sample10 0 1 0

という内容を持ったdata.txtを生成して,

x <- read.table("data.txt", header=TRUE) #←データを読んで
y <- dist(x, method = "euclidean") #←距離行列を計算させて
y #←表示させる

で距離行列を計算してくれます。

その後,

z <- hclust(y, method = "ward") #←階層的クラスタ分析をやらせて
plot(z) #←デンドログラムを描かせる

...関数(と適切な引数と書式)さえ判ってしまうと,あまりに強力で笑っちゃいますよ。マジです。

     [このページのトップへ]


7410. Re^8: 0/1データのクラスタリングについて いちろう  2005/08/06 (土) 12:34
Shimpさん,
丁寧なアドバイスありがとうございます。
なるほど,Rの中で一連の作業をやらせちゃうわけですね。メモメモ・・・。
d氏との紹介までしていただいて,至れり尽くせりです。
マクロよりシンプルに見えますね。試してみます。数量化III類も調べてみます。
有り難うございます。

     [このページのトップへ]


7412. Re^9: 0/1データのクラスタリングについて Shimp  2005/08/06 (土) 23:06
私の場合は500程度のサンプル数だったので,どのくらいまでいけるのか試してみました。
5000くらいまではいけそうでしたが,ハングアップを思わせる程度に待ち時間はありました。

x <- matrix(c(as.integer(runif(75000,min=0.1,max=1.9))), ncol=15, byrow=TRUE) #15問x5000人分のデータを想定して,
write.table(x, file="score.txt", sep="\t") #検証用にタブ区切りテキストで吐き出させて,
dendro <- hclust(dist(x,method="e"),method="w") #距離行列化してクラスタ分析させて,
plot(dendro) #デンドログラムを描かせて
clust <- rect.hclust(dendro, k=5) #例えばクラスタ数が5個になる様に様に分割して
sink(file="result.txt") #分割した様子をファイルに吐き出させる
clust
sink()

     [このページのトップへ]


7393. Re^2: 0/1データのクラスタリングについて 青木繁伸  2005/08/05 (金) 21:54
データが一様に分布している必要もないし,連続的に分布している必要もないでしょう。

ダミー変数を利用する重回 帰分析とか MANOVA とか NANCOVA とか,統計処理は多変量正規分布を仮定しているようで,多変量正規分布に従わないときのことについてはあまり究明されていないようで,いい加減に適用され ている部分が多いのではないかと密かに疑っているところです。

     [このページのトップへ]


7429. Re^3: 0/1データのクラスタリングについて ろろ  2005/08/11 (木) 02:10
前の話を再び持ち出して申し訳ありませんが

> ダミー変数を利用する重回帰分析とか MANOVA とか NANCOVA とか,統計処理は多変量正規分布を仮定しているようで,多変量正規分布に従わないときのことについてはあまり究明されていないようで,いい加減に適用され ている部分が多いのではないかと密かに疑っているところです。

理論上,独立成分分析などが考えられるとは思うのですが,分析における実用性(一般的にAcceptされるかどうか,ソフトウェアの問題等・・・)を考慮するとどうなのでしょうか。

     [このページのトップへ]


7397. Re^3: 0/1データのクラスタリングについて kzkishi  2005/08/05 (金) 22:22
非難ごうごう(^^;

>データが一様に分布している必要もないし,連続的に分布している必要もないでしょう。

失礼しました,仰る通りです。

>なので,各データ間の角度ををコサインで表して,類似度マトリクスを作ったのです。それも,まずいですかね?

うーーーんと,ちょっと判らないです。
ただ,ユークリッド距離は良くないと思います。
ユークリッド空間の為にある距離ですし。

ただ,誤った書き込みをしたお詫びの代わりに,別の距離としてハミング距離をおすすめします。
各個人をビット列だと思えば,適当な距離じゃないかなと思います。

     [このページのトップへ]


7400. Re^4: 0/1データのクラスタリングについて いちろう  2005/08/05 (金) 22:41
kzkishiさん,

> ただ,誤った書き込みをしたお詫びの代わりに,別の距離としてハミング距離をおすすめします。
> 各個人をビット列だと思えば,適当な距離じゃないかなと思います。

有り難うございます。早速web検索して説明を見ました。
おお!とのけ反りそうです。これは確かに適当な距離算出法のようです。
これも試してみます。ありがとうございました。
青木さん,クラスター分析の「内情」をいろいろお聞かせくださり,有り難うございます。

あ, ちょっと話がずれるのですが,MSOfficeのExcelやAppleWorksの表計算だと列数が256で最大になってますよね?膨大なサンプルを使 う際,距離行列がこの限界にぶちあたってしまう場合とか,皆さんはどうやって対処していらっしゃるのでしょう?蛇足ながら良い機会ですのでお聞きしたいで す。

     [このページのトップへ]


7398. Re^4: 0/1データのクラスタリングについて 青木繁伸  2005/08/05 (金) 22:29
別に非難ゴウゴウでもないし。。。(^_^)

距離の定義はいろいろありますよね。

市街地距離〜〜ユークリッド距離〜〜え〜となんでしたっけ一般化距離の名称

ユークリッド距離でもマハラノビス距離でも,

0/1 合致数でもよいし,

更に,距離にするか,二乗距離にするかとか,そう言う意味では,クラスター分析は恣意性が強いように思います。。

結果オーライの手法ですね。

     [このページのトップへ]


● 「統計学関連なんでもあり」の過去ログ--- 034 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る