質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

13068閲覧

random_stateによる乱数シード指定について

kouji_39

総合スコア164

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2020/04/05 02:28

randomforestで回帰予測を行っています。
下記のように、train_test_splitでデータ分割し、次に回帰モデル作成しています。
この時、random_stateの値をどう決めたらよいでしょうか。
参考図書が0でしたので、当初0を使用しています。
しかし、42を使っていた図書もあり、42で試しました。
すると評価値であるmseの値も変化します。
いずれも私の入力データによる値ですが、以下のようになります。
そして、参考で下記に「random_stateの使用状況」を示しています。

random_state=0で、mseが、train時で1.47、test時で3.07
random_state=42で、mseが、train時で1.45、test時で5.14
random_state=1234で、mseが、train時で0.91、test時で16.32
random_state=None(4回実施)で、mse(4回の最低~最大)が、train時で0.79~1.39、test時で9.03~19.83

random_stateによる乱数シード指定のコツを教えてください。
よろしくお願いいたします。
追伸:train_test_splitとRandomForestRegressorで同じrandom_state値をとるのが、
複数のテキストで紹介されています。これも理由があるのでしょうか。

以下が、random_stateの使用状況

特徴量と正解を訓練データとテストデータに分割

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

ランダムフォレスト回帰のモデルを作成

model = RandomForestRegressor(bootstrap=True, n_estimators=1000, criterion='mse', max_depth=None, random_state=0, n_jobs=-1)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

恣意的に選んではいけません。ここでは分割の仕方を固定するのが(あるいは一般化していうと、乱数に依存するアルゴリズムの計算結果に再現性を持たせるのが)乱数シードの目的です。

それによって結果が良くなる/悪くなるのは評価の主旨に反します。特に良くするために使うのは反則です。

厳密に評価実験をやるのであれば、複数の乱数シードをランダムに選んで複数回学習とテストを行い、行った結果を統計処理する場合もあります。そこまでしなくて良い場合は、適当に決めた数字ということになるのでしょう。

投稿2020/04/05 06:29

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kouji_39

2020/04/05 10:21

ご回答ありがとうございます。 私の参考書では、「0」や「1234」をrandom_stateに指定しています。参考書にも、何らかの数字を与えることとあります。与えないと、default値がNoneなので、毎回、乱数が変化するので、再現性を持たないとありました。どうしても、結果がよい時の値をandom_stateに指定したいところですが、前もって「0」や「1234」という数字に決めておくというのが最良のようですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問