训练集验证集组间差异

请问做logistic死亡预测模型,数据量共8万,按7:3分为训练集和验证集,卡方检验显示p值小于0.05,基线资料有差异怎么办?

  • 这篇文章:种群数量变化模型logistic模型的种群数量函数 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: 机器学习 利用Logistic回归解决审计风险分类问题中的 5.3 改进的随机梯度上升算法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 
    #改进的随机梯度上升算法
    def stocGradAscent1(dataMatIn, classLabels, numIter=150):
        #迭代次数若未给定,则默认迭代150次
        dataMatrix = array(dataMatIn)
        m,n = shape(dataMatrix)
        weights = ones(n)
        for j in range(numIter):
            dataIndex = list(range(m))
            for i in range(m):
                # alpha每次迭代时需要调整
                alpha = 4/(1.0+j+i)+0.0001
                #随机选取样本更新回归系数
                # uniform() 方法将随机生成下一个实数,它在[0,len(dataIndex)]范围内
                randIndex = int(random.uniform(0,len(dataIndex)))
                h = sigmoid(sum(dataMatrix[randIndex]*weights))
                error = classLabels[randIndex] - h       #计算误差
                weights = weights + alpha * error * dataMatrix[randIndex]
                # 删除已使用的样本
                del(dataIndex[randIndex])
        return weights

    上面的改进版随机梯度上升算法,我们修改了两处代码。

    第一处改进为 alpha 的值。alpha 在每次迭代的时候都会调整,这回缓解上面波动图的数据波动或者高频波动。另外,虽然 alpha 会随着迭代次数不断减少,但永远不会减小到 0,因为我们在计算公式中添加了一个常数项。

    这里利用随机梯度下降解释这样优化alpha的原因:

     在最开始时梯度较大,步长alpha可以比较大,但梯度是呈现逐渐减小趋势的,这时离最优值也越来越近,步长alpha也要随之减小。如果下降速率很大,在接近最优点时,梯度乘以了一个数值比较大的alpha,就会出现下图这类情况。

    例如从点1直接跳到了点2,开始震荡,上述迭代次数与回归系数关系图中的较大震荡产生的原因,而上述对步长alpha的优化即可避免这类情况,虽然举例用的是梯度下降,但梯度上升和梯度下降的原理是一致的。

    第二处修改为 randIndex 更新,这里通过随机选取样本拉来更新回归系数。这种方法将减少周期性的波动。这种方法每次随机从列表中选出一个值,然后从列表中删掉该值(再进行下一次迭代)。

    拟合结果:

     拟合出和第一种差不多的效果,但使用的计算量更少,主要是因为随机机制避免周期性波动;stocGradAscent1()收敛更快。这次仅对数据集做了m(m=100)次遍历,而之前的方法是500次。

  • 您还可以看一下 CSDN就业班老师的第三章:Logistic回归模型课程中的 牛顿法小节, 巩固相关知识点