@univprofblog1

大学教授

Ask @univprofblog1

Sort by:

LatestTop

Previous

10の回帰分析手法を一気に実行して結果を比較する!ダブルクロスバリデーションによる評価付き (Python言語)におきまして、以下のエラーがでます。対処法を教えていただけますでしょうか。 Input contains NaN, infinity or a value too large for dtype('float64') また、supportingfunctions.py において、def loadunsuperviseddatawithtestdata にあるdata_prediction.csvはどれを示しているのでしょうか。よろしくお願いします。

TEMOSANA’s Profile PhotoTS
ご質問いただき感謝致します。
エラー内容を拝見すると、データセット(data.csv, data_prediction1.csv, data_prediction2.csv) の中に、空欄のセルや文字を含むセルが入っていることが考えられます。data.csv, data_prediction1.csv, data_prediction2.csvをご確認いただけないでしょうか?
またご指摘の関数loadunsuperviseddatawithtestdataはまだ他のプログラムでは使用しておりません。将来的に使用する際はその説明を入れてプログラム・コードを発信致します。
よろしくお願い致します。
Liked by: 大学教授

数百の説明変数に対して、PLS, RF, Stepwise といった複数の変数選択法を適用しましたが、RFのR2だけ常に値が高くなるのはなぜでしょうか。また、RF以外の変数選択法のR2が0.2台と低い場合は、次にどのようなアプローチをして変数を選択していけばよいでしょうか。それとも、この結果を解して、現時点でランキングの高い変数から単純に選択していってもよいのでしょうか。よろしくお願いいたします。

ご質問ありがとうございます。
PLS, RF, Stepwiseにおいて、RFだけR2が高い理由について、RFだけ非線形の回帰分析手法であるため、と考えられます。RFでは、PLS, Stepwiseと比べて、より柔軟にフィッティングすることができます。しかし、R2が高いことと、新しいデータに対する予測性能が高いこととは全く別の話です。R2が高くても、モデルがモデル構築用データにオーバーフィッティングしていると、新しいデータに対する予測性能は低くなってしまいます。
http://univprof.com/archives/16-05-13-3200949.html
このURLの記事ではディープラーニングでのオーバーフィッティングの話をしていますが、RFでも同じ状況が起こりえます。
そのため、まずはクロスバリデーションなどでPLS, RF, Stepwizeの性能を比較してはどうでしょうか?
Liked by: 大学教授

初めまして、初心者です。部分的最小二乗法の進化する入門書などで学習しており、いつもお世話になっております。 [質問]説明変数を2値変数、目的変数を連続値であるデータには、どのような回帰分析モデルを適用できるのでしょうか。また複数選択肢がある場合には、どのようなケースにそれぞれの手法を適用するべきなのでしょうか。宜しくお願いします。

ご質問いただきありがとうございます。
説明変数が2値変数、目的変数が連続値であるときは、基本的にどの回帰分析手法でも適用できます。
よろしくお願い致します。
Liked by: 大学教授

Related users

python による KS アルゴリズムのコードを利用させていただき、学習サンプルを30取得できました。でてきた30の行の順序は、当初のcsvファイルの順番とは異なり、順番に規則性がみられませんでした。どのような順番で、1行目から csvファイルに出力されるのでしょうか。よろしくお願いいたします。

ご質問いただきありがとうございます。
またKSアルゴリズムのコードを利用していただき感謝致します。
順番は、KSアルゴリズムで選択された順番です。
今はサンプル数を30にして実行されていると思いますが、たとえばサンプル数を20にしたときには、今の30行の上から1~20行目までが選択されることになります。
Liked by: 大学教授

コピペだけで実用的かつ実践的なディープラーニングによる回帰分析を利用させてもらっている者です。①ディープラーニングを行う際は、多重共線性の疑いがある変数をはずすなど、変数選択を行った後に解析を実行するのでしょうか?②隠れノードに対する隠れ層の計算式を見たいのですが、どうすればよいでしょうか?③ 隠れ層と隠れノードの数に適正値はありますでしょうか?④ディープラーニングを行う上での注意点がありましたらご教授ください。

ご質問いただきありがとうございます。
①②③についてそれぞれ回答させていただきます。
① もちろん多重共線性のある変数の一方を削除してから解析することも問題ございませんが、経験的には、削除してもしなくてもモデルの精度はあまり変わりませんので、変数選択しなくても良いかと思います。
② まず、h2o.shutdown(prompt = FALSE) を削除もしくはテキスト化してください。
次に、実際にディープラーニングしている部分である
NetworkResult = ... からの11行の中に、export_weights_and_biases = TRUE を追記してください。
そうすれば、実行したあとに、h2o.weights(NetworkResult, matrix_id=1) や h2o.weights(NetworkResult, matrix_id=2) などで、1層目まで、2層目までなどの重みを確認可能です。
③ 残念ながら、隠れ層と隠れノードの数に適正値はございません。データセットによって異なります。試行錯誤的に適正値を見つけるのが一般的です。
以上です。よろしくお願い致します。

GAPLSによる変数選択について、以下の行でエラーがでます。エラー対応についてお願いいたします。 > GAPLSResults = genAlg(as.vector(Y), X, GAset, PLSset, seed = 10000) Error in genAlg(as.vector(Y), X, GAset, PLSset, seed = 10000) : Requested a population that is almost as large as the number of all possible subsets. The population size can be at m

ご質問ありがとうございます。
エラーの内容から推察すると、NumberOfChromosomesが大きすぎてすべての変数の組み合わせと同じくらいになってしまっているようです。NumberOfChromosomesの値を小さくして実行されてはいかがでしょうか?
よろしくお願い致します。
Liked by: Hirata 大学教授

Random Forestを用いてテキストのクラス分けを行っているのですが、クラス分けできたものと、クラス分けできなかったものの違いを見つけるには、Random Forestのどのような部分を見れば良いのでしょうか。 よろしくお願いいたします。

ご質問ありがとうございます。
Random forestはアンサンブル学習を活用した回帰分析手法であり、random forestの一つ一つの決定木は解釈できるのですが、その集合体となるとそれを解釈することは困難です。
クラス分けできたものとできなかったものの違いを見つけるためには、解釈が可能である決定木を実施してはいかがでしょうか?

こんにちは。高精度・解釈可能モデルを利用させてもらっている統計初心者です。重回帰分析を実行する際、説明変数の一つを晴れなら1、くもりなら2、雨なら3というように設定したら解釈できない回帰式ができたため、説明変数を三個に分け、晴れなら説明変数A=1、B=0、C=0。くもりならA=0、B=1、C=0。といった風に説明変数を分けて二値化していました。高精度・解釈可能モデルでは、二値化することで何か不都合が生じますでしょうか。また、説明変数の一つを晴れなら1、くもりなら2、雨なら3というように設定してもよろしいのでしょうか。ご教授ください。

ご質問いただき感謝致します。
>説明変数を三個に分け、晴れなら説明変数A=1、B=0、C=0。くもりならA=0、B=1、C=0。といった風に説明変数を分けて二値化していました。高精度・解釈可能モデルでは、二値化することで何か不都合が生じますでしょうか。
こちらの方法が正しいです。特に不都合もありません。
> 説明変数の一つを晴れなら1、くもりなら2、雨なら3というように設定してもよろしいのでしょうか。
こちらの方法は望ましくありません。たとえば回帰式でこの変数に重みが割り当てられることになりますが、1, 2, 3という値自体に意味がないため重みも意味のないものになってしまいます。詳しくは
http://univprof.com/archives/16-05-16-3260315.html
をご覧ください。
Liked by: Hirata 大学教授

いつもお世話になっております。先日のS-plotに関して、もうひとつお聞きしてもよろしいでしょうか。 Rを使用した場合、横軸がcov(主成分スコアti,説明変数X)もしくはローディング、縦軸がcor(ti,X)で良いということでしたが、これでプロットすると、原点を通る直線上に全てプロットされてしまうみたいなのですが、これで良いのでしょうか?文献等では、ばらついているように見えるのですが…。corは、ピアソンではなくスペアマンを使った方が良いのでしょうか? 何度も申し訳ございませんが、よろしくお願いいたします。

ご質問ありがとうございます。
Xについて、オートスケーリング前後で結果が変わると思います。このあたりはいかがでしょうか。
相関係数はピアソンの相関係数でOKです。
よろしくお願い致します。

解析初心者です。LOOCVのAdj-R2とRMSEの算出方法がわかりません。JMPを用いてステップワイズ法により重回帰分析を行いました。その際Adj-R2とRMSEは算出されるのですが、LOOCVのAdj-R2とRMSEの算出ができません。まず、LOOCVについてもあやふやなのですが、回帰式の妥当性を検証する方法とありました。しかし、テストデータとトレーニングデータが変わるため、回帰式も変わります。だとすると、回帰式の妥当性よりも方法論(の妥当性?)だと思うのですが、、、このあたりをわかりやすく教えていただけると幸いです。よろしくお願いいたします。

ご質問ありがとうございます。
> テストデータとトレーニングデータが変わるため、回帰式も変わります。だとすると、回帰式の妥当性よりも方法論(の妥当性?)だと思うのですが
おっしゃる通りと思います。そもそも、Adj-R2もRMSEも、LOOCVをしたときのr2もRMSEも、回帰モデルを評価する指標です。そして、それぞれ目的が異なります。
Adj-R2とRMSEは、すべてのサンプルを用いて作られた回帰モデルを評価する指標のため、回帰モデルの妥当性、を評価することになります。
一方、LOOCVをしたときのr2とRMSEは、一部のサンプルのみを用いて回帰モデルを作り、それ以外のサンプルの推定結果を用いて計算されるため、同じ方法論で回帰モデルを作ったときの外部データに対する推定性能、を評価することになります。
それぞれ、目的に応じて使い分けるとよいと思います。
Liked by: Hirata 大学教授

いつもお世話になっております。 先日、opls-daに関して質問させていただきました。分かりやすいご回答ありがとうございました。S-plotの横軸は、ローディングかと思っていたのですが、共分散とは違うのでしょうか? Rを使用した場合、横軸がcov(主成分スコアti,説明変数X)、縦軸がcor(ti,X)ということで良いしょうか? 重ね重ね申し訳ありません、よろしくお願いいたします。

再度のご質問ありがとうございます。
> S-plotの横軸は、ローディングかと思っていたのですが、
おっしゃる通りです。基本的にXをオートスケーリングしてあれば、tiとXとの共分散とローディングとは等しくなります。説明不足で申し訳ございませんでした。
> Rを使用した場合、横軸がcov(主成分スコアti,説明変数X)、縦軸がcor(ti,X)ということで良いしょうか?
はい、こちらもおっしゃる通りです。
よろしくお願い致します。
Liked by: Hirata 大学教授

いつも大変お世話になっております! PCAとPLS-DAの違いについて、ほとんど無知の人に簡単な例えで説明したいのですが、以下の説明は概念として正しいでしょうか? 両方ともPC1×PC2のスコアプロットのことを指しています。 PCA(PC1×PC2)とは、多次元のデータ空間の中に入って、データ全体が最もよく見える位置(情報量が多い)から写真を撮ったもの。 PLS-DA(PC1×PC2)とは、A群、B群という2つの群に分類したサンプル群を、最も2群が大きく分かれて見える位置から写真を撮ったもの。 もし違っていましたら、ご指摘いただけると幸いです。 よろしくお願いいたします。

takamiyag’s Profile PhotoTakashi Miyagawa
ご質問いただき感謝致します。
お返事が遅くなりまして申し訳ございません。拝読致しました。
上の説明は、初学者にも分かりやすい説明と思います。表現としても間違っておりません。
よろしくお願い致します。
Liked by: Hirata 大学教授

はじめまして、こんにちは。自己組織化マップのコード販売についてお聞きしたいのですが、この自己組織化マップの初期値はランダムでしょうか?主成分分析で初期値を決めてバッチ処理をする、いわゆるバッチ型SOMに変更は可能でしょうか? また学習済みのマップに新たに個体の変数を投入して継続学習させる事は出来ますか? それと、各個体のマップにおける座標は出力出来ますか? 長々と申し訳ありませんが購入する上で気になったので質問させて頂きました。

ご質問いただきありがとうございます。また本プログラムに興味を持っていただき感謝致します。
> この自己組織化マップの初期値はランダムでしょうか?
はい、おっしゃる通りです。
> 主成分分析で初期値を決めてバッチ処理をする、いわゆるバッチ型SOMに変更は可能でしょうか?
このような拡張は難しい状況でございます。
> 学習済みのマップに新たに個体の変数を投入して継続学習させる事は出来ますか?
こちらのような学習方法への対応も困難な状況です。再度すべてのデータセットで再学習することになってしまいます。
>各個体のマップにおける座標は出力出来ますか?
はい、こちらは可能です。
ご期待に添えない部分もあり申し訳ございませんがご検討のほどよろしくお願い致します。
Liked by: Hirata 大学教授

いつもHPの記事を大変参考にさせていただいております。 最近、PLS-DAを使って解析しようしていたのですが、調べていて改良されたOPLS-DAという手法があると知りました。どのような違いがあるのかご存知でしたら、ご教示いただけますか?あと、もしご存知でしたらOPLS-DAの結果で出てくるS-Plotはどのようにして求めれば良いのか、教えていただけるでしょうか? お忙しいところ大変申し訳ありませんが、よろしくお願いいたします。

ご質問いただきありがとうございます。
PLS-DAとOPLS-DAとの違いは、PLSとOPLSとの違いから来ています。OPLSでは、目的変数yとの相関がない成分をXから除くことで、よりPLSモデルを解釈しやすいようにしている手法です。
S-plotの求め方について。i番目の主成分をti、説明変数をXとすると、横軸をtiとXとの共分散(ベクトル)、縦軸をtiとXとの相関係数(ベクトル)としてものでございます。
ご参考になれば幸いです。
Liked by: Hirata 大学教授

はじめまして、こんにちは。 いつも大変有意義な記事を公開して頂きありがとうございます。 大学教授様が公開してされているプログラムについて質問があります。 「たくさんのニクラス分類を一気に行い、ダブルクロスバリデーションで評価するプログラム」についてなのですが、こちらはダブルクロスバリデーションの試行回数は任意で決められるのでしょうか? こちらのプログラムに興味があり、質問させて頂きました。

-i.jmdA
ご質問ありがとうございます。また二クラス分類のプログラムに興味をもっていただき感謝申し上げます。
今回のプログラムでは、一度プログラムを実行したときのダブルクロスバリデーションの試行回数は"1回のみ"となっております。ただ乱数を変えることでクロスバリデーションのときにどのようにサンプルを分割するかを変えることができますので、プログラムを複数回実行することで複数回ダブルクロスバリデーションを実行するのと同じことになります。
つまり、プログラムの実行回数でダブルクロスバリデーションの試行回数を任意に決めることができます。
今後ともよろしくお願い致します。
Liked by: Hirata 大学教授

「10の回帰分析手法を一気に実行して結果を比較する!ダブルクロスバリデーションによる評価付き」の プログラムに使用するモデル構築用データのcsvファイルは、多重共線性の疑いがある説明変数を除いた変数選択後のデータを用いる必要があるのでしょうか。また、説明変数・目的変数は、オートスケーリングした後の数値をcsvに入力しておく必要があるのでしょうか。統計解析初心者であるため、稚拙な質問になりますが、よろしくお願いいたします。 オートスケーリングしたデータを用いた際の新しいデータの予測方法(元のスケールに戻す方法等)等ブログの内容は、統計解析初心者には大変参考になっています。情報発信感謝いたします

もちろん、多重共線性の疑いがある説明変数を除いた変数選択後のほうが望ましいですが、信頼できる方法で選択することが難しいのであれば、そのままでも構いません。PLSなど多重共線性に対処可能な回帰分析手法も搭載されているためです。ちなみに、下のように多重共線性のある変数を自動的に削除する方法するプログラムもあります。
https://spike.cc/shop/univprof/products/tPeynNQs
https://spike.cc/shop/univprof/products/62vLdPOg
また必要に応じてプログラム内でオートスケーリングしていますので、事前にオートスケーリングする必要はありません。
ブログの内容が参考になっているようで幸いでございます。
今後ともご愛好のほどよろしくお願い致します。
Liked by: Hirata 大学教授

統計初心者です。ダブルクロスバリデーション(笑)の記事でダブルクロスバリデーションを複数回繰り返すことで (たとえば100回)、r2DCV・RMSEDCV・正解率DCVのばらつきを検討する必要があるとあります。この繰り返し作業は、同記事内で紹介されているクロスバリデーションのデメリットにあたる”r2CV・RMSECV・正解率CVがよくなるようなモデルを選んでる”という内容に当らないのでしょうか。また、過去のダブルクロスバリデーションに関する質問回答での100個のデータセットの内検証用の20のデータセットは100回の繰り返し作業中は、検証用データセットに固定され、構築用にはならないのでしょうか。

ご質問いただき感謝致します。回答が遅くなり申し訳ありません。
ダブルクロスバリデーションは各回帰分析手法を評価するための方法です。ダブルクロスバリデーションを複数回(たとえば100回)行う場合も同様です。回帰モデルを評価するのではなく、手法を評価します。もう少し具体的に書くと、与えられたデータセットに対する手法の評価です。
そのため、たとえば100回 r2DCV・RMSEDCV・正解率DCV を計算して、100の中でもっとも値が良いモデルを選ぶ、といったことはしません。あくまで、それらのばらつきをみます。たとえば、PLSで100回行った場合より、SVRで100回行った場合のほうがばらつきが小さい、ということでしたら、そのデータセットでは、SVRの方が回帰分析手法として安定している、といえます。このようにPLSやSVRなどの手法を評価するわけです。
また、クロスバリデーションを繰り返すとき、たとえば5-foldクロスバリデーションとすると、どのようにサンプルを5分割するかは繰り返しごとに変わります。シャッフルされるわけです。このため、r2DCV・RMSEDCV・正解率DCVにばらつきが出るわけです。

グリッドサーチでパラメーターを振り、複数の標準化された5つの目的変数(仮にA,Bとおきますが、本当は5つあります)を得ました。 最適なパラメーターとして目的変数が最高になるものを選びたいのですが、 A:100点、B:0点、合計100点というパラメーターよりも A:45点、B45点、合計90点というものを選ぶ方法を考えています。 平均が大きく分散が小さいものを選べばいいということになると思うのですが、良い指標がありますか?単に割り算してもいいのでしょうか。よろしくお願いします。

Y.Yamazaki
ご質問いただきありがとうございます。
2つの方向性があると思います。
一つは、(標準化した後に)すべての目的変数を縦につなげて、一つの決定係数(r2)やRoot Mean Squared Error(RMSE)を計算することです。グリッドサーチでパラメータの値を振りながら、複数の(目的変数の数の)モデルについて例えばクロスバリデーションで評価すると思いますが、そのクロスバリデーション後の推定値をすべて縦につなげて、r2やRMSEを計算し、r2が最も高かったりRMSEが最も低かったりするパラメータの値を使います。目的変数がすべての標準化されているため、目的変数ごとに満遍なく良好な結果が得られる可能性があります。
もう一つは、Y.Yamazakiさんがおっしゃるように、分散を考慮する方法です。ただ、”一つの”指標に落とし込むことは難しいです。分散を小さくしたり、割り算した値が1に近くなったりするようなパラメータの値を選ぶことが考えられますが、すべての得点が低くなってしまう可能性があります。たとえば、A:10点、B:10点のような状況です。ばらつきは小さい(分散0)ですが全体の結果はよくありません。なので、合計と分散との2つで攻めるのがよいと思います。パラメータの値ごとに例えばクロスバリデーションを行い、合計の値と分散の値をそれぞれ保存しておきます。最後に、合計と分散とでプロットを描き、その中で合計点が大きく分散の小さなパラメータの値を選びます。
以上です。目的変数が5つもあるとすべてで良好な結果を得ることは難しくなるかと思いますが、良いパラメータの値を選択できることを祈っております。
またご不明点等ございましたら遠慮なくおっしゃってください。
Liked by: 大学教授

教育大学の教員になりたいのですが、まず大学院を出て大学に就職し、助手から始まると聞きました。競争率等は高いのでしょうか、、、人気の職業だったり、、、

ご質問ありがとうございます。回答が遅くなり申し訳ありません。
基本的に、大学で4年かけて学士を取り、大学院の修士課程で2年かけて修士を取り、大学院の博士課程で3年かけて博士を取ったところが教員になるためのスタートラインです(まれに博士なしで教員になるかたもいますが、レアケースとお考えください)。スタートラインに立ったら(実際には博士課程の途中で博士を取れる見込みになったら)、就職先を探すことになります。教授などの知り合いのコネやJREC-IN Portal( https://jrecin.jst.go.jp/seek/SeekTop )を使って探します。
最初になれるは、一般的にポスドクか助教(昔は助手と呼ばれていました)です。いわゆる"教員"という、教育+研究をするのは助教です。ポスドクは基本的に研究のみになります。うまく助教のポジションの空いているところが見つかり、そこに就職できればラッキーですが、一度以上ポスドクを経験してから助教になる方も多いです。
助教になる競争率は、研究分野によって異なりますが、一般的に言って高いです。そのため、助教になりたいときは、早い段階から研究の実績を積むようにするのが良いです。
Liked by: 大学教授

Leave-One-Out CVについての質問です。全部でN個データがあり、(N/2)個をモデル構築用データD1、(N/2)個をモデル検証用データD2とします。モデル構築はD1のみを使用すると思うのですが、LOOCVを行う際にはD1+D2を使用するのでしょうか?あるいはD1の中の1個を検証用データ、(N/2-1)個を構築用データとし、すべてが1度検証用データとなるまで繰り返すのですか?

ご質問ありがとうございます。
検証方法は言葉の使い方など少しややこしいですよね。
結論から申しますと、「D1の中の1個を検証用データ、(N/2-1)個を構築用データとし、すべてが1度検証用データとなるまで繰り返す」ということになります。
D1とD2のように、あらかじめモデル構築用データとモデル検証用データに分けてモデルの検証を行うことを外部バリデーション(external validation)と呼びます。一方で、D1のようなモデル構築用データの中で、1つを除いたりいくつか分割した後の1ブロックを除いたりして、モデル構築と除いたデータを用いた検証とを繰り返すことが、内部バリデーション、つまりCross Validation (CV) です。
最終的には外部バリデーションでモデルの検証を行うのが一般的です。
Liked by: 大学教授 yama

PLSではどんなときにうまくいって、どんなときにうまくいきませんか?

PLSでは、説明変数の間に強い相関関係があったとしてもそれを少数の互いに無相関な成分で表現してから、目的変数との間で回帰を行います。よって、説明変数の間に相関関係があった場合でもうまくいきます。
しかし、説明変数の中に目的変数と関係のない変数があった場合、PLSではそのような変数でも多少なり目的変数との間の回帰のときに影響を与えてしまうため精度が悪くなる危険があります。
またPLSでは説明変数と目的変数との間の非線形を表現できません。
なので、不要な変数が説明変数の中に含まれるときや、説明変数と目的変数との間の関係が非線形のときにはPLSはうまくいきません。
Liked by: 大学教授

データセットに対する前処理として、オートスケーリングが基本になっています。 必ずオートスケーリングを行わなければならないのでしょうか。

ご質問ありがとうございます。
オートスケーリングは、センタリングとスケーリングに分けられます。
まずセンタリングは必ず行うようにしてください。
もちろんセンタリングを行わなくてもよい手法もありますが、行っても何も悪いことはありません。むしろ、PCAはPLSなどセンタリングを行わなければならない手法もありますので、毎回センタリングを行うのが無難です。
スケーリングについても基本的に行うのが普通です。
たとえば温度や圧力など単位が違うものを同じように扱われるのに抵抗があることがあるためです。逆にいえば、そのような抵抗がないときはスケーリングについては行わなくてかまいません。
たとえば主成分分析におけるオートスケーリングについてはこちらをご覧ください。
http://univprofblog.blogspot.jp/2016/05/blog-post_33.html
Liked by: 大学教授

ある疾患の発生を、数種の臨床検査値・臨床所見から推定するモデルを検討するため、サンプルをモデル構築用、検証用に分ける際の方法についてご教示ください。 この疾患が希少疾患であるため、全体における発症例数が少なく、 サンプル全体からランダムにモデル構築用、検証用に分けた場合には、得られたモデル構築用データによっては非常に不安定なモデルとなる可能性があるとします。 このとき、疾患発症例、疾患非発症例からそれぞれランダムにモデル構築用、検証用とを抽出してデータセットを作成する、という方法で解析を行った場合、その解析結果には何かバイアスが生じると考えられますでしょうか。

ご質問ありがとうございます。
サンプル数が少ない中でモデル構築用サンプルとモデル検証用サンプルとに分けることは悩ましいですよね。お察し致します。
サンプル数が多いときはランダムにモデル構築用、検証用とに分けるので問題ないのですが、サンプル数が少ないときはランダムに分けるとそれぞれが似たサンプルだけになってしまい、その結果バイアスが生じる可能性があります。
対応策の一つは、ランダムにモデル構築用、検証用とに分けた検討を、乱数を変えて複数回(100回とか1000回とか)行うことです。それぞれのサンプルについて、モデル検証用に選ばれたときの複数個の推定値の平均値を代表的な推定値とします。
もう一つの対応策はこちらで紹介したKennard-Stone (KS) アルゴリズムを用いることです。
http://univprof.com/archives/16-06-22-4145563.html
これによってまんべんなくモデル構築用サンプルを選ぶことができます。
参考になれば幸いです。

クロスバリデーション(笑)の記事について質問なのですが、一般的なK分割クロスバリデーションにおいても、K分割したサンプルそれぞれについての推定を行ってその平均値を算出していませんか? つまり、大学教授さんが言っている「ダブルクロスバリデーション(クロスモデルバリデーション)」というのは一般的なクロスバリデーションのことだと思うのですが、いかがでしょうか。 何卒不勉強なもので、自分には理解不足があると思いますから、どうかお手柔らかにお教えいただけると幸いです。

ご質問ありがとうございます。
「一般的なクロスバリデーション」と「ダブルクロスバリデーション(クロスモデルバリデーション)」とは異なります。少しややこしいところですので、言葉の定義から丁寧に回答致します。
まず「クロスバリデーション」です。これは、一つのデータセットをモデル構築用データセットとモデル検証用データセットに分け、モデル構築用データセットを用いてモデルを構築してモデル検証用データセットの推定を行う、ということを繰り返し行うことです。つまり、一つのサンプルは、モデル構築用データセットになるときもあれば、モデル検証用データセットになることもあります。
次に「K分割クロスバリデーション」です。これはクロスバリデーションの一つです。データセットをK個のグループに分割し、(K-1)個のグループをモデル構築用データセット、1個のグループをモデル検証用データセットにします。モデル構築用データセットを用いてモデルを構築してモデル検証用データセットの推定を行います。これを、K個のグループそれぞれが一度モデル検証用データセットになるまで、つまりK回繰り返すわけです。
最後に「ダブルクロスバリデーション(クロスモデルバリデーション)」です。これは、「K分割クロスバリデーション」が入れ子構造になっているとお考えください。つまり、データセットをK個のグループに分割し、(K-1)個のグループをモデル構築用データセット、1個のグループをモデル検証用データセットにしたあとに、その(K-1)個のグループ(モデル構築用データセット)をK個のグループに分割します。たとえばK=5で100サンプルのデータセットであるとすると、80サンプルのモデル構築用データセットと20個のモデル検証用データセットに分けたあとに、80サンプルを16サンプル × 5個のグループに分けます。
そして内側の「K分割クロスバリデーション」(サンプル数が少ない方、例でいうと64個のモデル構築用データセット・16個のモデル検証用データセットに分けた方)において、PLSの成分数・LASSOのλなどのパラメータを最適化します。 外側の「K分割クロスバリデーション」(サンプル数が多い方、例でいうと80個のモデル構築用データセット・20個のモデル検証用データセットに分けた方)では、すでに内側のクロスバリデーションでパラメータが最適化されていますので、最適化されたパラメータを使ったモデルでモデル検証用データの推定だけ行います。
参考になれば幸いです。
蛇足ですが、ご質問のようにK分割クロスバリデーションがややこしい要因として、K分割クロスバリデーションを行った後の統計量の出し方が一通りではないことがあげられます。このあたりのことはあとでブログにも載せようと思います。

View more

Next

Language: English