Ask @univprofblog1:

大学教授
Top answers

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

もちろん、多重共線性の疑いがある説明変数を除いた変数選択後のほうが望ましいですが、信頼できる方法で選択することが難しいのであれば、そのままでも構いません。PLSなど多重共線性に対処可能な回帰分析手法も搭載されているためです。ちなみに、下のように多重共線性のある変数を自動的に削除する方法するプログラムもあります。
https://spike.cc/shop/univprof/products/tPeynNQs
https://spike.cc/shop/univprof/products/62vLdPOg

また必要に応じてプログラム内でオートスケーリングしていますので、事前にオートスケーリングする必要はありません。
ブログの内容が参考になっているようで幸いでございます。
今後ともご愛好のほどよろしくお願い致します。

View more

統計初心者です。ダブルクロスバリデーション(笑)の記事でダブルクロスバリデーションを複数回繰り返すことで (たとえば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にばらつきが出るわけです。

View more

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) です。
最終的には外部バリデーションでモデルの検証を行うのが一般的です。

View more

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

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

View more

クロスバリデーション(笑)の記事について質問なのですが、一般的な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

グリッドサーチでパラメーターを振り、複数の標準化された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つもあるとすべてで良好な結果を得ることは難しくなるかと思いますが、良いパラメータの値を選択できることを祈っております。
またご不明点等ございましたら遠慮なくおっしゃってください。

View more

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

ご質問ありがとうございます。回答が遅くなり申し訳ありません。

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

View more

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

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

View more

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

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

View more

外れ値を検出した後はどうすればよいのでしょうか?

ご質問ありがとうございます。
外れ値を検出したあとは、その外れ値を欠損値とみなしてデータ分析・解析します。
欠損値を含むデータセットの分析・解析のし方はこちらをご覧ください。
http://univprof.blog.jp/archives/16-05-19-3326292.html

View more

主成分分析 (principal component analysis) でもpartial least squares (PLS) でも主成分の間の関係は無相間です。これらの違いは何でしょうか?

ご質問ありがとうございます。
おっしゃる通り、PCAでもPLSでもそれぞれすべての主成分間は無相関です。PCAとPLSとの違いは、まずPCAは説明変数のみで実行できるのに対し、PLSでは説明変数に加えて目的変数も必要です。そして、PCAでは主成分の分散が大きくなるように主成分を抽出するのに対し、PLSでは主成分と目的変数との共分散が大きくなるように主成分を抽出します。
このようにPCAでは説明変数の情報量をなるべく大きく表現できる主成分を得ることが目的であり、PLSでは目的変数の情報量をなるべく大きく表現できる主成分を得ることが目的であり、PCAとPLSとでは目的が異なります。

View more

主成分分析を行うと、主成分間が無相間になりますが、無相間になるメリットは何でしょうか?

ご質問ありがとうございます。
メリットの一つは、より多くの情報を少ない成分数で表現できるということです。ある変数と別の変数とが相関しているとは、それらの二つの変数のもつ情報が重複していることを意味しますす。重複している情報は、どちらか一方で構わないはずですので、もったいないです。主成分分析では、主成分同士が無相間ですので、上のような情報の重複は存在しません。よって、より少ない成分で多くの情報を表現できます。
もう一つのメリットは、主成分分析の後に回帰分析やクラス分類を行う際に、解析しやすいということです。特に入力変数間に強い相関があると、例えば回帰分析の際に、回帰係数の値の絶対値が大きくなる傾向があり、適切なモデルとはいえません。事前に主成分分析を行うことで入力変数が無相関になると、そのような心配なく解析できます。

View more

前処理に関する質問で恐縮ですが… 1、データセットが工学的な実験の結果です。日によって少しずつ結果が変動するので毎回同じ標準の条件(説明変数)で実験して結果(目的変数)を見て、その後異なる条件で実験しています。例えば10日間x10回(異なる条件)+1回(標準の条件)実験した場合、この100回の結果はどのように規格化する方法がありますか?今は最初の標準結果に揃うように割り算しています。分散には正規性がありそうです。 2、データセットに説明変数が同じですが、やや異なる結果のデータがあります。どのように処理するのが良いでしょうか、平均でしょうか。 単純ですが資料が見つかりません…何卒お願いします

ご質問ありがとうございます。
詳細について理解していない中で恐縮ですが回答させていただきます。
1.
基本的には、すべてのサンプルを合わせて変数ごとにオートスケーリング
http://univprof.com/archives/16-07-18-4803187.html
が良いと思います。
ただ、日によって少しずつ結果が変わるとのことですが、条件が全く同じ(説明変数の値が全く同じ)でも、目的変数の値が日によって変わってしまうということでしょうか?
もしその場合は、オートスケーリングに少し工夫をしたほうが良いです。一つは、全体の平均ではなく標準の条件の値で引き、全体の標準偏差ではなく日ごとの標準偏差で割る、ということです。もしくは、すでにやられているように最初の標準結果に揃うように割ってから、全体のオートスケーリングをすることもありえます。

2.
この状況は、説明変数の値が同じにもかかわらず目的変数の値が異なるということでしょうか?
その場合、根本的な解決をするには、(既存の説明変数の値が同じで)目的変数の異なる値を説明できるような新たな説明変数を追加しなければなりません(たとえば室内温度とか湿度とか?)。新たな説明変数を追加できない場合は、同じ説明変数の値ごとに目的変数の値の平均値を代表値とすることになります。

View more

カーネル主成分分析の後に、主成分ベクトルの軸の意味づけを行うにはどうしたらよいでしょうか?

非線形モデルの解釈は難しいのが現状です。
線形の主成分分析では、各ローディングベクトルが各変数の重みのようなものですので、ローディングベクトルを見ることで解釈可能ですが、カーネル主成分分析は各ローディングベクトルが各サンプルの重みのようなものです。
そこで、一つの解釈の仕方として、ローディングベクトルの絶対値の大きいいくつかサンプルを見て、そのサンプルが特異的に値の大きい(もしくは負に大きい)変数を見るのはいかがでしょうか?
その変数が対象の主成分軸に効いていることになります。

View more

About 大学教授:

データ解析周辺、日頃のできごとからデータ解析につながる種のようなもの、広く研究・教育などについて書いています。

#データ分析 #データ解析 #ビッグデータ #機械学習 #データマイニング #教育 #大学 #子育て