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

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

新規登録して質問してみよう
ただいま回答率
85.48%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

1880閲覧

層化samplingの均等化について

kouji_39

総合スコア164

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2020/05/12 15:40

編集2020/05/13 21:04

実現したいこと

boston住宅データで、層化samplingを使って、trainとtestのデータをスプリット
させています。層化を一定間隔(bins)にすると、下の図-1のようになるのですが、ここで、
層化させる範囲を、データ個数がある程度一定になるようにするということは必要としな
いのでしょうか。実用的な使い方をされている方のアドバイスがいただけたら、ありがた
いです。

該当のソースコード

import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from sklearn.datasets import load_boston boston = load_boston() X = boston.data y = boston.target bins=5*np.arange(11) binned_y=np.digitize(y,bins) pd.Series(binned_y).hist(bins=25)#下図参照 # 特徴量と正解を訓練データとテストデータに分割 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, stratify=binned_y, random_state=0) print('X_trainの形状:',X_train.shape,' y_trainの形状:',y_train.shape,' X_testの形状:',X_test.shape,' y_testの形状:',y_test.shape) # ランダムフォレスト回帰のモデルを作成 model = RandomForestRegressor(bootstrap=True, n_estimators=1000, criterion='mse', max_depth=None, random_state=0, n_jobs=-1) # モデルの訓練 model.fit(X_train, y_train)

イメージ説明
図-1 データセットの目的変数のヒストグラム

参考にしたこと

下記の参考書のコードを参考にしています
・scikit-learn活用レシピ(㈱インプレス発行)の9.5レシピ72(pp.272-pp.274)

###自分なりの回答
層化サンプリングにより、trainとtestでの目的変数の分布が偏らないことが目的であり、
データ個数を一定化させると、その効果は減少する。しかし、データがある部分で極端に少なく
なり、その区分で2個未満にはさせないようにする。
(注)以上は、この質問をしてから、自分なりに分析したものです。

発生している問題・エラーメッセージ

今回該当なし

###補足情報
開発環境:Google Colaboratory
バージョン:python3

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

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

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

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

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

guest

回答1

0

ベストアンサー

量的変数をヒストグラムを使ってまで層別化する意義を見出せないですし、結果の評価に絡むときは異論の出づらい方法を選択した方が無難なので(説明の手間を考えれば)、単純なランダムでやります。

投稿2020/05/14 07:09

hayataka2049

総合スコア30933

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

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

kouji_39

2020/05/14 11:35

層化サンプリングは、統計学では層化抽出法に値すると考えられます。この手法は、各層において分布が大きく異なる場合に使うことができ、母集団の推測の精度が増すことのメリットがあります。これを使うかどうかは、ケースバイケースかと思います。ちなみにボストン住宅データではmseを評価関数として、層化サンプリングの効果はありました。ランダムフォレストの解説している参考書でも、あまり使用例は少ないようです。hayataka2049様のご意見が聞け、よかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問