Medical Image Classifica​tionにおけるcr​oss-valida​tionの使い方につ​きまして

1 Ansicht (letzte 30 Tage)
ssk
ssk am 11 Feb. 2019
Kommentiert: ssk am 14 Feb. 2019
プログラミング初心者です。
以下のディレクトリ構造に基づき、cross-validationのコードを書きたいと思っていますが、
helpを見てもつまづいてしまいましてご質問いたします。
cross-validationは10-foldを希望しております。
どうぞよろしくお願いいたします。
main
-- a
-- image.dcm(10 dicom file)
 -- b
  -- image.dcm(10 dicom file)
 -- c
  -- image.dcm(10 dicom file)
-- d
  -- image.dcm(10 dicom file)
%path = current directory
currentdirectory = pwd;
categories = {'a', 'b', 'c','d'};
%Create an ImageDatastore to help you manage the data.
imds = imageDatastore(fullfile(currentdirectory, categories),'IncludeSubfolders',true,'FileExtensions','.dcm','LabelSource', 'foldernames','ReadFcn',@dicomread);
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.5,'randomize');
おそらく下記コードをcross-validationに変更するかと思うのですが、うまくできません。。
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.5,'randomize');

Akzeptierte Antwort

ryota suzuki
ryota suzuki am 13 Feb. 2019
Bearbeitet: ryota suzuki am 13 Feb. 2019
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.5,'randomize');
では変数imdsに集約されたデータのうち,50% をimdsTrainに,残りの50% をimdsValidationにランダムに分割させています.
変数名から考えるに,imdsTrainは学習用,imdsValidationは検証用のデータではないでしょうか.
機械学習において,交差検証(Cross-validation)とは,学習前に検証用のデータ(Validation Data)を抜きとり,
学習とは独立させることで過学習を防ぐ取り組みです.
学習用データ(Training Data)を使って変数の最適化計算を行い,その結果を用いて検証用データで何度もテストを行います.
現状のスクリプトは,データを読み取り,学習用と検証用に分けたところまでであり,
交差検証には進んでいません.
このあとに学習させるコマンドを追加させる必要があります.
10-foldという単語を見るに,K-fold Cross Validationを検討中でしょうか.
Statistics and Machine Learning Toolboxを導入すれば,一発でできそうな分割コマンドがありましたが(データの交差検証分割を作成),splitEachLabelでも可能かと思います.
[imds01,imds02,imds03,imds04,imds05,imds06,imds07,imds08,imds09,imds10]...
= splitEachLabel(imds,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,'randomize');
でデータを10分割し,適宜,
imdsTrain = imageDatastore(cat(1,imds01.Files,imds02.Files, ... ,imds09.Files))
imdsValidation = imds10
という具合に結合させて学習にまわす動作を,組み合わせを変えながら10回繰り返すことでできるかと思います.
  6 Kommentare
ryota suzuki
ryota suzuki am 14 Feb. 2019
Statistics and Machine Learning Toolboxについては私は触ったことがないので結合の仕方はわからないです.自分の環境下で試せないので確かなことは言えないです.申し訳ありません.
ただ,cvpartitionのドキュメンテーションページにはK-foldの計算例が記載されているようです.
ssk
ssk am 14 Feb. 2019
何度もご質問してしまいご迷惑おかけしました。ここから先は自身で解決します。ご示唆を頂きまして本当にありがとうございました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu サポート ベクター マシン回帰 finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!