結婚式も披露宴も、こちらは非常に楽しくやっていましたし、ゲストの盛り上がりも良くて、後で話を聞いてもよかったねー、だったのも嬉しいポイントでした。自由度高くお金と頑張り次第でなんでもいけるのでクレイジーウェディングおすすめです!あと干し芋を置いておきますね、お祝いの気持ちが湧いてきたらお願いします。左手に装備品が増えました。技術的な話題この記事は公開されてから1年以上経過しており、情報が古い可能性があります。ものがリリースされたらしい。Unit」がオープンソースで登場。PHP、Go、Pythonに対応。Publickeyドキュメントに書かれているインストール方法や設定を見てたらパッと出来そうだったので思いたってやったったの巻。向けにはパッケージが適当されているっぽい。エラーっぽいものなし。パッケージのものだとうまく動かない???ということでソースから入れる路線を試す。アプリケーションが動いたぞ~~~空っぽだけど...。ワーカーが動いてるだけですねー、しゅごい。時に言語指定すれば使えるようです。盛り上がりを見せている(ように見える)ので、ちょっとしたバグなどなどあってももりもり直されていくんじゃないかなーという予感です。技術的な話題この記事は公開されてから1年以上経過しており、情報が古い可能性があります。いじることが増えてきたように感じています。しておけばいいっしょ、くらいだったのですが、もっと奥深い色々が出てきて、クラスタリングわからないマンになりつつあります。そんなわけで、階層型クラスタリングを調べて、やってみたのでまとめておきます。クラスタリングとはクラスタリングとはデータを良い具合にまとめるという、教師なし学習の典型例です。何かしらの特徴量に沿って、データの流れや雰囲気をアルゴリズム的に見抜き、その様子でデータをまとめることができます。非階層型クラスタリングと呼ばれています。具体的には以下のようなアルゴリズムでクラスタリングを行います。元に、ランダム(※)にクラスタの中心を決定する各要素から一番近いクラスタの位置を探し、それを各要素のクラスタとして設定する各クラスタの重心を計算し、その重心位置をクラスタの中心として設定する各要素から一番近いクラスタの位置を探し、それを各要素のクラスタとして設定する各クラスタの重心を計算し、その重心位置をクラスタの中心として設定する...これを重心の移動がしきい値を下回るまで、あるいは指定の回数を超えるまで実施する最終的に、各要素から一番近いクラスタの位置が、その要素のクラスタとして決定される(イメージ図@雑)※ランダムにするか、程よい位置にするか(k-means++)などの初期位置決定の方法があります後述する階層型との比較でも挙げますが、初期位置によってある程度クラスタの別れ方が分岐することも往々にして発生します。クラスタリング結果が毎回異なる可能性もあり、厳密な分類がほしい、なんとなく纏めるでは嫌、といった場合の要望をかなえることはできません。事前にクラスタ数を設定する必要があるため、それが難しいような状況では大きな力を発揮することが難しいです。いう、クラスタ数を自動で設定できるものもあります。呼ばれるベイズ情報量規準が、設定したしきい値を下回るまで実行していくようなものになっています。詳しいことはぼくもあまりわからないので、その話が上がっている論文を見ると幸せになれると思います。http://www.rd.dnc.ac.jp/~tunenori/xmeans.html機械学習について触れていると、似たような「クラス分類」といったワードを見かけたこともあるかと思います。こちらはクラスタリングとは異なり、教師あり学習で「あるデータがどのクラスに属しているかを当てる」という全く別の問題になります。リンゴは果物、キャベツは野菜、というような、明確に正解があるようなデータを分類していくときには、クラス分類になります。階層型クラスタリングとは階層型クラスタリングは以下のようなアルゴリズムで処理されます。すべての要素に固有のクラスタを設定するクラスタを2つ取り上げていき、最も距離が近いもの(※)をくっつけて、新しいクラスタを作成するこれを再帰的に実行し、最終的にクラスタが1つになるまで実施する※「距離」の定義は設計次第です。ユークリッド距離、コサイン距離、など様々な計算方法があります。※くっつけて出来上がったクラスタ間の距離計算は設計次第です。クラスタが含む要素をそれぞれ比較し、最も近いものを距離とする(最近隣法)クラスタが含む要素をそれぞれ比較し、最も遠いものを距離とする(最遠隣法)クラスタが含む要素をそれぞれ比較し、平均的な距離とする(平均法)クラスタが含む要素をそれぞれ比較し、それぞれの距離について分散を利用して程よい値を取る(ウォード法、よく使われているらしい)(イメージ図@雑)そうして出来上がったクラスタリング結果ですが、このままでは木構造のようになっており、データとして扱うにはどれがどういうクラスタに属しているのかを明確に決定しにくいです。実際にあるタスクで利用したときには、最大距離の7割を基準にして、クラスタを分割していました。状況によってはパラメータの調整する必要がありそうな予感がしています。(k-means)のそれぞれの使いどころ階層型が活用できそうなところは以下のようなところではないでしょうか?データセットのうち、それぞれの距離に何かしらの特徴がありそうどれくらいのクラスタに分けたらいいかわからない階層型の場合。クラスタ間の距離で並べ替えることも容易にできるはずなので、しきい値の設定が小さいせいでクラスタを分けすぎてしまっても、ある程度までは前後関係もそれっぽく追いついてきます。出来上がった後に、人力でカバーすることも可能なのではないかなあと思います(それってどうなの感はありますが...)あるいはクラスタ数がいくつになるか想定できないような場合にも、全てのデータを一度まとめあげるので、自動で出てきた結果の様子を見つつ、手動でクラスタ分けしていくことができると思います。個のクラスタができあがります。非常に有効なのではないでしょうか。それぞれのクラスタ間で相関がないことや、中途半端な位置のデータはどちらとも言えないような結果になることは注意がいるかもしれません。どんなデータを入れても、なんとなくまとめてくれるので、人力で確認したときも、「ああーこういう見方もあるのね、なるほど」という謎の納得感が得られやすいとも思います。階層型クラスタリングをやっていきます。キレイに分かれましたね。非常に特徴的ってことがわかります。似ている、なんてところですね。いうわけで、階層型クラスタリングの話でした。欲しいって言われたのでそれはまた。