タグ付けされた質問 「cross-validation」

統計結果の一般化可能性を決定しようとする一般的な手順を指します。交差検証は、特定のモデルの適合が将来の観測を予測する方法を評価する状況で頻繁に発生します。交差検証の方法には、通常、モデルのフィッティング中にデータのランダムなサブセットを差し控え、保留されたデータの予測精度を定量化し、このプロセスを繰り返して予測精度の測定値を取得します。

2
線形回帰、ディシジョンツリー、またはランダムフォレスト回帰を選択するのはいつですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私はプロジェクトに取り組んでおり、どのアルゴリズムを選択するかを決定するのが困難ですregression。私は1つを選ぶ必要がありますどのような条件の下で知りたいlinear regressionか、Decision Tree regressionまたはRandom Forest regression?上記のツリーの中で特定のアルゴリズムに移行することを決定するデータの特定の特性はありますか?決定を下すためにデータセットを調べる必要がある特性は何ですか?そして、もう一つが選択になるだろういくつかの理由があるdecision treeかrandom forest、アルゴリズム同じ正しさをすることによって達成することができたとしてもはlinear regression?
10 machine-learning  algorithms  random-forest  linear-regression  decision-trees  machine-learning  predictive-modeling  forecast  r  clustering  similarity  data-mining  dataset  statistics  text-mining  text-mining  data-cleaning  data-wrangling  machine-learning  classification  algorithms  xgboost  data-mining  dataset  dataset  regression  graphs  svm  unbalanced-classes  cross-validation  optimization  hyperparameter  genetic-algorithms  visualization  predictive-modeling  correlation  machine-learning  predictive-modeling  apache-spark  statistics  normalization  apache-spark  map-reduce  r  correlation  confusion-matrix  r  data-cleaning  classification  terminology  dataset  image-classification  machine-learning  regression  apache-spark  machine-learning  data-mining  nlp  parsing  machine-learning  dimensionality-reduction  visualization  clustering  multiclass-classification  evaluation  unsupervised-learning  machine-learning  machine-learning  data-mining  supervised-learning  unsupervised-learning  machine-learning  data-mining  classification  statistics  predictive-modeling  data-mining  clustering  python  pandas  machine-learning  dataset  data-cleaning  data  bigdata  software-recommendation 

1
匿名のスケーリングされた数値予測子を使用してnumer.ai競争にアプローチする方法は?
Numer.aiはここしばらくの間存在しており、それに関するWebでの投稿やその他の議論はほとんどないようです。 システムは随時変更され、今日のセットアップは次のとおりです。 トレーニング(N = 96K)およびテスト(N = 33K)で、[0,1]の連続値とバイナリターゲットを持つ21個のフィーチャ。 データはクリーンで(欠損値なし)、2週間ごとに更新されます。(テストセットの)予測をアップロードして、ログの損失を確認できます。テストデータの一部はライブデータでもあり、適切な予測に対して報酬が支払われます。 私が議論したいこと: 機能は完全に匿名であるため、私たちができる機能エンジニアリングはそれほど多くはないと思います。だから私のアプローチは非常に機械的です: これに触発されて、分類アルゴリズムを使用して、私のテストデータに最も適合するトレーニングデータを除外します。 いくつかの素晴らしい前処理を理解する 素晴らしい分類アルゴリズムを訓練する それらのアンサンブルを構築します(スタッキングなど)。 具体的な質問: ステップ1について:そのようなアプローチの経験はありますか?トレーニングサンプルがテストに属する確率(通常は0.5未満)を注文し、最大のK確率を取得するとします。どのようにKを選びますか?私は15Kで試しましたが、主にステップ3のトレーニングを高速化するために小さなトレーニングデータセットを用意しました。 ステップ2に関して:データはすでに0,1スケールです。(PCAのような)線形変換を適用すると、このスケールが壊れます。そのような数値データがあり、これが実際にそうであることがわからない場合、前処理で何を試みますか? PS:numer.aiが給料を支払っているので、これについて議論している人々が私にお金を稼ぐのを助けることができることを私は知っています。しかし、これは公開されているので、これは誰かを助けるでしょう... PPS:今日のリーダーボードには興味深いパターンがあります。ログ損失が0.64xxの上位2つ、次に0.66xxの3位、そしてほとんどの予測子は0.6888xに達しています。 したがって、非常に小さなトップフィールドと適度に成功した人(私を含む)がたくさんいるようです。

4
相互検証のパフォーマンスは、独立したデータセットの実際のパフォーマンスを予測するための正確な指標になりますか?
この質問は、相互検証の背後にある理論に関連していると思います。ここに私の経験的発見を示し、そこで交差検証の理論に関連する質問を書きました。 2つのモデルM1とM2があります。同じデータセットを使用してそれらをトレーニングし、同じデータセットを使用して交差検証を実行して、各モデルの最適なパラメーターを見つけます。最終的に、最適パラメーターの下でのM1は、10倍の交差検証スコアの点で、最適パラメーターの下でのM2よりもパフォーマンスが良いことがわかりました。次に、予測子とラベルの両方を含む別の独立したテストデータセットがあり、このテストデータセットがトレーニングデータセットの同じ分布から生成された場合、これらの2つの十分に調整されたモデルをその新しいテストデータセットに適用する前に、主張したり、新しいテストデータセットよりもM1の方がM2よりもパフォーマンスが優れていることを期待できますか? 私はカグルタイタニックの例を演奏していました。2つのxgboostモデルがあり、M1は十分にチューニングされており、M1はトレーニングデータセットに対して10倍の交差検証を実行するという点であまりチューニングされていません。しかし、両方を送信すると、調整が不十分なモデルの方が実際にテストデータセットのスコアが優れていることがわかりました。それはどうでしょうか?そして、それが真実である場合、データを異なるモデルに適合させ、モデルパラメータを調整するときに何を探す必要がありますか? これが私の具体的な提出結果です:ランダムグリッド検索を行いました params_fixed = {'silent': 1,'base_score': 0.5,'reg_lambda': 1, 'max_delta_step': 0,'scale_pos_weight':1,'nthread': 4, 'objective': 'binary:logistic'} params_grid = {'max_depth': list(np.arange(1,10)), 'gamma': [0,0.05,0.1,0.3, 0.5,0.7,0.9], 'n_estimators':[1,2,5,7,10,15,19,25,30,50], 'learning_rate': [0.01,0.03,0.05,0.1,0.3,0.5,0.7,0.9,1], 'subsample': [0.5,0.7,0.9], 'colsample_bytree': [0.5,0.7,0.9], 'min_child_weight': [1,2,3,5], 'reg_alpha': [1e-5, 1e-2, 0.1, 0.5,1,10] } rs_grid = RandomizedSearchCV( estimator=XGBClassifier(**params_fixed, seed=seed), param_distributions=params_grid, n_iter=5000, cv=10, scoring='accuracy', random_state=seed ) 変数を変更するたびにn_iter。まず、を設定しますn_iter=10。これにより、これらのハイパーパラメーターの値のセットが得られます。このベクトルをと呼び、cvスコア(精度率)が0.83389の場合、を使用してモデルをトレーニングし、独立したテストで予測を生成しますデータセット、およびKaggleに送信すると、テストデータセット0.79426で真の精度が生成されますα 1α1α1\alpha_1α1α1\alpha_1 …

2
本番環境の機械学習モデル
利用可能なラベル付きデータを使用して、モデルが日付にトレーニングされ、トレーニングとテストに分割されたとしましょう。すなわち、t r a i n d t 1、t e s t d t 1です。次に、このモデルが本番環境にデプロイされ、新しい受信データを予測します。一部のX日通過との間に収集された標識されたデータの束が存在するD 、T 1及びD T 1 + X日は、それを呼び出すことができますD A T A Xdt1dt1dt1traindt1traindt1train_{dt1}testdt1testdt1test_{dt1}XXXdt1dt1dt1dt1+Xdt1+Xdt1 + XDataxDataxData_x。私の現在のアプローチでは、私は外のランダムなサンプルを取る (80/20スプリットを例えばのために取ります)、DATAxDATAxDATA_x したがって、 のD A T A x = t r a i n x(d t 1でトレーニングされた既存のモデルを微調整するために使用される新しいデータ) 20 %のD A T A x = t …

3
入れ子の交差検証と最適な回帰モデルの選択-これは正しいSKLearnプロセスですか?
正しく理解していれば、入れ子になったCVは、どのモデルとハイパーパラメーターのチューニングプロセスが最適かを評価するのに役立ちます。内側のループ(GridSearchCV)は最適なハイパーパラメーターを見つけ、外側のループ()はハイパーパラメーターcross_val_score調整アルゴリズムを評価します。次にmse、最終的なモデルテストで最小化する(回帰分類器を調べている)外側のループから、どのチューニング/モデルコンボを選択するかを決定します。 ネストされた相互検証に関する質問/回答を読みましたが、これを利用する完全なパイプラインの例を見たことはありません。それで、以下の私のコード(実際のハイパーパラメータ範囲は無視してください-これは単なる例です)と思考プロセスは理にかなっていますか? from sklearn.cross_validation import cross_val_score, train_test_split from sklearn.grid_search import GridSearchCV from sklearn.metrics import mean_squared_error from sklearn.ensemble import RandomForestRegressor from sklearn.svm import SVR from sklearn.datasets import make_regression # create some regression data X, y = make_regression(n_samples=1000, n_features=10) params = [{'C':[0.01,0.05,0.1,1]},{'n_estimators':[10,100,1000]}] # setup models, variables mean_score = [] models = [SVR(), …

1
指定された変数に直交する(相関しない)予測を生成する
私が持っているXマトリックス、y変数、および他の変数をORTHO_VAR。私はをy使用して変数を予測する必要がありますXが、そのモデルからの予測は、可能な限りORTHO_VAR相関する一方で、直交する必要がありますy。 私は予測がノンパラメトリックな方法で生成されることを望みxgboost.XGBRegressorますが、どうしても必要な場合は線形法を使用できます。 このコード: import numpy as np import pandas as pd from sklearn.datasets import make_regression from xgboost import XGBRegressor ORTHO_VAR = 'ortho_var' TARGET = 'target' PRED = 'yhat' # Create regression dataset with two correlated targets X, y = make_regression(n_features=20, random_state=245, n_targets=2) indep_vars = ['var{}'.format(i) for i in range(X.shape[1])] # …
8 correlation  machine-learning  dataset  logistic-regression  prediction  linear-regression  prediction  dummy-variables  neural-network  image-classification  python  k-nn  python  neural-network  neural-network  deep-learning  keras  tensorflow  image-classification  tensorflow  reinforcement-learning  policy-gradients  machine-learning  decision-trees  neural-network  overfitting  data-analysis  metric  python  scikit-learn  distance  scipy  machine-learning  python  scikit-learn  decision-trees  logistic-regression  keras  image-classification  implementation  machine-learning  python  scikit-learn  random-forest  decision-trees  machine-learning  feature-selection  feature-engineering  word2vec  word-embeddings  natural-language-process  scikit-learn  time-series  clustering  k-means  python  cross-validation  pyspark  statistics  cross-validation  multiclass-classification  evaluation  machine-learning  nlp  machine-translation  neural-network  deep-learning  keras  tensorflow  image-classification  machine-learning  python  similarity  distance  lstm  text  named-entity-recognition  machine-learning  keras  optimization  gan  learning-rate  neural-network  data-mining  dataset  databases  books  neural-network  rnn 

2
検証とテストとトレーニングの精度。オーバーフィットを主張するために私はどちらを比較すべきですか?
こことインターネットでいくつかの回答を読みましたが、クロス検証は、モデルが一般化するかどうか、およびオーバーフィットについて一般化するかどうかを示すのに役立ちます。 しかし、私は、モデルが過適合であるかどうかを確認するために、テスト/トレーニング/検証の間でどの2つの精度/エラーを比較すべきか混乱していますか? 例えば: データを70%のトレーニングと30%のテストに分割します。 10倍の相互検証を実行すると、平均/平均をとることができる10の精度が得られます。これはどういう意味validation accuracyですか? その後、30%のテストデータでモデルをテストし、を取得しTest Accuracyます。 この場合、何になりますtraining accuracyか?また、モデルが過適合であるかどうかを確認するには、どの2つの精度を比較する必要がありますか?

1
なぜk分割交差検証(CV)がオーバーフィットするのですか?または、なぜCVとテストセットの間で不一致が発生するのですか?
最近、プロジェクトに取り組んでいて、相互検証エラー率が非常に低いのに、テストセットのエラー率が非常に高いことがわかりました。これは、私のモデルが過剰適合していることを示している可能性があります。テストセットがオーバーフィットしているのに、クロス検証がオーバーフィットしないのはなぜですか? より具体的には、100個の変数(n >> p)を持つ約200万の観測値があります。データセットをランダムに80/20トレインとテストに分割しました。次に、トレーニングセットで5分割交差検証を使用してモデル(XGboostなど)を近似し、推定エラー率はかなり低くなっています。次に、同じパラメーター設定を使用し、トレーニングセット全体を使用してモデルに適合させました。驚いたことに、テストセットを使用してモデルのパフォーマンスを評価したところ、エラーレートはCVエラーレートよりも大幅に高くなっています。どうして? 編集: (エラー率について) エラー率は、実際に多項loglossです。1.320044(+/- 0.002126)のCVエラー率と1.437881のテストエラー率を達成しました。これら2つの数字を見つめると、彼らは近くに見えるかもしれませんが、実際にはそうではありません。これを正当化する方法はわかりませんが、このプロジェクトのパフォーマンスのスケール(1.55から1.30まで)では、それらが異なると確信しています。 5分割交差検証の方法は次のようなものです。 列車セットを5セットに分割します。 4セットのモデルを繰り返し適合させ、残りのセットでパフォーマンスをテストします。 5つの反復すべてのパフォーマンスを平均化します。 つまり、私のパラメーター設定でモデルがオーバーフィットする場合は、この相互検証手順で確認する必要があります。しかし、テストセットを使用するまでは表示されません。地球上のどのような状況下でこれが起こる可能性がありますか? ありがとう! 追加: CVエラーレートがテストセットエラーレートと異なる理由は、 あなたが持っているデータがあなたが予測しようとしているデータを代表していないなら、クロス検証は外部データに対してうまく機能しません! - ここに しかし、ランダムに8/2で200万サンプルのデータセットを分割しました。トレインセットとテストセットの変数の分布は同じであるはずです。 (私も同じ質問をここに投稿してください。) 編集: (データ漏洩について) クロスバリデーションされた@darXiderから1つの興味深い賞をいただきました。彼は言う、 場合によっては、機能エンジニアリングの際に、トレーニングセットとテストセットの間のデータリークを回避するように注意する必要があります。たとえば、元の手つかずのデータでPCAを実行し、PC1とPC2を「新しい」機能として使用し、データセットをトレーニングとテストに分割すると、トレーニングセットからテストセットに情報がリークします。それはあなたのスコアを押し上げます。機能エンジニアリングの後で、CVスコアとテストスコアが一致しなくなったとのことですが、これは、トレーニングセットとテストセットの間で何らかの情報漏えいを示唆する可能性があります。 正確には「データ漏えい」とは何なのか、なぜ分割前の機能エンジニアリングがまだ「データ漏えい」を引き起こす可能性があるのでしょうか?

6
バイナリ分類問題に最適な交差検証タイプ
データセットは次のようになります。 25000観測 最大15の異なるタイプの予測子:数値、マルチクラスカテゴリカル、バイナリ ターゲット変数はバイナリです このタイプの問題に典型的な相互検証方法はどれですか。 デフォルトではK-Foldを使用しています。この場合、いくつの折り目で十分ですか?(私が使用するモデルの1つはランダムフォレストであり、時間がかかります...)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.