課題の整理
・ グレースケールの画像上に局所的に0以外の部分がある
・ この「局所的な最大値」で画像を分類したい
・ 局所的な最大値は、0、1、2、3のような整数かもしれないし、小数点の値がはいるかもしれない
・ 閾値は設定せずに機械学習によって分類したい
機械学習に沿った考え方
画像の寸法やデータの分布がどうであれ、
・ 局所的な最大値のみで評価(最大値のあった「位置情報」を加味しないし、最大値以外の値がどう分布していたか…例えば標準偏差は加味しないで評価)するのであれば、サンプル1つ当たりから得られる値は1つのみ。言い換えれば、「最大値のみが並んだ縦1列のみのデータレコード」として捉えられる(下記1)。もしどのクラスかを示す正解情報(ラベル)を用意できるのであれば、「最大値のみが並んだ縦1列とクラス情報のラベルの縦1列を持ったデータレコード」として捉えられる(下記2)。
- 正解情報(ラベル)を用意できないときの考え方
- 正解情報(ラベル)を用意できるときの考え方
この時、正解情報(ラベル)のことを教師データ(学ぶ対象のこと)と呼びます。
なので、
上記の1はラベルがないので「教師なし学習」(分け方すらも機械に任せる)、
上記の2は「教師あり学習」(人間が与えたラベルを可能な限り満たせるように分け方を学ぶ)と呼びます。
実際の考え方の詳細
1. 教師なし学習:正解情報(ラベル)を用意できないときの考え方
サンプル番号 | 最大値 |
---|
1 | 1.2 |
2 | 1.3 |
3 | 0.5 |
4 | 2.2 |
5 | 3.0 |
この場合は教師なし学習のため、機械が自力でデータの分布を考え、どう分類するのがよいかを考える必要があります。似たデータのみを寄せ集めてクラスタを形成させるため、「クラスタリング」と呼ばれる手法が使われます。
詳細:Scikit-learnのクラスタリング
出典:Scikit-learn公式「2.3.1. Overview of clustering methods」
※この例では縦横の2次元データでクラスタリングをしていますが、これは一次元データでも基本的に同じやり方を適用できますので、こういう手法もあるくらいのイメージで捉えてください。
クラスターがいくつあるかあらかじめ分かっているか、分かっていないかで細かい手法を調整することもできます。具体的には、エルボー法を用いると、(適当に直感でいくつのクラスターにするのが良さそうかとするのではなく)「いくつのクラスターに分けるのが合理的か」を知ることができます。
2.教師あり学習:正解情報(ラベル)を用意できるときの考え方。
サンプル番号 | 最大値 | 正解情報 |
---|
1 | 1.2 | B |
2 | 1.3 | B |
3 | 0.5 | A |
4 | 2.2 | C |
5 | 3.0 | C |
この場合は教師あり学習のため、機械があらかじめ与えられた正解情報を元に、どう分類するのがよいかを考えます。データの分布ではなく正解情報を元になるべく正しく分類させようとするため、「クラシフィケーション」と呼ばれる手法が使われます。
詳細:Scikit-learnのクラシフィケーション
出典:Scikit-learn公式「Classifier comparison」
※この例では縦横の2次元データでクラスタリングをしていますが、これは一次元データでも基本的に同じやり方を適用できますので、こういう手法もあるくらいのイメージで捉えてください。
備考
いずれにせよ、沢山手法があり、カッコよく表示させることもできますが、実際には「エクセルで作ったCSVファイル」を用意して、先のURLにある「見本のプログラムサンプル」にCSVファイルをほぼほぼポン付けで突っ込むだけで同じようなことがすぐにできます。
タグにPyTorchがつけられていますが、深層学習を使う場合であっても「教師なし学習」か「教師あり学習」かの考え方は全く同じですし、似たような捌き方をしているプログラムがすでにあれば「ほぼほぼポン付けで突っ込むだけ」で動かせるのも同じです。