Datawhale 零基础入门数据挖掘-Task4 建模调参

Datawhale 零基础入门数据挖掘-Task4 建模调参

这一部分主要讲的是调参的,调参有几个比较重要的模型:

线性回归模型

https://zhuanlan.zhihu.com/p/49480391

决策树模型

https://zhuanlan.zhihu.com/p/65304798

GBDT模型

https://zhuanlan.zhihu.com/p/45145899

XGBoost模型

https://zhuanlan.zhihu.com/p/86816771

LightGBM模型

https://zhuanlan.zhihu.com/p/89360721

相关内容有

线性回归模型:

线性回归对于特征的要求;

处理长尾分布;

理解线性回归模型;

模型性能验证:

评价函数与目标函数;

交叉验证方法;

留一验证方法;

针对时间序列问题的验证;

绘制学习率曲线;

绘制验证曲线;

嵌入式特征选择:

Lasso回归;

Ridge回归;

决策树;

模型对比:

常用线性模型;

常用非线性模型;

模型调参:

贪心调参方法;

网格调参方法;

贝叶斯调参方法;

主要收获:

调整数据类型的算法:

def reduce_mem_usage(df):

    """ iterate through all the columns of a dataframe and modify the data type

        to reduce memory usage.       

    """

    start_mem = df.memory_usage().sum()

    print('Memory usage of dataframe is {:.2f} MB'.format(start_mem))


    for col in df.columns:

        col_type = df[col].dtype


        if col_type != object:

            c_min = df[col].min()

            c_max = df[col].max()

            if str(col_type)[:3] == 'int':

                if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:

                    df[col] = df[col].astype(np.int8)

                elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:

                    df[col] = df[col].astype(np.int16)

                elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:

                    df[col] = df[col].astype(np.int32)

                elif c_min > np.iinfo(np.int64).min and c_max < np.iinfo(np.int64).max:

                    df[col] = df[col].astype(np.int64) 

            else:

                if c_min > np.finfo(np.float16).min and c_max < np.finfo(np.float16).max:

                    df[col] = df[col].astype(np.float16)

                elif c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:

                    df[col] = df[col].astype(np.float32)

                else:

                    df[col] = df[col].astype(np.float64)

        else:

            df[col] = df[col].astype('category')

    end_mem = df.memory_usage().sum()

    print('Memory usage after optimization is: {:.2f} MB'.format(end_mem))

    print('Decreased by {:.1f}%'.format(100 * (start_mem - end_mem) / start_mem))

    return df

对数据的处理,

文中对标签进行了 log(x+1)变换,使标签贴近于正态分布,这点我觉得尤其巧妙。对于将数据正态化的处理。除了利用中心极限定理,还有对数化的特别处理。

交叉验证(Cross Validation)

之前学过,是寻找参数的好方法。

在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别。而嵌入式特征选择在学习器训练过程中自动地进行特征选择。嵌入式选择最常用的是L1正则化与L2正则化。在对线性回归模型加入两种正则化方法后,他们分别变成了岭回归与Lasso回归。

模型调参

在此我们介绍了三种常用的调参方法如下:

贪心算法 https://www.jianshu.com/p/ab89df9759c8

网格调参 https://blog.csdn.net/weixin_43172660/article/details/83032029

贝叶斯调参 https://blog.csdn.net/linxid/article/details/81189154

你可能感兴趣的:(Datawhale 零基础入门数据挖掘-Task4 建模调参)