Questions tagged «cross-validation»

指试图确定统计结果的可概括性的一般过程。交叉验证经常发生在评估特定模型拟合如何预测未来观察的背景下。交叉验证的方法通常包括在模型拟合期间保留数据的随机子集,并量化预测保留的数据的准确性,然后重复此过程以获取预测准确性的量度。

1
为什么xgboost比sklearn GradientBoostingClassifier快得多?
我正在尝试通过50个具有100个数字特征的示例训练一个梯度提升模型。XGBClassifier我的机器43秒内把手500棵树,而GradientBoostingClassifier只处理10棵(!)以1分2秒:(我没有理会试图种植500棵树,因为它会需要几个小时。我使用的是相同的learning_rate,并max_depth设置, 见下文。 是什么使XGBoost如此之快?它是否使用了sklearn家伙不知道的用于梯度增强的新颖实现方式?还是“偷工减料”并种植浅树? ps我知道这个讨论:https : //www.kaggle.com/c/higgs-boson/forums/t/10335/xgboost-post-competition-survey,但是那里找不到答案... XGBClassifier(base_score=0.5, colsample_bylevel=1, colsample_bytree=1, gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=10, min_child_weight=1, missing=None, n_estimators=500, nthread=-1, objective='binary:logistic', reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=0, silent=True, subsample=1) GradientBoostingClassifier(init=None, learning_rate=0.05, loss='deviance', max_depth=10, max_features=None, max_leaf_nodes=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=10, presort='auto', random_state=None, subsample=1.0, verbose=0, warm_start=False)
29 scikit-learn  xgboost  gbm  data-mining  classification  data-cleaning  machine-learning  reinforcement-learning  data-mining  bigdata  dataset  nlp  language-model  stanford-nlp  machine-learning  neural-network  deep-learning  randomized-algorithms  machine-learning  beginner  career  xgboost  loss-function  neural-network  software-recommendation  naive-bayes-classifier  classification  scikit-learn  feature-selection  r  random-forest  cross-validation  data-mining  python  scikit-learn  random-forest  churn  python  clustering  k-means  machine-learning  nlp  sentiment-analysis  machine-learning  programming  python  scikit-learn  nltk  gensim  visualization  data  csv  neural-network  deep-learning  descriptive-statistics  machine-learning  supervised-learning  text-mining  orange  data  parameter-estimation  python  pandas  scraping  r  clustering  k-means  unsupervised-learning 

3
使用随机森林进行建模是否需要交叉验证?
据我所知,人们对此的看法往往有所不同。最佳实践肯定会规定使用交叉验证(尤其是将RF与同一数据集上的其他算法进行比较时)。另一方面,原始消息来源指出,在模型训练期间计算出OOB误差这一事实足以说明测试集的性能。甚至特雷弗·哈斯提(Trevor Hastie)在最近的一次对话中都说“随机森林提供免费的交叉验证”。直观地,如果在一个数据集上训练并尝试改进基于RF的模型,这对我来说很有意义。 有人可以提出支持和反对使用随机森林进行交叉验证的论点吗?

2
如何使用GridSearch的输出?
我目前正在使用Python和Scikit进行学习,以进行分类,并围绕GridSearch进行了一些阅读,我认为这是优化估算器参数以获得最佳结果的好方法。 我的方法是这样的: 将我的数据分为训练/测试。 结合使用GridSearch和5Fold Cross验证来训练和测试我的估算器(Random Forest,Gradient Boost,SVC等),以获得具有最佳超参数组合的最佳估算器。 然后,使用测试集预测分类并将其与实际的类别标签进行比较,然后根据我的每个估计量(例如Precision,Recall,FMeasure和Matthews Correlation Coefficient)计算度量。 正是在这个阶段,我看到了奇怪的行为,并且不确定如何进行。我是否从GridSearch中获取.best_estimator_并将其用作网格搜索中的“最佳”输出,并使用此估计器执行预测?如果这样做,我发现第3阶段的指标通常比仅对所有训练数据进行训练并对测试集进行测试的情况要低得多。还是仅将输出GridSearchCV对象作为新的估算器?如果这样做,我的第3阶段指标会获得更好的分数,但是使用GridSearchCV对象而不是预期的分类器(例如随机森林)似乎很奇怪... 编辑: 所以我的问题是返回的GridSearchCV对象和.best_estimator_属性之间的区别是什么?我应该使用其中哪一个来计算其他指标?我可以像常规分类器一样使用此输出(例如使用预测),还是应该使用它?

3
在PySpark中逐行合并多个数据帧
我有10个数据帧pyspark.sql.dataframe.DataFrame,从获得randomSplit如(td1, td2, td3, td4, td5, td6, td7, td8, td9, td10) = td.randomSplit([.1, .1, .1, .1, .1, .1, .1, .1, .1, .1], seed = 100)现在我想参加9 td的到一个单一的数据帧,我应该怎么办呢? 我已经尝试过使用unionAll,但是此函数仅接受两个参数。 td1_2 = td1.unionAll(td2) # this is working fine td1_2_3 = td1.unionAll(td2, td3) # error TypeError: unionAll() takes exactly 2 arguments (3 given) 有什么办法可以按行组合两个以上的数据帧? 这样做的目的是在不使用PySpark …

4
自举和交叉验证有什么区别?
我曾经使用K折交叉验证来对我的机器学习模型进行强大的评估。但是我也知道存在用于此目的的引导方法。但是,在性能评估方面,我看不到它们之间的主要区别。 据我所知,引导程序还会产生一定数量的随机训练+测试子集(尽管以不同的方式),那么使用这种方法相对于CV有什么意义呢?我唯一能弄清楚的是,在自举的情况下,可以人为地产生几乎任意数量的此类子集,而对于CV,实例数是对此的一种限制。但是,这方面似乎有点麻烦。

1
Keras的fit函数的validation_split参数如何工作?
在https://keras.io/models/sequential/上记录了Keras顺序模型拟合函数中的验证拆分: validation_split:在0到1之间浮动。要用作验证数据的训练数据的分数。模型将分开训练数据的这一部分,不对其进行训练,并且将在每个时期结束时评估此数据的损失和任何模型度量。在改组之前,从提供的x和y数据中的最后一个样本中选择验证数据。 请注意最后一行: 在改组之前,从提供的x和y数据中的最后一个样本中选择验证数据。 这是否意味着验证数据始终是固定的,并且取自主数据集的底部? 有什么办法可以从主数据集中随机选择给定的数据部分?

2
为什么同时使用验证集和测试集?
考虑一个神经网络: 对于给定的数据集,我们将其分为训练,验证和测试集。假设我们以经典的60:20:20的比例进行操作,然后通过在验证集上检查网络来验证网络,以防止过度拟合。那么,需要在测试仪上对其进行测试以检查其性能吗? 测试集上的错误与验证集上的错误会不会有些相同,因为对于网络来说,它是一个看不见的数据,就像验证集一样,并且两者的数量都相同? 相反,我们不能通过将测试集合并到训练集上来增加训练集,以使我们拥有更多的训练数据并且网络训练得更好,然后使用验证集来防止过度拟合吗?我们为什么不这样做呢?

5
扩大seaborn热图
我corr()用原始df 创建了df。该corr()DF出来70×70,这是不可能的可视化热图... sns.heatmap(df)。如果我尝试显示corr = df.corr(),则表格不适合屏幕,并且我可以看到所有相关性。它是打印整个df大小而不管其大小还是控制热图大小的方法吗?
17 visualization  pandas  plotting  machine-learning  neural-network  svm  decision-trees  svm  efficiency  python  linear-regression  machine-learning  nlp  topic-model  lda  named-entity-recognition  naive-bayes-classifier  association-rules  fuzzy-logic  kaggle  deep-learning  tensorflow  inception  classification  feature-selection  feature-engineering  machine-learning  scikit-learn  tensorflow  keras  encoding  nlp  text-mining  nlp  rnn  python  neural-network  feature-extraction  machine-learning  predictive-modeling  python  r  linear-regression  clustering  r  ggplot2  neural-network  neural-network  training  python  neural-network  deep-learning  rnn  predictive-modeling  databases  sql  programming  distribution  dataset  cross-validation  neural-network  deep-learning  rnn  machine-learning  machine-learning  python  deep-learning  data-mining  tensorflow  visualization  tools  sql  embeddings  orange  feature-extraction  unsupervised-learning  gan  machine-learning  python  data-mining  pandas  machine-learning  data-mining  bigdata  apache-spark  apache-hadoop  deep-learning  python  convnet  keras  aggregation  clustering  k-means  r  random-forest  decision-trees  reference-request  visualization  data  pandas  plotting  neural-network  keras  rnn  theano  deep-learning  tensorflow  inception  predictive-modeling  deep-learning  regression  sentiment-analysis  nlp  encoding  deep-learning  python  scikit-learn  lda  convnet  keras  predictive-modeling  regression  overfitting  regression  svm  prediction  machine-learning  similarity  word2vec  information-retrieval  word-embeddings  neural-network  deep-learning  rnn 


2
即使验证损失仍然下降,也可能发生过度拟合吗?
我在Keras中有一个卷积+ LSTM模型,与此类似(参考文献1),我正在用它进行Kaggle竞赛。架构如下所示。我已经在我标记的11000个样本集上进行了训练(两个类别,初始患病率是〜9:1,所以我将1的样本上采样到大约1/1的比例)进行了50个时期的验证,拆分率为20%。有一阵子,但我认为它受到噪音和掉线层的控制。 模型看起来像是在进行出色的训练,最终在整个训练集上得分为91%,但是在对测试数据集进行测试时,绝对是垃圾。 注意:验证准确性高于训练准确性。这与“典型”过度拟合相反。 我的直觉是,考虑到验证的细微差别,该模型仍在设法过于严格地适应输入集而失去概括性。另一个线索是val_acc大于acc,这似乎很可疑。这是最有可能的情况吗? 如果这太适合了,那么增加验证间隔会完全缓解吗,还是我会遇到同样的问题,因为平均而言,每个样本仍会看到整个时期的一半? 该模型: Layer (type) Output Shape Param # Connected to ==================================================================================================== convolution1d_19 (Convolution1D) (None, None, 64) 8256 convolution1d_input_16[0][0] ____________________________________________________________________________________________________ maxpooling1d_18 (MaxPooling1D) (None, None, 64) 0 convolution1d_19[0][0] ____________________________________________________________________________________________________ batchnormalization_8 (BatchNormal(None, None, 64) 128 maxpooling1d_18[0][0] ____________________________________________________________________________________________________ gaussiannoise_5 (GaussianNoise) (None, None, 64) 0 batchnormalization_8[0][0] ____________________________________________________________________________________________________ lstm_16 (LSTM) (None, …

1
我应该使用多少个LSTM细胞?
是否有关于我应使用的LSTM电池的最小,最大和“合理”数量的经验法则(或实际规则)?具体来说,我与TensorFlow和property 有关的BasicLSTMCell有关num_units。 请假设我有以下定义的分类问题: t - number of time steps n - length of input vector in each time step m - length of output vector (number of classes) i - number of training examples 例如,训练示例的数量应该大于: 4*((n+1)*m + m*m)*c c单元数在哪里?我基于此:如何计算LSTM网络的参数数量?据我了解,这应该给出参数的总数,该总数应少于训练示例的数量。
12 rnn  machine-learning  r  predictive-modeling  random-forest  python  language-model  sentiment-analysis  encoding  machine-learning  deep-learning  neural-network  dataset  caffe  classification  xgboost  multiclass-classification  unbalanced-classes  time-series  descriptive-statistics  python  r  clustering  machine-learning  python  deep-learning  tensorflow  machine-learning  python  predictive-modeling  probability  scikit-learn  svm  machine-learning  python  classification  gradient-descent  regression  research  python  neural-network  deep-learning  convnet  keras  python  tensorflow  machine-learning  deep-learning  tensorflow  python  r  bigdata  visualization  rstudio  pandas  pyspark  dataset  time-series  multilabel-classification  machine-learning  neural-network  ensemble-modeling  kaggle  machine-learning  linear-regression  cnn  convnet  machine-learning  tensorflow  association-rules  machine-learning  predictive-modeling  training  model-selection  neural-network  keras  deep-learning  deep-learning  convnet  image-classification  predictive-modeling  prediction  machine-learning  python  classification  predictive-modeling  scikit-learn  machine-learning  python  random-forest  sampling  training  recommender-system  books  python  neural-network  nlp  deep-learning  tensorflow  python  matlab  information-retrieval  search  search-engine  deep-learning  convnet  keras  machine-learning  python  cross-validation  sampling  machine-learning 

4
数据集大小的过度拟合/不足拟合
在下图中, x轴=> 数据集大小 y轴=> 交叉验证得分 红线用于培训数据 绿线用于测试数据 在我所指的教程中,作者说红线和绿线重叠的点表示, 收集更多数据不太可能提高泛化性能,并且我们处于一个可能无法适应数据的区域。因此,尝试使用容量更大的模型是有意义的 我不太理解粗体字的含义以及它的发生方式。 感谢任何帮助。

2
交叉验证:K折与重复随机子采样
我想知道针对分类问题选择哪种类型的模型交叉验证:K折或随机子采样(引导采样)? 我最好的猜测是使用数据集的2/3(约1000个项目)进行训练,并使用1/3进行验证。 在这种情况下,K折仅给出三个迭代(折),这不足以看到稳定的平均误差。 另一方面,我不喜欢随机子采样功能:有些项目永远不会被选择进行训练/验证,而有些项目会被多次使用。 使用的分类算法:随机森林和逻辑回归。

1
如何使用匿名可缩放的数字预测变量来处理numer.ai竞争?
Numer.ai已经存在了一段时间,并且在网络上似乎只有很少的帖子或其他讨论。 系统不时更改,今天的设置如下: 训练(N = 96K)和测试(N = 33K)具有21个特征的数据,这些特征具有[0,1]中的连续值和二进制目标。 数据是干净的(无缺失值),每2周更新一次。您可以上传预测(在测试集上)并查看对数损失。测试数据的一部分甚至是实时数据,您都会获得良好预测的报酬。 我想讨论的是: 由于功能完全是匿名的,我认为我们无法进行太多的功能工程。所以我的方法很机械: 灵感来自于这个我使用的分类算法过滤掉哪些适合我的测试数据最好的训练数据。 找出一些不错的预处理 训练好的分类算法 建立他们的合奏(堆叠,..)。 具体问题: 关于步骤1:您有使用这种方法的经验吗?假设我对火车样本属于测试的概率(通常低于0.5)进行排序,然后取最大的K概率。您将如何选择K?我尝试使用15K ..但主要是为了在第3步中加快训练速度而设置了一个小的训练数据集。 关于步骤2:数据已经为0,1比例。如果我应用任何(类似于PCA的)线性变换,那么我将打破这一规模。如果您有这样的数值数据并且不知道实际上是什么,那么您将在预处理中尝试什么。 PS:我知道,因为numer.ai付钱给人们讨论这可以帮助我赚钱。但这是公开的,这将对那里的所有人有所帮助... PPS:当今的排行榜有一个有趣的模式:对数损失为0.64xx的前两名,然后是0.66xx的第三名,然后大多数预测指标达到0.6888x。 因此,似乎只有很小的顶尖领域,并且有很多中等成功的人(包括我)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.