Ask @univprofblog1:

お手数ですが、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 でも正常に動作致します。
お手数をおかけ致しまして申し訳ございませんがよろしくお願い致します。

View more

以前、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 が最大になるようにハイパーパラメータを選んでいます。
よろしくお願い致します。

View more

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

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

View more

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

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

View more

いつも大学教授様のHPを参考に勉強させて頂いております。 PLSのコードについての質問なのですが、オートスケーリングとは正規化とは異なる作業なのでしょうか? また異なるとすると、どこが違うのか教えて頂ければ幸いです。宜しくお願い致します。

analyzer
ご質問いただきありがとうございます。
オートスケーリングは正規化と同じです。ある変数において、その変数の平均値で引き、その後に変数の標準偏差で割る、という操作です。
よろしくお願い致します。

View more

初めまして、データ解析初心者です。クロスバリデーションについて質問があります。 クロスバリデーションには、LOOCV、k分割、ブートストラップ等いろいろありますが どのクロスバリデーションを使えばもっともよくモデルの性能を評価できますか? モデルの性能評価に、どの方法を使えば良いかわからず困っております。 それとも単純に、サンプルの数から計算コストを考えてどの方法を使うか決めるのでしょうか。お手数ですがご回答いただけるとうれしいです。どうぞ宜しくお願い致します。

こむぎこ
ご質問いただきありがとうございます。
"モデルの性能" として何を評価するのかによりますが、たとえば、PLSの成分数などのハイパーパラメータを決めるためのモデルの評価をするときには、5-fold クロスバリデーションを使えばまず問題ありません。
あと、LOOCVでは特にサンプル数が多いときにクロスバリデーションの効果が出ないため使わないほうが望ましいです。

View more

先ほど質問をしたものです。leave one outをご対応いただきありがとうございました。 Python用 コピペだけで12の変数選択手法を一気に実行して結果を比較する!に関しましても、 leave one out が実行出来ません。DCVは実行しないようスクリプト全体をコメントアウトしているのですが、 同様のエラーが出てしまいます。お手数をおかけいたしますが、ご教授の程よろしくお願いいたします。

H.A
このたびは再度のエラーのご報告をいただき感謝申し上げます。
たびたびご迷惑をおかけ致しまして申し訳ございません。今回のエラーに関しましても対応させていただきました。
恐れ入りますが、ダウンロード用のURLから、もう一度ダウンロードしてご利用いただけないでしょうか。
パスワードは以前と同じでございます。
お手数おかけ致しまして申し訳ございませんが、どうぞよろしくお願い致します。

View more

Python用 10の回帰分析手法を一気に実行して結果を比較する!を購入・使用させて頂いております。leave one outを行いたいのですが、165行目(改行等で変わっているかもしれません)で下記エラーが出ます。 ValueError: Cannot have number of splits n_splits=13 greater than the number of samples: 12. データ数は13、FoldNumber は13、DCVはしないに設定してあります。お手数ですがご教授の程、よろしくお願いいたします。

H.A
このたびは本プログラムをご購入いただきご利用いただき感謝申し上げます。
またエラーのご指摘ありがとうございました。
今回のエラーに関して対応させていただきました。
恐れ入りますが、ダウンロード用のURLから、もう一度ダウンロードしてご利用いただけないでしょうか。
パスワードは以前と同じでございます。
お手数おかけ致しまして申し訳ございませんが、どうぞよろしくお願い致します。

View more

はじめまして。データ分析を初めたばかりの者です。 回帰分析について質問です。目的変数が複数の場合は行うことが出来ないのでしょうか? もし、可能であるならばどういった手法が考えられますか? ご回答の程、宜しくお願い致します。

analyzer
ご質問ありがとうございます。
PLS https://note.mu/univprof/n/n01151b7e122b の仲間の中には、PLS2という目的変数が複数に対応した回帰分析手法があります。
ただ、各目的変数の推定精度を高めるためには、PLS2を使うのではなく、目的変数ごとに回帰モデルを構築したほうが良いです。
よろしくお願い致します。

View more

なるほど、ありがとうございます。カウントデータが0の多い分布(平均<分散)であっても同様で問題なさそうでしょうか。

Takamichi Yanai
ご質問ありがとうございます。
変換自体は問題ございません。カウントの大小を説明できる変数が説明変数内にあると良好な結果になると思います。
よろしくお願い致します。

View more

ありがとうございます。カウントデータで0と1の間に収まるように変換するというのは、単純に最大値で割るような変換をすればいいのか、それとも歪度を調整するbox-cox変換のような処理をするのでしょうか。その場合でも0と1の間に収めるのが難しいですが・・・

Takamichi Yanai
再度のご質問ありがとうございます。
分かりにくくて申し訳ございません。正確に申し上げると、確率で表現することになります。カウントデータとのことですので、今は頻度で表されていると思います。それを確率に変換するわけです。変換の仕方はデータセットによるのでなんとも言えませんが、最大値で割るのも一つの方法と思います。
よろしくお願い申し上げます。

View more

「コピペだけで15の変数選択手法を一気に実行して結果を比較する! (R言語)」を購入しました。ソースを見ると連続量に対する手法が中心だったのですが、2クラス分類やカウントデータの回帰のための変数を選択できるよう、何か工夫できないでしょうか。ロジットモデルや負の2項回帰で適用したいと考えております。

Takamichi Yanai
ご質問ありがとうございます。
またこのたびはプログラムをご購入いただき感謝致します。
2クラス分類やカウントデータで利用したいとのこと、まず2クラス分類では、2つのクラスを 0 と 1 で表現することで、今回のプログラムにより変数選択することが可能です。
次にカウントデータのとき、まずは値の範囲が 0 から 1 になるように変数変換してからロジット変換したものを目的変数にすることで、今回のプログラムで変数選択できます。
よろしくお願い致します。

View more

RもSVMも初心者です。説明変数が21個、サンプル数が36個の非線形解析を、i番目のデータを抜いてベストチューンのサポートベクタ回帰を行い、良好な結果を得ました。次に、同様な1行抜きの中で変数選択を行うSVMのプログラムを考えているのですが、荷が重すぎます。どのプログラムを購入したらよいのでしょうか?あるいは在庫していないのでしょうか?よろしくお願いします。namakuran

nagakura katsuhiko
ご質問ありがとうございます。SVM で leave-one-out cross-validation の精度が良くなるように変数選択するプログラムは、「在庫がしていない」のが現状でございます。申し訳ございません。SVMは計算時間がかかりますので、今回の36個のようにサンプル数が少なければ良いのですが、サンプル数が多くなると繰り返しSVMを行いながら変数選択すると時間がとてもかかってしまいます。
ただ、非線形性を考慮した変数選択であれば、下のRough Set Theory(RST)による変数選択か、
https://spike.cc/shop/univprof/products/DXDyag01
下のランダムフォレスト(Random Forests, RF)で変数の重要度を見るのがよいと思います。
https://spike.cc/shop/univprof/products/G84jxvJb
よろしくお願い申し上げます。

View more

回答ありがとうございます。重ねて質問させていただきたいのですが、テストデータ(data_prediction2.csv)には答えとなるラベルがないのですが、どのように3つ目の混同行列(・モデル検証用サンプル (テストデータ) の推定結果における混同行列)を導出しているのでしょうか。よろしくお願いします。

naoyayamaguchi
ご質問ありがとうございます。説明不足で申し訳ございませんでした。3つ目の混同行列は、data_prediction1.csv で計算されたものです。こちらには答えのラベルがあります。
よろしくお願い致します。

View more

初めまして。「コピペだけで実用的かつ実践的な多クラス分類用サポートベクターマシン (Support Vector Machine, SVM) (MATLAB言語)」を購入させていただいたものですが、結果として出力される3つの混合行列の違いについて教えていただけますでしょうか。 また、one vs one法を用いているようなので、各クラスの再現率、適合率、F値をだして評価できるのではと思うのですが可能なのでしょうか。よろしくお願いします。 (先ほど一度同じ質問を送ってしまっているかもしれません。もし重複して送ってしまっていたら申し訳ありません。よろしくお願いします)

naoyayamaguchi
ご質問いただきありがとうございます。
また多クラス分類用SVMのプログラムをご購入いただき感謝致します。
3つの混合行列について、順番に
・SVMモデルを構築したサンプル (トレーニングデータ) の推定結果における混同行列
・クロスバリデーションの推定結果での混同行列
・モデル検証用サンプル (テストデータ) の推定結果における混同行列
です。
またモデル性能の指標について、手動もしくは別途コードを書いていただくことになりますが、テストデータの推定結果は "PredictedY2.csv" に格納されていますので、こちらから計算していただくことが可能です。
よろしくお願い致します。

View more

初めまして。機械学習やプログラミングの勉強を初めたばかりの者です。 大学教授様の多クラス分類SVMのpython版コードを購入して実行したのですが、ImportError: No module named supporting functionsという表示のエラーが出ます。 解決方法を教えて頂けたら幸甚に存じます。

ご質問いただきありがとうございます。
エラーについてご不便おかけ致しまして申し訳ございません。
下のURLからzipファイルをダウンロードしていただき、解凍したものをSVMのコードと同じフォルダ(ディレクトリ)に置いていただけないでしょうか。
http://univprofblog.html.xdomain.jp/code/supportingfunctions.zip
お手数おかけ致しまして恐縮ですがよろしくお願い致します。

View more

将来データ分析周りのことをしたいので 大学もその辺りにいこうと思うのですがどのようなところが良いでしょうか? 九州大学や東工大の経営工学辺りでしょうか?

ご質問ありがとうございます。
大学でデータ分析を行いたいとのこと、純粋にデータ解析手法・統計・機械学習について突き詰めたいのであれば、情報系の学科で、面白そうな研究室があるとことがよいと思います。
ただ、データ分析を使って応用したい分野 (医療・バイオ・化学・経済・・・) があれば、その分野でデータ分析を行っている研究室のある大学に行くのがよいと思います。

View more

初めまして.「大学教授」さんのHPからコードを購入し学習させていただこうと考えている学生です.質問が二つあります. 一つ目です. コード購入の際,ライセンス条件が見当たらなかったのですが,コードの改変は許されているのでしょうか. 二つ目です. GTM(generative topographic mapping)の基底関数のグリッドの決定の際は,すべてを等間隔に置かなくてもよいでしょうか.私の扱いたい解析したいデータセットは,グリッドが一部等間隔ではない方がうまくいくのではないかと考えています. よろしくお願いいたします.

TAKAMUKU TAKAHIRO
ご質問およびコード購入のご検討ありがとうございます。
質問に回答させていただきます。
一つ目につきまして、コードは改変していただいて問題ございません。
二つ目につきまして、今回のGTMでは基底関数のグリッドは等間隔に置く必要がございます。申し訳ございませんがよろしくお願い致します。

View more

必要最低限のサンプル数の見積もりに関してです。それには検出力・エフェクトサイズ・有意水準などが必要、とよく言われますが、ある標本のある目的変数を複数の特徴量を使用した予測モデルを作る際、その結果(感度、特異度、その他)がまだ見ぬ母集団にとっても妥当である、と言える為のサンプル数はどのように決められるべきなのでしょうか。また、この場合他にも、専門家が正解付けできる最大標本数や過適応しない最低限の標本数なども考慮しなければならないと思われます。いかがでしょうか。

ご質問いただき感謝致します。
おっしゃるような回帰モデル・クラス分類モデルにおけるサンプル数の問題はとても重要な問題です。問題を難しくさせているのは、扱うデータセットによって目的変数と特徴量との関係は異なり、それによって必要なサンプル数も異なることです。
また回帰モデル・クラス分類モデルを用いるときに重要なことは、モデルの適用領域・適用範囲 http://univprof.com/archives/16-05-30-3588574.html を考えなければならないことです。モデルを作るときにどれだけサンプル数があっても、目的変数の値を予測したいサンプルが、適用領域の外でしたら推定誤差が大きくなってしまいます。
そこで妥当なサンプル数を決める、という考え方から、サンプル数によってモデルの適用領域が異なる、と転換します。サンプル数が少ないときでもモデルは作れますが、そのモデルの適用領域は狭く、得られた推定値のばらつきは大きくなり、サンプル数が多くなるとそれだけ適用領域は広がり、推定値のばらつきも抑えられる、ということです。
そして、モデルの適用領域や推定値のばらつきを、与えられたデータセットから求める、ということになります。

View more

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

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

View more

数百の説明変数に対して、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の性能を比較してはどうでしょうか?

View more

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

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

View more

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

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

View more

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

ご質問いただきありがとうございます。
①②③についてそれぞれ回答させていただきます。
① もちろん多重共線性のある変数の一方を削除してから解析することも問題ございませんが、経験的には、削除してもしなくてもモデルの精度はあまり変わりませんので、変数選択しなくても良いかと思います。
② まず、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層目までなどの重みを確認可能です。
③ 残念ながら、隠れ層と隠れノードの数に適正値はございません。データセットによって異なります。試行錯誤的に適正値を見つけるのが一般的です。
以上です。よろしくお願い致します。

View more

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の値を小さくして実行されてはいかがでしょうか?
よろしくお願い致します。

View more

Next