はじめに pythonで混合正規分布を実装しました. 教科書として『はじめてのパターン認識』を使いました. 本記事の構成 はじめに 混合正規分布 混合正規分布モデル 隠れ変数と事後確率 対数尤度とQ関数 EMアルゴリズムによるパラメータ推定 pythonでの実装 結果 おわりに 混合正規分布 データ分布に確率モデルを当てはめると,各データがどのクラスタに属するかを確率的に決めることができます. 多くの確率モデルは単峰性の確率分布しか表現できないため,全体の確率分布を複数の確率モデルの重み付け線形和でモデル化する必要があります. クラスタ数を $K$,$k$ 番目のクラスタの確率モデルを $p_k(\boldsymbol x)$ とし,全体の確率分布を以下のように表します.
クラスタリングとはデータ点の集合を意味のあるグループに分割するものである。クラスタリング手法の 1 つとして Gaussian Mixture Model (GMM) というものがある。あの有名な(ここにあの有名な機械学習の本を入れる)にも載っているので、ソレ系の分野をやってる人は知ってる人も多いかもしれない。そしてその GMM の派生版として Approximate Gaussian Mixtures (AGM) という手法を提案している以下の論文がある。 Approximate Gaussian Mixtures for Large Scale Voacbularies 今回ふとしたきっかけで AGM を見つけて、そして実装してみたので、AGM の解説や GMM との違いをまとめてみよう。 Gaussian Mixture Model GMM は日本語ではガウス混合モデルと呼ばれたりす
はじめに クラスタリングについて調べてみると,割りと無責任に scikit-learn がーとか機械学習がーとか語っているページがとても多かったので, なぜ,クラスタリングを行うのかとその注意点 クラスタリングにはどのような分類があるのか それぞれの手法の長所と短所,なぜその手法を使うのか 具体的なライブラリの選択 という観点からまとめてみました. プログラマかつ数学弱者なので,深く込み入った数学的な沼については語ることが出来ません. また,具体的なライブラリとして,Python の Scipy や scikit-learn を用います. 基本的に引用が多い記事なので,下記の参考ページを一読していただきたいです.また,引用元の著者さんで,引用を外していただきたい場合はご連絡ください.すぐに対応します. クラスタリングを行う理由と注意点 クラスタリングとは そもそも機械学習の手法は大きく分け
Pythonの有名な機械学習用ライブラリであるscikit-learnには様々なアルゴリズムが実装されており、ユーザーは実際に実装しなくても簡単にアルゴリズムを呼び出せるようになっている。とはいえ、原理すら知らずに使うのは危険であり、また自分の目的に適した手法を選択するためにも原理の理解は避けて通れない。今回はscikit-learnに実装されている中から、K-Means, DBSCAN, Mean-shiftの三つの手法を簡単にまとめておくことにする。 なおどのようなアルゴリズムが存在するのか、の一覧はCluster analysis - Wikipedia, the free encyclopediaによくまとまっている。scikit-learnの一覧ページ(2.3. Clustering — scikit-learn 0.17.1 documentation)も参考になるだろう。 1
データ分析から導き出されたインサイト無しにAI(人工知能)の活用は始まりません。私たちは、各業界知識とデータ・アナリティクス技術を駆使しデータドリブン経営を強力に支援します。 データ、アナリティクス、AIは企業にとって競合他社との差別化を図るかつてないほど大きな要因になっています。今日の経営幹部が効率を向上しながら新たな収益源を開拓し、新しいビジネスモデルをタイムリーに構築する方法を模索する中、価値を生み出し成長を続ける企業には「データ活用」という共通項があります。私たちは、無数のデータから企業にとって本当に必要なデータを活用するための方法を知っています。 将来を見据えたオペレーション体制を備えている企業の半数以上(52%)は、すでにデータとアナリティクスを大規模に活用しています。データとAIに関する取り組みをビジネス戦略に沿って実施することで投資利益率を迅速に最大化し、最終的にはAIをビ
1. Rで学ぶデータサイエンス 5パターン認識 第5章 混合分布モデル 2011/07/02 TwitterID:sleipnir002 2. R一人勉強会のご紹介 Rで学ぶデータサイエンス 5パターン認識 (著)金森 敬文, 竹之内 高志, 村田 昇, 金 明哲 共立出版 今ならデモスクリプトがダウンロードできる! http://www.kyoritsu- pub.co.jp/service/service.html#019256 彼女いない暦の5年8ヶ月の不細工でモテな私が 第1章 判別能力の評価 Done 第2章 k-平均法 第3章 階層的クラスタリング あのかわいい女の子を たったの3ヶ月でGET!! 第4章 混合正規分布モデル 第5章 判別分析 第6章 ロジスティック回帰 第7章 密度推定 はっと息を飲むようなあの美人がこの方法で 第8章 k-近傍法 Rでパターン認識ができるよう
1 情報意味論(7) EM 櫻井彰人 慶應義塾大学理工学部 より複雑なモデル � 確率モデルであって、一個の著名(?)な分布で表せないもの、… で 表せそうもないもの、…ではなさそうなものが、世の中にはたくさんあ る。 � 様々な分布を考える � 指数・ポアソン・t・対数正規・… � 分布を組み合わせる � 線形和 – 非観測変数の出現 � しかし、工夫がある → EMアルゴリズム � 分布を考えない – しょせん、多項分布 � 変数が多いと大変。 � しかし、工夫がある → Bayesian network 例: 混合正規分布 � 正規分布(ガウス混合)の線形和 線形和(重みの和は1) p(x) = ∑ πj pj(x) 考え方: 各データは、まず、 j のどれか をランダムに選び(確率分布は {πj} )、 次に pj に従い生成される -10 -5 0 5 10 0.0 0.05 0
はじめに クラスタリングと教師なし学習 教師なし学習 クラスタリング クラスタリングの手法 凝集型クラスタリング 重心法 単連結法 完全連結法 まとめ k-means 発展的話題 はじめに クラスタリングとは機械学習手法の1つであり、通常は「教師なし学習」によって実現されます。今回はクラスタリングの使いドコロや、通常の判別などと何が違うのかを理解し、基本的な手法を確認することを目的とします。 クラスタリングと教師なし学習 教師なし学習の全てがクラスタリングというわけではありません。あくまで、教師なし学習の中にクラスタリングというものがあるというイメージです。教師なし学習とクラスタリングがいったいそれぞれ何なのかを説明していきます。 教師なし学習 データがあったとしましょう。機械学習をするという場合には、何らかの評価関数を使って関数を決定します。 仮に「教師あり学習」の場合は、データに対して
データのクラスタリング間の類似度を測る尺度として、ランド指数 (Rand Index) というものがあるようです。プログラムを書きながら試してみたので、実例とともに計算方法をまとめてみたいと思います*1。なお Wikipedia の英語ページは以下にあります。日本語ページは未作成のようです。 Rand index - Wikipedia, the free encyclopedia クラスタリングの対象になるような手ごろなデータがないかと探してみたところ、国土地理院のウェブページで都道府県庁所在地の緯度経度座標が公開されているのを見つけました。今回はこのデータを使ってみることにします。 都道府県庁の経度緯度 まずは HTML ファイルを取得して、この後の処理で使いやすいように csv 形式に変換しておきます。元データは緯度経度が「度分秒」の形式になっていますが、これも十進法に変換しておきま
Typical objective functions in clustering formalize the goal of attaining high intra-cluster similarity (documents within a cluster are similar) and low inter-cluster similarity (documents from different clusters are dissimilar). This is an internal criterion for the quality of a clustering. But good scores on an internal criterion do not necessarily translate into good effectiveness in an applica
背景 前回、k-meansの最適なk数ってどうやって探すの?って記事を書きました ↓ コメント欄 というわけで、『X-means』を調べました クラスタ数を自動推定するX-means法について Pelleg and Moore (2000)が提案したK-meansの拡張アルゴリズム。 クラスター数Kを自動決定する k-meansをデータ数が多くても高速に動くようなアルゴリズムに工夫する という点が、従来のk-meansとの差分。 "x-means"でググると最初に出てくる2本のpopularっぽい論文 X-means: Extending K-means with Efficient Estimation of the Number of Clusters | Carnegie Mellon Univ. (2000) x-meansの提案論文 クラスター数を自動決定するk-meansアルゴ
はじめまして。 カラフルボードでAIの研究開発をやっているn-suzukiです。 普段は開発半分、研究・調査半分という感じで稼働しているため、ニューラルネットや機械学習のアルゴリズムに関する学術論文を読む機会が多く、自分の理解のために論文の内容を実装してみて動かしてみることがあります。 今回はその一環で実装した「ニューラルガス」というアルゴリズムについて紹介します。 ニューラルガス1は、ベクトル量子化2手法の一つで、クラスタリング、特徴抽出等に用いられます。同じベクトル量子化手法であり、より広く知られているK-means法と比較して、量子化精度が良いことが報告されています3。 ニューラルガスでは、$N$個の素子(ニューロンと呼ぶ)が代表ベクトルにあたる重みベクトル$w_n$を持ち、この値を適応的に更新することで適切な代表ベクトルを獲得します。この重みベクトル$w_n$を更新する際のダイナミ
今年の7月に開催されたSciPy2015の講演動画がEnthoughtのチャンネルで公開されている。今年も面白い講演が多いのでいろいろチェックしている。 今年の目標(2015/1/11)にPythonの機械学習ライブラリであるscikit-learnを使いこなすというのが入っているので、まずはscikit-learnのチュートリアルを一通り見ることにした。 Part IとPart IIを合わせると6時間以上あり非常に充実している。IPython Notebook形式の資料やデータは下記のGitHubアカウントで提供されている。ノートブックをダウンロードし、実際に手を動かしながらチュートリアルを進めると理解がより進むかもしれない。 あとで振り返りやすいように内容を簡単にまとめておきたい。 1.1 Introduction to Machine Learning 機械学習システムの流れ。教師あ
クラスタリングと分類 クラスタリングとは、似ているサンプルをまとめてグルーピングをすることです。 グルーピングするグループは前もって与えられていません。 それに対して、分類では、グループは前もって与えられていて、サンプルを与えられたグループへ分類します。 ここでは、2次元平面にランダムに生成されたサンプルを、距離が近いものをまとめてグルーピングする方法を考えます。 混合正規分布によるクラスタリングは、グループは前もって与えられていないが、いくつのグループに分けるがグループの数は決まっている分類方法です。 左上にメニューが表示される。 [create data]ボタンを押すとランダムにサンプルが作成される。 [create center]ボタンを押すとランダムにグループの中心が作成される。 [start]ボタンを押すとclusteringが始まる。 混合正規分布によるクラスタリング この分類
「クラスタは球状だ」と想定しているk平均法が苦労するように、細長くて交差したクラスタのデータを使った。また変分ベイズの「クラスタの個数を自動調整する」というメリットを確認するために、クラスタの個数は2, 4, 8個で行った。EMアルゴリズムと変分ベイズでは、k平均法ができていない「長細いクラスタだ」という推定ができている。またEMアルゴリズムではクラスタの個数は人間が与えないといけないが変分ベイズでは自動調整されている。ただし、自動調整に失敗することも結構あるので「何回か実行して一番良かったものを取る」というアプローチが必要だろうな。変分ベイズの8クラスタでの実験は10回やって一番良かったものを取っている。4クラスタの実験は6回。それぞれ初期状態から20ステップの学習過程を動画にしている。 k平均法 k平均法では細長いクラスタを見つけられないのでこれが限界 4クラスタの例。クラスタの個数を
決定木とは 目的変数に属する確率を複数の説明変数の組み合わせで算出する方法。 イメージは以下で、Yes/Noなどの条件に属するかどうかで確率を算出する。 ランダムフォレストとは ランダムフォレストは、アンサンブル学習法(複数の分類器を集めて構成される分類器)の一つ。 決定木を複数集めて使うので、木が集まってフォレスト(森)として使う。 やってみる(sklearnでの決定木) データ用意 ランダムに作ったデータを用意する。 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn %matplotlib inline from sklearn.datasets import make_blobs # ダミーデータの生成用 X, y = make_blobs(n_samples=5
C++でOpenCVを使ってK-Meansクラスタリングを行うサンプル。 OpenCVのインストール CentOSの場合 #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/flann/flann.hpp> int main() { cv::Mat samples = cv::Mat::zeros(5, 5, CV_32FC1); samples.at<float>(0, 0) = 100.0; samples.at<float>(1, 0) = 100.0; samples.at<float>(2, 0) = 80.0; samples.at<float>(3, 0) = 70.0; samples.at<float>(4, 0) = 50.0; std::cout << "samples=\n"
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く