pythonを用いた画像分類 t-SNEによる次元圧縮の適応 果物画像編

python活用 python

画像分類タスクの精度があまり良くないかもしれません。
何かできることありませんか?

このような疑問にお答えします。

次元圧縮をしてみましょう。次元圧縮とは、データの次元数を圧縮することです。

機械学習において、データを扱うことを考えたとき、多くの場合、そのデータは高次元となります。
このとき、次元圧縮をすることで、そのデータが持つ特徴を保持したまま、それより少ない次元の特徴へ落とし込むことができます。

下記のページを参考にさせていただきました。

  • https://blog.albert2005.co.jp/2015/12/02/tsne/
  • https://qiita.com/stfate/items/8988d01aad9596f9d586
  • https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html

t-SNEについて

次元圧縮の方法は、様々提案されていますが、今回はt-SNE(t-distributed Stochastic Neighbor Embedding)を使用します。

t-SNEとは、高次元データの可視化のため2次元または3次元の低次元空間へ埋め込みに最適な非線形次元削減手法である。具体的には、高次元のデータ集合を2次元または3次元へ配置する際に、高い確率で類似した集合が近傍に、異なる集合が遠方となるように対応付ける。 (wikipediaより抜粋)

t-SNEによる次元圧縮方法については、以下のページがわかりやすいように思います。

  • https://blog.albert2005.co.jp/2015/12/02/tsne/
  • https://qiita.com/stfate/items/8988d01aad9596f9d586

Pythonライブラリsklearnのt-SNEを使用します。
ライブラリの仕様は、下記になります。

  • https://scikit-learn.org/stable/modules/generated/sklearn.manifold.TSNE.html

画像データの分類手法、およびデータについては下記の記事を参照ください。

ソースコードは、以下になります。

出力結果

各画像の次元数が2となるように次元を圧縮しています。

このように、sklearnを用いることで、様々なデータに対して機械学習を適用できますし、精度を高めるために、分類手法を変更することやパラメータの調整、圧縮数、学習回数等を簡単に試すことができます。是非試してみてはいかがでしょうか。

タイトルとURLをコピーしました