機械学習に関連する用語に「DBSCAN」というものがあります。機械学習では有名なアルゴリズムのひとつとして挙げられるのですが、耳にしたことがないという人もいますよね。
ですからこの「DBSCAN」をほかのクラスタリングのアルゴリズムと比べてどんな特徴を持っているのでしょうか。
そこで今回は、3分で解決!「DBSCAN」のあれこれについて詳しく解説していきます。
DBSCANとは何か
DBSCANがクラスタリングのアルゴリズムの一種であるということは、冒頭でご紹介しました。
では一体DBSCANはどのような特徴を持っていて、どのようにして使われるのでしょう。ここではまず、DBSCANとはいったい何者なのか?についてご説明することにします。
なんだかわかったようなわからないような気がしますよね。(ちなみに、データベースともスキャンとも一切関係はありません。)
つまりDBSCANとは、簡単に言えば「≪データの密度≫を基準として、クラスタリングをするアルゴリズム」ということができます。
これでDBSCANについては何となく頭の中でイメージが湧いてきたのではないでしょうか。
DBSCANをPythonで実装する方法
ではDBSCANは、実際にはどのようにして使うことができるのでしょうか。
ここで登場するのはやはり、機械学習に最適なプログラミング言語「Python」。「Python」で実装することで簡単に動かすことができます。
そこでここでは、DBSCANをPythonで実装する方法についてわかりやすくご説明していくことにしましょう。
データセットの作成
DBSCANの重要なパラメータ
DBSCANのアルゴリズムでは、すべてのデータはコア点、到達可能点、外れ値のいずれかに分類されます。この分類を決定するのがmin_pointsパラメータ。一方、epsパラメータは、半径を決めるパラメータです。
DBSCANの実装
scikit-learnを使って実装していきます。
DBSCANを機械学習で使うことのメリット
それでは、DBSCANを機械学習で使うとどんないいことがあるのでしょうか。
クラスタ数の設定が不要
ノイズの除去
outlierの影響を受けにくい
DBSCANを機械学習で使うときのデメリット
そんなDBSCANですが、もちろんいいことずくめというわけでもなさそうです。
今度は、このDBSCANのデメリットとはいったい何なのかお話しましょう。
計算コストの高さ
クラスタ間で密度が異なる場合や、データが密集している場合に不向き
DBSCANについてもっと知りたくなった時に読む、おすすめの論文
ここまで、DBSCANの概念やメリット、デメリットなどについてご紹介してきましたDBSCANについて、少しは理解が得られたのではないでしょうか。しかしこのDBSCAN、当然のことながらもっともっと奥の深い技術なのです。
そこで最後に、DBSCANについてもっと知りたい人のためにおすすめの論文をご紹介しましょう。
DBSCAN のパラメータ設定の自動化について
この論文は、前述したDBSCANにおける重要なパラメータであったmin_pointsとepsという二つのパラメータの設定を自動化しようというものです。
今回は、クラスタリングのアルゴリズムのひとつであるDBSCANの基礎について詳しくご説明してきました。簡単におさらいしてみましょう。
DBSCANは密度に基づいて、クラスタリングを行う手法のことでしたよね。eps(半径)とmin_pointsという二つの重要なパラメータを設定することで、すべてのデータを、コア点、到達可能点、外れ値(ノイズ)に分類することができました。
メリットとしては、密度に基づいたクラスタリングを行うので、あらかじめクラスタ数を設定必要がないこと、ノイズが除去できることなどが挙げられました。一方で、計算コストが高いという点がデメリットでもあります。
このように、DBSCANについてお話しましたが、さらに詳しい内容が気になったという方は、論文や書籍などで詳しく学習してみて学びを進めてみましょう。そうして機械学習について知識を深めていけると良いですよね。