@univprofblog1

大学教授

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

ご質問ありがとうございます。
詳細について理解していない中で恐縮ですが回答させていただきます。
1.
基本的には、すべてのサンプルを合わせて変数ごとにオートスケーリング
http://univprof.com/archives/16-07-18-4803187.html
が良いと思います。
ただ、日によって少しずつ結果が変わるとのことですが、条件が全く同じ(説明変数の値が全く同じ)でも、目的変数の値が日によって変わってしまうということでしょうか?
もしその場合は、オートスケーリングに少し工夫をしたほうが良いです。一つは、全体の平均ではなく標準の条件の値で引き、全体の標準偏差ではなく日ごとの標準偏差で割る、ということです。もしくは、すでにやられているように最初の標準結果に揃うように割ってから、全体のオートスケーリングをすることもありえます。
2.
この状況は、説明変数の値が同じにもかかわらず目的変数の値が異なるということでしょうか?
その場合、根本的な解決をするには、(既存の説明変数の値が同じで)目的変数の異なる値を説明できるような新たな説明変数を追加しなければなりません(たとえば室内温度とか湿度とか?)。新たな説明変数を追加できない場合は、同じ説明変数の値ごとに目的変数の値の平均値を代表値とすることになります。
Liked by: 大学教授
❤️ Likes
show all
univprofblog1’s Profile Photo

Latest answers from 大学教授

初めまして。私もデータ分析を始めて間もない初心者です。目的変数が複数ある場合の回帰分析の手法についてです。目的変数を一つずつで重回帰分析を行い、その後、複数ある回帰モデルをどのように関連付けると良い結果が得られるのでしょうか。 ご回答のほど、よろしくお願いいたします。

muscat
ご質問ありがとうございます。
関連付けると申しますか、与えられた説明変数の値を、それぞれの回帰モデルに入力して、それぞれ目的変数の値を計算することになります。
目的変数の間の関係を調べたい場合は、目的変数のみで主成分分析などの手法を用いるのがよいかと思います。

「データを準備するだけ!PythonでEGO!目的変数が複数」を購入した者です。サンプルデータを使用して実行してみたのですが、「operands could not be broadcast together with shapes (50,10) (8,) 」というエラーが発生してしまいました。どうすれば実行できますでしょうか。大変お手数ですが、返信よろしくお願いします。

muscat
ご質問ありがとうございます。
またこのたびはプログラムのご購入をいただき感謝致します。
プログラムについてご不便をおかけ致しまして申し訳ございません。
サンプルデータについて、今回は目的変数の数を 3 にしているにもかかわらず、data.csvの説明変数の数と、data_prediction2.csvの説明変数の数とが異なることが原因でした。
data_prediction2.csvを開いていただき、X1 と X2 の二列を削除していただけないでしょうか。
申し訳ございませんがよろしくお願い致します。

クロスバリデーション(CV)について質問です。一般的に、時系列データの予測モデルを作るときにCVを行うことは受け入れられているのでしょうか?CVでは、データ全体をいくつかの塊(K個)に分割して、K個の中から1つをテストデータにして、それ以外をモデル構築データにして精度を図るという行為をK個すべてに対して行うものだと思いますが、そうすると(時系列の場合)テストデータに対してまだ存在していないはずのデータを使ってモデル構築するパターンがでてきてしまうため、そもそもこの手法自体が使えないんじゃないかなと思うのですが、そのあたりってどう考えたらいいのでしょうか??

anger
ご質問ありがとうございます。
基本的には、時系列データでも普通のデータと同じようにクロスバリデーションをします。おっしゃる通り、クロスバリデーションの中では時間の概念はありません。ただ、問題なくハイパーパラメータの設定はできます。
クロスバリデーションはハイパーパラメータの最適化と割り切って用いて、ハイパーパラメータを決めた後に、トレーニングデータより後の時間のテストデータで予測性能を検証する、といった考え方がよいと思います。

11の見える化・可視化手法を一気に実行して結果を比較する!で以下のエラーコードにはどのように対処したらよいでしょうか。これは匿名でお願いします。 ValueError: Error in determining null-space with ARPACK. Error message: 'Factor is exactly singular'. Note that method='arpack' can fail when the weight matrix is singular or otherwise ill-behaved. method='dense' is recommend

TEMOSANA’s Profile PhotoTS
ご質問いただきありがとうございます。
このたびはご不便をおかけ致しまして申し訳ございません。
85, 92, 99行目をそれぞれ
Score_LLE = manifold.LocallyLinearEmbedding(n_neighbors=n_neighbors_LLE, n_components=2,eigen_solver="dense").fit_transform(X)
Score_MLLE = manifold.LocallyLinearEmbedding(n_neighbors=n_neighbors_MLLE, n_components=2, method='modified', modified_tol=modified_tol_MLLE,eigen_solver="dense").fit_transform(X)
Score_HLLE = manifold.LocallyLinearEmbedding(n_neighbors=n_neighbors_HLLE, n_components=2, method='hessian', modified_tol=modified_tol_HLLE,eigen_solver="dense").fit_transform(X)
に変更するとよいかと存じます。
よろしくお願い致します。

お世話になります。SVMを用いて、正規乱数の2乗で作成した5つの変数Xの和を目的変数として、サンプル数を変化させました。サンプル数を変化させてシミュレーションしましたが、サンプル数が20未満では次のエラーが出てシミュレーション停止となる場合がありました。Error in predict.svm(ret, xhold, decision.values = TRUE) : Model is empty!以上です。よろしくお願い致します。

nagakura katsuhiko
再度のご連絡ありがとうございます。
エラーを拝見致しましたところ、SVRモデルが構築されていないようです。
28行目の
TunedSVR = ...
の手前で、X や Y を確認して、変な値が入っていないかや値が同じ変数がないかなど確認されるとよいと思います。
ちなみに、こちらではサンプル数 20未満でも問題なくSVRのモデル構築ができております。
よろしくお願い致します。

コピペだけで実用的かつ実践的なSVM (MATLAB・R・Python)を購入した者です。サンプル数を変化させた計算を行いましたが、サンプル数が20よりも少なくなるとエラーが出て計算でSきません。説明変数は5です。一般に、SVRの使用範囲をご教示頂けると助かります。

nagakura katsuhiko
このたびはご購入いただき感謝申し上げます。
ご不便をおかけ致しまして申し訳ございません。
エラーの原因を特定するため、エラーメッセージを教えていただけないでしょうか?
お手数おかけ致しまして申し訳ございません。
よろしくお願い致します。

お手数ですが、leave one out においてNLSVRResltGS.grid_scores_の返り値の確認を頂けませんでしょうか。全てのハイパラメーターの組み合わせに対してデータの予測値が0になっています。よろしくお願いいたします。

H.A
再度のご指摘をいただき感謝申し上げます。
こちらでも同じ状況になることを確認致しました。
該当する箇所を
NLSVRResltGS = GridSearchCV(svm.SVR(kernel='rbf', gamma=OptimalNLSVRGamma), TunedParameters, cv=FoldNumber, scoring='neg_mean_squared_error' )
に変更していただけないでしょうか?
他にも GridSearchCV が使われているところで、
scoring='neg_mean_squared_error'
を追加すると leave one out でも正常に動作致します。
お手数をおかけ致しまして申し訳ございませんがよろしくお願い致します。

以前、12の変数選択手法、10の回帰分析手法についてleave one outの実装をお願いしたものです。10の回帰分析手法において、13dataでleave one out(FoldNumber = 13)を行うと、NLSVRのハイパラメーターの最適値が最も精度が高いものになりません。grid_scores_で値を見てみると、予測値が全て0になっている事が恐らく原因だと考えられます。恐らくGridSearchCVを用いている他の手法も同様のトラブルが発生していると考えられます。お手数ですが、どのようにスクリプトを変更すれば良いのかご教授頂けませんでしょうか。

H.A
ご質問いただきありがとうございます。
ご不便をおかけ致しまして申し訳ございません。
ご質問の中に、
> NLSVRのハイパラメーターの最適値が最も精度が高いものになりません。
とございましたが、ここでおっしゃっている "精度が高い" とは具体的に何のことをおっしゃっているのでしょうか?
ちなみに、NLSVRのGridSearchCVではクロスバリデーション (質問された方の状況ですと leave one out クロスバリデーション) 後の r2 が最大になるようにハイパーパラメータを選んでいます。
よろしくお願い致します。

回帰分析について質問です。 以前PLSのスクリプトを購入したのですが、PLS以外にも多重共線性に強い手法としてリッジがあることを知りました。 PLSとリッジの特徴の違い等を教えて頂けたら幸いです。 宜しくお願い致します。

data_analysis’s Profile Photoanalyzer
ご質問ありがとうございます。
PLSとリッジ回帰の違いについてはこちらに書きました。
http://univprof.com/archives/16-06-08-3768097.html
ご参照ください。

いつも大学教授様のHPを参考にデータ解析の勉強をさせて頂いております。 そこで質問なのですが、どんな手法でも前処理としてオートスケーリングはするものなのでしょうか? そろそろ自分の力で実装してみようと考えております。混合分布モデルに興味を持って実践しようとしているのですが、これにも前処理としてオートスケーリングが必要なのか考えている次第です。 ご回答宜しくお願い致します。

data_analysis’s Profile Photoanalyzer
ご質問ありがとうございます。
はい、基本的にどんな手法でも前処理としてオートスケーリング(標準化)をするものです。混合分布モデルのときも例外ではありません。
実装頑張ってください。

Language: English