在搭建模型的过程中,我们往往会从已知的特征中提取更多新的特征,并以此搭建更为复杂的模型,但是模型越复杂,越会值其本身掉入不断“自我催眠,强化偏见”的过程,从而引起过度拟合的问题。如果将毫不相关的变量加入到模型中,也会得到相应的参数估计值,而这个估计值几乎不可能为0,这就造成了所谓的“模型幻觉”。模型幻觉会引起模型参数的不可靠,更严重的是使得原本可能较为正确的估计扭曲为错误,比如将原来变量的正效应估计为负效应(变量对应的参数为正时成为正效应,否则为负效应)。
import statsmodels.api as sm
import numpy as np
import pandas as pd
def generateData():
"""
生成模型数据
"""
np.random.seed(5320)
x = np.array(range(0,20))/2
error = np.round(np.random.randn(20),2)
y = 0.05*x +error
#新加入无关变量z恒等于1
z = np.zeros(20) + 1
return pd.DataFrame({"x":x,"z":z,"y":y})
def wrongCoef():
"""
由于新变量的加入,正效应为负效应
"""
features = ["x","z"]
labels = ["y"]
data = generateData()
X = data[features]
Y