精华内容
下载资源
问答
  • scikit-learn中有非常多的曲线,对于调参非常有用处,我经常用到的曲线是学习曲线,验证曲线以及交叉验证曲线。 使用这些曲线的代码格式非常固定: 返回值 = 曲线名字(模型对象,X, Y, 交叉验证数量,评分标准......

    scikit-learn中有非常多的曲线,对于调参非常有用处,我经常用到的曲线是学习曲线,验证曲线以及交叉验证曲线。

    使用这些曲线的代码格式非常固定:

    返回值 = 曲线名字(模型对象,X, Y, 交叉验证数量,评分标准.....)

    它们只是返回值不同以及其中设置的参数略有不同。

    学习曲线:(learning curve)

    这条曲线的主要作用是观察数据集的大小对于模型性能的影响。

    使用代码如下:

    train_sizes, train_scores, valid_scores = learning_curve(
    SVC(kernel='linear'), X, y, train_sizes=[50, 80, 110], cv=5,scoring='r2')

    其中train_sizes=[50, 80, 110]的意思是选择50个、80个、110个样本数据,还可以[0.1,0.2,1.0]这样设置,这就是按照比例来分割数据的意思。

    验证曲线:(validation curve)

    这条曲线的用处主要是观察超参数对模型带来的影响,为模型选择合适的超参数。

    使用代码如下:

    sklearn.learning_curve.validation_curve(estimatorXyparam_nameparam_rangecv=Nonescoring=Nonen_jobs=1pre_dispatch='all'verbose=0)

    train_scores, valid_scores = validation_curve(Ridge(), X, y, "超参数的名称",                                               np.logspace(-7, 3, 3))

    交叉验证曲线 (cross_val_score)


    from sklearn.cross_validation import cross_val_score

    scores = cross_val_score(knn, X, y, cv=10, scoring='accuracy')

    以上是调节模型参数的三种曲线,使用非常方便。

     

     

    展开全文
  • 学习曲线交叉验证

    2018-06-01 21:08:51
    我们可以通过学习曲线来检测模型是`欠拟合`,`过拟合`还是`刚刚好`。
  • 交叉验证与学习曲线

    千次阅读 2017-11-08 19:49:54
    一、交叉验证 1. 数据集划分: sklearn.cross_validation.KFold(n, n_folds=3, shuffle=False, random_state=None)  参数说明:  n: 要参与到交叉验证中来的元素个数,一般是全选(如下例中5)  n_folds = 3:...

    一、交叉验证

    1. 数据集划分:

    sklearn.cross_validation.KFold(n,n_folds=3,shuffle=False,random_state=None)

     

    参数说明:

     n: 要参与到交叉验证中来的元素个数,一般是全选(如下例中5)

     n_folds = 3: 要分成几堆,也就是K值,默认3,视机器性能进行选择,可选5、7、10等

     shuffle = False: 是否打乱原有顺序呢

     

     代码示例:

     

      输出结果:

    X_train: [[ 7 8],[ 9 10]] y_train: [4 5]
    X_test: [[1 2],[3 4],[5 6]] ytest: [1 2 3]
    X_train: [[1 2],[3 4],[5 6]] y_train: [1 2 3]
    X_test: [[ 7 8],[ 9 10]] ytest: [4 5]


    也可以使用train_test_split,这里的参数很容易理解。

    代码示例及结果:

    2. 交叉验证得分:




    二、学习曲线

    用于判断模型是否过拟合,当模型在训练集上得分很高,但是在交叉验证集上得分很低时,模型过拟合

    若模型未过拟合,可以考虑继续挖掘更多特征

    import numpy as np
    import matplotlib.pyplot as plt
    from sklearn.learning_curve import learning_curve
    
    # 用sklearn的learning_curve得到training_score和cv_score,使用matplotlib画出learning curve
    def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None, n_jobs=1, 
                            train_sizes=np.linspace(.05, 1., 20), verbose=0, plot=True):
        """
        画出data在某模型上的learning curve.
        参数解释
        ----------
        estimator : 你用的分类器。
        title : 表格的标题。
        X : 输入的feature,numpy类型
        y : 输入的target vector
        ylim : tuple格式的(ymin, ymax), 设定图像中纵坐标的最低点和最高点
        cv : 做cross-validation的时候,数据分成的份数,其中一份作为cv集,其余n-1份作为training(默认为3份)
        n_jobs : 并行的的任务数(默认1)
        """
        train_sizes, train_scores, test_scores = learning_curve(
            estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes, verbose=verbose)
    
        train_scores_mean = np.mean(train_scores, axis=1)
        train_scores_std = np.std(train_scores, axis=1)
        test_scores_mean = np.mean(test_scores, axis=1)
        test_scores_std = np.std(test_scores, axis=1)
    
        if plot:
            plt.figure()
            plt.title(title)
            if ylim is not None:
                plt.ylim(*ylim)
            plt.xlabel(u"训练样本数")
            plt.ylabel(u"得分")
            plt.gca().invert_yaxis()
            plt.grid()
    
            plt.fill_between(train_sizes, train_scores_mean - train_scores_std, train_scores_mean + train_scores_std, 
                             alpha=0.1, color="b")
            plt.fill_between(train_sizes, test_scores_mean - test_scores_std, test_scores_mean + test_scores_std, 
                             alpha=0.1, color="r")
            plt.plot(train_sizes, train_scores_mean, 'o-', color="b", label=u"训练集上得分")
            plt.plot(train_sizes, test_scores_mean, 'o-', color="r", label=u"交叉验证集上得分")
    
            plt.legend(loc="best")
    
            plt.draw()
            plt.show()
            plt.gca().invert_yaxis()
    
        midpoint = ((train_scores_mean[-1] + train_scores_std[-1]) + (test_scores_mean[-1] - test_scores_std[-1])) / 2
        diff = (train_scores_mean[-1] + train_scores_std[-1]) - (test_scores_mean[-1] - test_scores_std[-1])
        return midpoint, diff
    
    plot_learning_curve(clf, u"学习曲线", X, y)


    展开全文
  • 关于逻辑回归模型的验证,解释了使用留出法划分数据的不稳定性,以及如何使用n折交叉验证得到AUC值的均值,内含有循环绘制标准ROC曲线的方法。一个模型很重要的是其在新样本的预测能力,因此只在原数据集上回测检验...

    模型的检验

    1.用留出法(80%训练集,20%测试集)拆分数据,用训练集训练逻辑回归模型,并在测试集数据上验证模型的效果(以AUC为标准)。

    一个模型很重要的是其在新样本的预测能力,因此只在原数据集上回测检验模型评估其拟合能力往往是不够的,还需要评估模型的泛化能力,就是评估模型对新样本(测试集)的预测能力。这里使用留出法将数据分为训练集和测试集,将800条数据用来训练模型,并将得到的模型在200条数据的测试集上进行预测,进行模型精度的评价,得到对应的ROC曲线和AUC值。

    #绘制测试集的ROC曲线
    lw = 2
    plt.figure(figsize=(5,5),dpi=200)
    fpr, tpr, thresholds = metrics.roc_curve(y_test, y_prob, pos_label=1)
    auc=round(metrics.roc_auc_score(y_test, y_prob),3)
    plt.plot(fpr, tpr, color='steelblue',lw=lw, label='ROC curve (Area & Auc = %0.2f)' % auc) ###假正率为横坐标,真正率为纵坐标做曲线
    plt.plot([0, 1], [0, 1], color='#8b8b8b', lw=lw, linestyle='--')
    plt.xlim([-0.05, 1.05])
    plt.ylim([-0.05, 1.05])
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    plt.title('ROC_Curve')#Receiver operating characteristic example
    plt.legend(loc="lower right")
    plt.show()
    

    在这里插入图片描述

    如图ROC曲线图,ROC曲线横轴为正确预测的比率(TPR),纵轴为错误预测的比率(FPR)。根据该模型ROC曲线上下的面积,计算模型的AUC值约为0.80,又因在测试集预测得出的结果,可以初步说明该模型在新样本(预测)的预测能力较强,模型的泛化能力较强。但经过多次单独建立模型,发现相同数据得到AUC值并不完全一样,有时0.7有时0.8,可见使用留出法建立模型的AUC值不是特别稳定。使用留出法建立模型的ROC曲线没有在原数据回测模型光滑,一个得到200个预测结果,一个得到1000条预测结果。ROC曲线变得不光滑的原因很可能是测试集样本量变少且模型特征分布不均匀,导致TPR和FPR在不同区间变化不稳定。

    2.用15折交叉验证法拆分数据,每次用训练集训练逻辑回归模型,并在测试集数据上验证模型模型的效果(以AUC为标准)

    在检验模型对新样本(测试集)预测能力的过程中,可以使用n折交叉验证的方法检验模型的过拟合和欠拟合现象。在数据和模型其他变量保持不变的情况下,按照数据的索引划分了十五次训练集和测试集,并单独用各份数据的训练集训练模型并在测试集上进行预测,完成了对该数据集的15折交叉验证,计算每次试验的AUC值后得到下表:

    15折交叉验证AUC: 0.862 0.85 0.846 0.804 0.776 0.774 0.745 0.739 0.731 0.719 0.705 0.659 0.645 0.628

    在该数据集的15折交叉验证中,十五个模型AUC值的均值约为0.7521,模型AUC值的最大值约为0.862,最小值约为0.628,极差为0.234。由于AUC均值和最值有较大出入,可以初步预估AUC值约为0.862的模型很可能存在一定的过拟合现象,AUC值约为0.628的模型很可能存在一定的欠拟合现象。模型经过15折交叉验证所产生AUC值的极差较大,可见该数据集的数据的特征分布不是十分均匀,其训练集和测试集的划分在一定程度上影响该模型的精度AUC值,影响模型对新样本的预测能力,因此需要根据15折交叉验证的结果进行模型的选择或优化,最大程度减少模型的过拟合或欠拟合现象。

    3.将题1和2的结果与TASK5的结果对比并说明。

    使用留出法对数据集进行一次划分得到模型的AUC值约为0.80,而15折交叉验证15次划分数据集得到模型的AUC均值为0.752。15折交叉验证的模型精度低于留出法的模型精度,可以预估题1留出法得到的模型存在一定的过拟合现象。如果以题1数据集划分所建立的模型为后续模型优化和业务结论的基础,就需要处理模型的过拟合现象,使用惩罚项降低模型的复杂程度,降低模型过拟合的可能性。

    为了更好的让留出法所建立模型和15折交叉验证进行对比,在模型的建立上进行进一步分析,在数据和其他变量保持不变的情况下,进一步绘制出15折交叉验证的ROC曲线:

    from sklearn.model_selection import KFold
    k_fold=KFold(n_splits=15)
    i=1
    AUC= []
    plt.figure(figsize=(17,17),dpi=200)
    for train_index, test_index in k_fold.split(data_new):
        logit=sm.Logit(data_new.loc[train_index,'是否按期还款_1'], data_new.loc[train_index,train_cols])
        result=logit.fit()
        y_prob=result.predict(data_new.loc[test_index,train_cols])
        auc=metrics.roc_auc_score(data_new.loc[test_index,'是否按期还款_1'], y_prob)
        plt.subplot(5,5,i)
        fpr, tpr, thresholds = metrics.roc_curve(data_new.loc[test_index,'是否按期还款_1'], y_prob, pos_label=1)
        auc1='AUC:'+str(round(auc,3))
        plt.plot(fpr, tpr,linewidth=2.5) #绘制ROC曲线图
        plt.plot([0, 1], [0, 1], color='#8b8b8b', lw=2, linestyle='--')
        plt.text(x=0.3,y=0.45,s=auc1,fontsize=15)#
        plt.title("第"+str(i)+"次实验的ROC曲线")
        i+=1
        AUC.append(auc)
    plt.show()
    print("经过15折交叉验证,逻辑回归的AUC的均值为:%0.4f"%(sum(AUC)/len(AUC)))
    

    在这里插入图片描述

    图2:15折交叉验证ROC曲线图
    如图2交叉验证ROC曲线图,15折交叉验证中每次试验得到的ROC曲线比留出法模型的ROC曲线更不光滑,一是15折试验是将数据分成了15份每份,每份预测得66个结果少于留出法处理后建模预测得到的200条结果,也因此可以很明显地看出数据集的特征分布不均匀现象,比如第一个红框所指模型很有可能存在过拟合现象,第二个红框很可能存在欠拟合现象。
    图3:5折交叉验证ROC曲线图
    图3:5折交叉验证ROC曲线图
    如5折交叉验证ROC曲线图,留出法建立的模型是将训练集和测试集按照8:2的比例进行分开,也就相当于五折交叉验证中偶然选择了随机的一组数据建模,其AUC值可能是0.8,0.7或0.6。因为数据特征分布不均匀,有的数据训练出来的模型会产生过拟合现象,有的模型会出现欠拟合的现象。再次说明了在该数据集建模的过程中,训练集和测试集的划分在一定程度上影响该模型的精度AUC值,影响模型对新样本的预测能力,也再次说明仅仅是划分一次训练集和测试集的模型是不具有强说服力的,需要根据15折交叉验证的结果对进行模型的选择或优化,就需要使用惩罚项降低模型的拟合程度,降低模型的复杂程度。

    4.模型验证的总结:

    如果所选模型AUC远高于交叉验证得到的均值,存在过拟合现象,就需要使用惩罚项降低模型的拟合程度,降低模型的复杂程度。如果所选模型的AUC远低于交叉验证得到的均值,可以说明模型存在一定的欠拟合现象,可以通过增加模型的迭代次数等方法,增加模型对数据的描述能力。降低模型的过拟合或欠拟合的可能性。最终使得模型的复杂度和模型对数据的描述能力达到均衡,从而提高模型对客户是否按期还款的预测能力,进行客户人群的精准细分。提高模型对互联网征信相关业务问题的解决能力,比如减少预测失败所导致客户流失的可能,降低未按期还款客户的广告成本等等。

    参考文献:
    [1]王聪,韩志,胥仲桥,王丽莎.基于逻辑回归的中小微企业信贷策略研究[J].商讯,2021(02):91-92.

    • 模型和学习笔记系列2_END

    点赞和收藏是周更的动力,真心谢谢!

    欢迎交流和讨论,有偿纠错。

    展开全文
  • k值交叉验证 交叉验证集Cross-Validation also referred to as out of sampling technique is an essential element of a data science project. It is a resampling procedure used to evaluate machine learning ...

    k值交叉验证 交叉验证集

    Cross-Validation also referred to as out of sampling technique is an essential element of a data science project. It is a resampling procedure used to evaluate machine learning models and access how the model will perform for an independent test dataset.

    交叉验证(也称为“过采样”技术)是数据科学项目的基本要素。 它是一种重采样过程,用于评估机器学习模型并访问该模型对独立测试数据集的性能。

    In this article, you can read about 8 different cross-validation techniques having their pros and cons, listed below:

    在本文中,您可以阅读以下大约8种不同的交叉验证技术,各有其优缺点:

    1. Leave p out cross-validation

      省略p交叉验证

    2. Leave one out cross-validation

      留出一个交叉验证

    3. Holdout cross-validation

      保持交叉验证

    4. Repeated random subsampling validation

      重复随机二次抽样验证

    5. k-fold cross-validation

      k折交叉验证

    6. Stratified k-fold cross-validation

      分层k折交叉验证

    7. Time Series cross-validation

      时间序列交叉验证

    8. Nested cross-validation

      嵌套交叉验证

    Before coming to cross-validation techniques let us know why cross-validation should be used in a data science project.

    在介绍交叉验证技术之前,让我们知道为什么在数据科学项目中应使用交叉验证。

    为什么交叉验证很重要? (Why Cross-Validation is Important?)

    We often randomly split the dataset into train data and test data to develop a machine learning model. The training data is used to train the ML model and the same model is tested on independent testing data to evaluate the performance of the model.

    我们经常将数据集随机分为训练数据和测试数据,以开发机器学习模型。 训练数据用于训练ML模型,同一模型在独立的测试数据上进行测试以评估模型的性能。

    With the change in the random state of the split, the accuracy of the model also changes, so we are not able to achieve a fixed accuracy for the model. The testing data should be kept independent of the training data so that no data leakage occurs. During the development of an ML model using the training data, the model performance needs to be evaluated. Here’s the importance of cross-validation data comes into the picture.

    随着分裂随机状态的变化,模型的准确性也会发生变化,因此我们无法为模型获得固定的准确性。 测试数据应与训练数据无关,以免发生数据泄漏。 在使用训练数据开发ML模型的过程中,需要评估模型的性能。 这就是交叉验证数据的重要性。

    Data needs to split into:

    数据需要分为:

    • Training data: Used for model development

      训练数据:用于模型开发

    • Validation data: Used for validating the performance of the same model

      验证数据:用于验证相同模型的性能

    Image for post
    (Image by Author), Validation split
    (作者提供的图像),验证拆分

    In simple terms cross-validation allows us to utilize our data even better. You can further read, working, and implementation of 7 types of Cross-Validation techniques.

    简单来说,交叉验证使我们可以更好地利用我们的数据。 您可以进一步阅读,使用和实施7种类型的交叉验证技术。

    1.保留p-out交叉验证: (1. Leave p-out cross-validation:)

    Leave p-out cross-validation (LpOCV) is an exhaustive cross-validation technique, that involves using p-observation as validation data, and remaining data is used to train the model. This is repeated in all ways to cut the original sample on a validation set of p observations and a training set.

    离开p-out交叉验证(LpOCV)是一种详尽的交叉验证技术,涉及使用p观测作为验证数据,而其余数据则用于训练模型。 以所有方式重复此步骤,以在p个观察值的验证集和一个训练集上切割原始样本。

    A variant of LpOCV with p=2 known as leave-pair-out cross-validation has been recommended as a nearly unbiased method for estimating the area under ROC curve of a binary classifier.

    已推荐使用p = 2的LpOCV变体(称为休假配对交叉验证)作为估计二进制分类器ROC曲线下面积的几乎无偏的方法。

    2.一劳永逸的交叉验证: (2. Leave-one-out cross-validation:)

    Leave-one-out cross-validation (LOOCV) is an exhaustive cross-validation technique. It is a category of LpOCV with the case of p=1.

    留一法交叉验证(LOOCV)是一种详尽的交叉验证技术。 在p = 1的情况下,它是LpOCV的类别。

    Image for post
    Source), LOOCV operations来源 ),LOOCV操作

    For a dataset having n rows, 1st row is selected for validation, and the rest (n-1) rows are used to train the model. For the next iteration, the 2nd row is selected for validation and rest to train the model. Similarly, the process is repeated until n steps or the desired number of operations.

    对于具有n行的数据集,选择第一行进行验证,其余(n-1)行用于训练模型。 对于下一次迭代,选择第二行进行验证,然后休息以训练模型。 类似地,重复该过程,直到n个步骤或所需的操作数。

    Both the above two cross-validation techniques are the types of exhaustive cross-validation. Exhaustive cross-validation methods are cross-validation methods that learn and test in all possible ways. They have the same pros and cons discussed below:

    以上两种交叉验证技术都是穷举性交叉验证的类型。 详尽的交叉验证方法是以各种可能的方式学习和测试的交叉验证方法。 它们具有以下讨论的优点和缺点:

    优点: (Pros:)

    1. Simple, easy to understand, and implement.

      简单,易于理解和实施。

    缺点: (Cons:)

    1. The model may lead to a low bias.

      该模型可能会导致较低的偏差。
    2. The computation time required is high.

      所需的计算时间长。

    3.保留交叉验证: (3. Holdout cross-validation:)

    The holdout technique is an exhaustive cross-validation method, that randomly splits the dataset into train and test data depending on data analysis.

    保持技术是一种详尽的交叉验证方法,该方法根据数据分析将数据集随机分为训练数据和测试数据。

    Image for post
    (Image by Author), 70:30 split of Data into training and validation data respectively
    (作者提供的图片),70:30将数据分别分为训练和验证数据

    In the case of holdout cross-validation, the dataset is randomly split into training and validation data. Generally, the split of training data is more than test data. The training data is used to induce the model and validation data is evaluates the performance of the model.

    在保持交叉验证的情况下,数据集被随机分为训练和验证数据。 通常,训练数据的分割不仅仅是测试数据。 训练数据用于推导模型,而验证数据用于评估模型的性能。

    The more data is used to train the model, the better the model is. For the holdout cross-validation method, a good amount of data is isolated from training.

    用于训练模型的数据越多,模型越好。 对于保持交叉验证方法,需要从训练中隔离大量数据。

    优点: (Pros:)

    1. Same as previous.

      和以前一样。

    缺点: (Cons:)

    1. Not suitable for an imbalanced dataset.

      不适合不平衡数据集。
    2. A lot of data is isolated from training the model.

      许多数据与训练模型隔离。

    4. k折交叉验证: (4. k-fold cross-validation:)

    In k-fold cross-validation, the original dataset is equally partitioned into k subparts or folds. Out of the k-folds or groups, for each iteration, one group is selected as validation data, and the remaining (k-1) groups are selected as training data.

    在k倍交叉验证中,原始数据集被平均分为k个子部分或折叠。 从k折或组中,对于每次迭代,选择一组作为验证数据,其余(k-1)个组选择为训练数据。

    Image for post
    Source), k-fold cross-validation来源 ),k折交叉验证

    The process is repeated for k times until each group is treated as validation and remaining as training data.

    该过程重复k次,直到将每个组视为验证并保留为训练数据为止。

    Image for post
    (Image by Author), k-fold cross-validation
    (作者提供的图片),k倍交叉验证

    The final accuracy of the model is computed by taking the mean accuracy of the k-models validation data.

    模型的最终精度是通过获取k模型验证数据的平均精度来计算的。

    Image for post

    LOOCV is a variant of k-fold cross-validation where k=n.

    LOOCV是k倍交叉验证的变体,其中k = n。

    优点: (Pros:)

    1. The model has low bias

      该模型偏差低
    2. Low time complexity

      时间复杂度低
    3. The entire dataset is utilized for both training and validation.

      整个数据集可用于训练和验证。

    缺点: (Cons:)

    1. Not suitable for an imbalanced dataset.

      不适合不平衡数据集。

    5.重复随机二次抽样验证: (5. Repeated random subsampling validation:)

    Repeated random subsampling validation also referred to as Monte Carlo cross-validation splits the dataset randomly into training and validation. Unlikely k-fold cross-validation split of the dataset into not in groups or folds but splits in this case in random.

    重复的随机子采样验证(也称为蒙特卡洛交叉验证)将数据集随机分为训练和验证。 数据集的k倍交叉验证不太可能分成几类,而不是成组或成对,而是在这种情况下随机地成组。

    The number of iterations is not fixed and decided by analysis. The results are then averaged over the splits.

    迭代次数不是固定的,而是由分析决定的。 然后将结果平均化。

    Image for post
    (Image by Author), Repeated random subsampling validation
    (作者提供的图片),重复随机子采样验证
    Image for post

    优点: (Pros:)

    1. The proportion of train and validation splits is not dependent on the number of iterations or partitions.

      训练和验证拆分的比例不取决于迭代或分区的数量。

    缺点: (Cons:)

    1. Some samples may not be selected for either training or validation.

      某些样本可能无法选择用于训练或验证。
    2. Not suitable for an imbalanced dataset.

      不适合不平衡数据集。

    6.分层k折交叉验证: (6. Stratified k-fold cross-validation:)

    For all the cross-validation techniques discussed above, they may not work well with an imbalanced dataset. Stratified k-fold cross-validation solved the problem of an imbalanced dataset.

    对于上面讨论的所有交叉验证技术,它们可能不适用于不平衡的数据集。 分层k折交叉验证解决了数据集不平衡的问题。

    In Stratified k-fold cross-validation, the dataset is partitioned into k groups or folds such that the validation data has an equal number of instances of target class label. This ensures that one particular class is not over present in the validation or train data especially when the dataset is imbalanced.

    在分层k倍交叉验证中,数据集被划分为k个组或折叠,以使验证数据具有相等数量的目标类标签实例。 这样可以确保在验证或训练数据中不会出现一个特定的类,尤其是在数据集不平衡时。

    Image for post
    (Image by Author), Stratified k-fold cross-validation, Each fold has equal instances of the target class
    (作者提供的图片),分层k折交叉验证,每折具有相等的目标类实例

    The final score is computed by taking the mean of scores of each fold.

    最终分数是通过取各折分数的平均值来计算的。

    优点: (Pros:)

    1. Works well for an imbalanced dataset.

      对于不平衡的数据集,效果很好。

    缺点: (Cons:)

    1. Now suitable for time series dataset.

      现在适合时间序列数据集。

    7.时间序列交叉验证: (7. Time Series cross-validation:)

    The order of the data is very important for time-series related problem. For time-related dataset random split or k-fold split of data into train and validation may not yield good results.

    数据的顺序对于与时间序列相关的问题非常重要。 对于与时间相关的数据集,将数据随机拆分或k倍拆分为训练和验证可能不会产生良好的结果。

    For the time-series dataset, the split of data into train and validation is according to the time also referred to as forward chaining method or rolling cross-validation. For a particular iteration, the next instance of train data can be treated as validation data.

    对于时间序列数据集,根据时间将数据分为训练和验证,也称为前向链接方法滚动交叉验证 。 对于特定的迭代,可以将火车数据的下一个实例视为验证数据。

    Image for post
    (Image by Author), Time Series cross-validation
    (作者提供的图像),时间序列交叉验证

    As mentioned in the above diagram, for the 1st iteration, 1st 3 rows are considered as train data and the next instance T4 is validation data. The chance of choice of train and validation data is forwarded for further iterations.

    如上图所述,对于第一个迭代,第一个3行被视为训练数据,下一个实例T4是验证数据。 选择训练和验证数据的机会将被进一步迭代。

    8.嵌套交叉验证: (8. Nested cross-validation:)

    In the case of k-fold and stratified k-fold cross-validation, we get a poor estimate of the error in training and test data. Hyperparameter tuning is done separately in the earlier methods. When cross-validation is used simultaneously for tuning the hyperparameters and generalizing the error estimate, nested cross-validation is required.

    在进行k折和分层k折交叉验证的情况下,我们对训练和测试数据中的错误估计差。 超参数调整是在较早的方法中单独完成的。 当交叉验证同时用于调整超参数和泛化误差估计时,需要嵌套交叉验证。

    Nested Cross Validation can be applicable in both k-fold and stratified k-fold variants. Read the below article to know more about nested cross-validation and its implementation:

    嵌套交叉验证可同时应用于k折和分层k折变体。 阅读以下文章,以了解有关嵌套交叉验证及其实现的更多信息:

    结论: (Conclusion:)

    Cross-validation is used to compare and evaluate the performance of ML models. In this article, we have covered 8 cross-validation techniques along with their pros and cons. k-fold and stratified k-fold cross-validations are the most used techniques. Time series cross-validation works best with time series related problems.

    交叉验证用于比较和评估ML模型的性能。 在本文中,我们介绍了8种交叉验证技术及其优缺点。 k折和分层k折交叉验证是最常用的技术。 时间序列交叉验证最适合与时间序列相关的问题。

    Implementation of these cross-validations can be found out in the sklearn package. Read this sklearn documentation for more details.

    这些交叉验证的实现可以在sklearn包中找到。 阅读此sklearn文档以获取更多详细信息。

    翻译自: https://towardsdatascience.com/understanding-8-types-of-cross-validation-80c935a4976d

    k值交叉验证 交叉验证集

    展开全文
  • 多线程 n_jobs,默认三次交叉验证 scores.append(np.mean(this_scores)) scores_std.append(np.std(this_scores)) plt.figure( 1, figsize=(4, 3)) # 绘图 plt.clf() plt.semilogx(c_S, scores) # ...
  • R语言逻辑回归、ROC曲线和十折交叉验证

    万次阅读 多人点赞 2017-02-27 15:49:35
    #构建for循环,得10次交叉验证的测试集精确度、训练集精确度 max=0 num=0 for(i in 1:10){ fold_test [folds[[i]],] #取folds[[i]]作为测试集 fold_train [-folds[[i]],] # 剩下的数据作为训练集 print("**...
  • 评估指标【交叉验证&ROC曲线

    千次阅读 2018-09-10 16:20:00
    1 # -*- coding: utf-8 -*- ...总结:正向准确率和召回率在整体上成反比,可知在使用相同数据集,相同验证方式的情况下,随机森林要优于随机梯度下降! 转载于:https://www.cnblogs.com/yszd/p/9620516.html
  • 交叉验证分析每一折(fold of Kfold)验证数据的评估指标并绘制综合ROC曲线 Receiver Operating Characteristic (ROC) with cross validation 使用交叉验证评价分类器输出质量的接收机工作特征(ROC)度量示例。 ...
  • 交叉验证 获得的预测。 predicted = cross_val_predict(lr, boston.data, y, cv=10) 第四步 Matplotlib能够把很多张图画到一个显示界面,这通过把绘图面板分割成若干个子图来实现。 使用Matplotlib的函数 ...
  • 机器学习的学习曲线和验证曲线

    千次阅读 2019-01-14 17:16:03
    最近在复盘优达学城的机器学习项目, 重新写了一下波斯顿放假预测的项目,除了模型的选择及网格搜索进行选择参数的相关知识外,还着重复习了关于学习曲线和复杂度曲线(验证曲线)  首先学习曲线和复杂度曲线...
  • 多项式回归就是数据的分布不满足线性关系,而是二次曲线或者更高维度的曲线。此时只能使用多项式回归来拟合曲线。比如如下数据,使用线性函数来拟合就明显不合适了。 接下来要做的就是升维,上面的真实函数是:$ y...
  • 10 交叉验证3

    2017-07-02 12:02:33
    介绍连续三节的交叉验证(cross validation)让我们知道在机器学习中验证是有多么的重要, 这一次的 sklearn 中我们用到了sklearn.learning_curve当中的另外一种, 叫做validation_curve,用这一种曲线我们就能更加直观
  • 【机器学习】学习曲线和验证曲线

    千次阅读 2018-02-05 10:30:26
    提高学习算法性能的简单但功能强大的判定工具:学习曲线,验证曲线 学习曲线 学习曲线能判定偏差和方差问题   高偏差与高方差: 以上模型应用于训练和交叉验证准确率很低,此模型未能很好打的拟合...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,329
精华内容 6,531
关键字:

交叉验证曲线