机器学习笔记三之模型迭代优化遇上过拟合

学习手册中给的建议是这样的:

  1. 特征选择与删除:分析特征的重要性,可以使用特征选择方法(如基于模型的特征重要性)来选择最具有预测能力的特征,也可以删除一些对模型性能影响较小的特征。

  2. 特征组合与交互:将不同特征进行组合、相乘、相除等操作,创建新的特征,以捕捉特征之间的复杂关系。

  3. 数值型特征的分桶(Binning):将连续的数值型特征划分为多个区间,可以提高模型对特征的鲁棒性。

  4. 类别型特征的编码:除了One-Hot编码外,可以尝试使用其他编码方式,如Label Encoding、Target Encoding等,来更好地处理类别型特征。

  5. 时间特征的挖掘:除了示例中的日期和小时提取,还可以尝试提取星期几、月份等时间信息,可能会影响用户行为。

  6. 特征缩放:对数值型特征进行缩放,将它们映射到一个相似的范围,有助于模型收敛和性能提升。

由于本废物实力有限……:

只搞了特征选择与删除 

 (受上次笔记得到的特征重要性的影响,训练模型时删除了key6-key9特征)

验证精度高了一点点。

然后因为上次笔记里发现加了一大堆特征模型精度验证结果变高,我就浩浩荡荡加了一大堆特征,精度又高了,我狂喜。

(过拟合的伏笔早早埋下惹!)

but由于老是报错有Nan,一开始填充中位数也不行,最后全填充0了。

还搞了下删除离群点

依旧抄的:[数据挖掘与分析]Kaggle实战技巧总结 - 知乎 (zhihu.com)


def detect_outliers(df,n,features):
    
    outlier_indices=[]
    
    #迭代每一个特征
    for col in features:
        #计算四分位数
        Q1=np.percentile(df[col],25)
        Q3=np.percentile(df[col],75)
        #计算IQR Interquartile range 四分位差
        IQR=Q3-Q1
        
        #Outlier Step
        outlier_step=1.5*IQR
        
        #判断每个特征内的离群点
        outlier_index=df[(df[col] > Q3+outlier_step) | (df[col] < Q1-outlier_step)].index
        outlier_indices.extend(outlier_index)
        
    #只有当n个以上的特征出现离群现象时,这个样本点才被判断为离群点
    outlier_dict=Counter(outlier_indices) #统计样本点被判断为离群的次数,并返回一个字典
    outlier_indices=[k for k,v in outlier_dict.items() if v > n]
    
    return outlier_indices

 然后删除了x3,x5的离群点(因为上次笔记箱型图发现x3离群点多,x5重要性高),验证数值又升高了

提交发现分数升到了0.73125

又稍微改了一下到了0.7314

结局:盛极必衰的过拟合和拉跨的最终分数

我就想着把各种特征都删一下异常值

 

验证的精度显著提高,我就狂喜。

结果分数越来越低,又降回了0.69。我不信邪,结果更低了,直接0.64

然后我的三次机会就在徒劳的挣扎中用完了,分数悲伤地停在了0.7314

这时我才意识到模型过拟合了,but为时已晚/(ㄒoㄒ)/~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性回归是一种常见的机器学习算法,它用于预测一个连续的因变量(或称为响应变量)Y,与一个或多个自变量(或称为预测变量)X 相关的值。在线性回归中,我们假设因变量与自变量之间存在线性关系,并通过最小化残差平方和来拟合数据。 一般来说,我们采用梯度下降法(Gradient Descent)来优化线性回归模型的参数,使得残差平方和最小化。梯度下降法是一种基于迭代优化方法,它通过不断调整参数使得目标函数不断逼近最小值。具体来说,梯度下降法的步骤如下: 1. 初始化模型参数,如权重向量 w 和偏置 b。 2. 计算目标函数 J(w,b) 的梯度,即对每个参数求偏导数。 3. 更新模型参数,即按照梯度的反方向调整参数,使得目标函数下降。 4. 重复步骤 2 和 3,直到达到设定的停止条件。 在梯度下降法中,更新参数的公式为: w := w - α * ∂J(w,b)/∂w b := b - α * ∂J(w,b)/∂b 其中,α 表示学习率,用来控制每次更新参数的步长。学习率过大会导致震荡,学习率过小会导致收敛速度缓慢。 对于线性回归问题,我们可以采用批量梯度下降法(Batch Gradient Descent)来更新参数。具体来说,批量梯度下降法每次使用全部的样本来计算梯度,然后更新参数。这样做的好处是可以保证每次更新的方向是整体最优的,但是计算量较大,不适合大规模数据集。 除了批量梯度下降法,还有随机梯度下降法(Stochastic Gradient Descent)和小批量梯度下降法(Mini-batch Gradient Descent)。随机梯度下降法每次只使用一个样本来计算梯度和更新参数,计算量较小,但是更新方向不一定最优。小批量梯度下降法每次使用一部分样本来计算梯度和更新参数,权衡了计算量和更新方向的优劣。 在实际应用中,我们可以根据数据集的大小和计算资源的限制来选择合适的梯度下降法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值