画像判別の交差検証について
13 views (last 30 days)
Show older comments
画像判別の精度の検証で必要なk分割交差検証を行いたいのですが、やり方が分かりません。
画像は二通りでそれぞれフォルダに格納しています。
ここからMATLABに取り入れて、k分割交差検証を行いたいので、そのやり方を教えて頂けますでしょうか。
よろしくお願いします。
Accepted Answer
Hiro Yoshino
on 8 Jan 2020
ディープラーニングの場合はあまりやることは有りません。
基本的にデータ数が少ない場合に過学習を抑える目的でやります。DLはデータがそもそも大量に必要なのであまり必要がないのと、確率的勾配法アルゴリズムは言ってみれば、毎回違うデータで学習をやっているようなモノなので過学習に対して有効ということもあると思います。
validationデータを分けておいて、評価することは出来ますし、します:
ディープではない場合は、cvpartionという関数などを使うと簡単にできます。
https://jp.mathworks.com/help/stats/cvpartition.html?searchHighlight=cvpartition&s_tid=doc_srchtitle
Classification Learner AppだとGUIでやってくれます。
More Answers (3)
Hiro Yoshino
on 9 Jan 2020
画像であろうが、あやめデータであろうが、全て「数字」を扱います。
画像だから特別な扱いがあるわけでは有りません。そのあたりの理解は大丈夫ですか?
画像をあやめデータと同じデータフォーマットに揃えてあげれば、cvpartitionでできます。もっと言うと、分割交差検証を教科書通りに自分でコードを書いても良いです。
因みに、あやめデータはテーブル状になったデータだと思います。画像を同じように変換してあげれば良いかなと。普通は特徴抽出等をその前に行ってデータを変換してからテーブルデータにします。
ディープラーニングは特徴抽出機能がネットワーク中に有るので、特徴抽出が不要であることと、CNNは画像のピクセル位置の情報(x,y,z)も活かしてくれるので文字通り、ピクセルの値を画像の並びのまま識別器に与えます。
Hiro Yoshino
on 9 Jan 2020
いくつか誤解があるようなので、ご助言差し上げます。
(1) まず、画像も数字データです!行列的な形で数字が入っているので、それをベクトルっぽくすればあやめデータのようになります。まず、そのあたりのデータの感じをご自身の目で見て確認すると良いかなと思います。
それとですが、少し基礎的な理解が欠けているかなと思います。MathWorksのonrampのトレーニングコース(無料のモノも有ります)を受講されてはどうかなと?https://matlabacademy.mathworks.com/
基礎をスキップすると、毎回毎回「やり方教えて」になってしまいますので。
機械学習、ディープラーニングあたりをご受講下さい。ディープラーニングは日本語化されていたと思います。
(2) cvpartitionに読み込むというのは間違いで、cvpartitionの引数は「データ数」で、
戻ってくるのは、k-foldになったデータのインデックスです。→意味が分からない場合は、cross-validationの勉強を軽くされると良いかなと https://www.mathworks.com/discovery/cross-validation.html?s_tid=srchtitle
(3) 画像をベクトルに変換 こちらをご覧ください:
再度ですが、MATLAB onramp (無料) をご受講下さい!!基礎をご確認下さい。
2 Comments
Hiro Yoshino
on 9 Jan 2020
いえいえ。
忙しい時には直ぐ動けば良いって感じになりがちですが、
基礎をやっておくと、手戻りが少なくて、結果速くことが進むことが多いかなと。
documentationを見ながら勉強してみてください。
See Also
Categories
Find more on Pattern Recognition and Classification in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!