跳到主内容
研究主线模型诊断与稳定性 · 第14–19讲6/6 · 配套练习模块导览 →
练习

第19讲:过拟合的危险 (The Dangers of Overfitting) · 练习

诊断多项式模型的样本内外误差,比较多因子正则化结果,并检查时间切分、特征数量与系数稳定性。

← 返回本讲讲义
完成状态保存在当前浏览器,可随时取消。

多项式回归过拟合诊断#

问题

使用yfinance获取微软(MSFT)2022年日频收盘价数据,完成以下任务:

  1. 将时间序列转换为特征矩阵(时间戳数值化处理)

  2. 拟合3次和9次多项式回归模型预测股价

  3. 绘制学习曲线分析模型过拟合情况

  4. 计算两个模型的样本外MAPE误差(向前预测10天)

Python答题框架

code
import yfinance as yf
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import mean_absolute_percentage_error

# 数据获取与处理
msft = yf.download(...)[...]
dates = (...)
prices = (...)

# 划分训练集和测试集
split_idx = int(len(dates)*0.8)
X_train, X_test = (...)
y_train, y_test = (...)

# 多项式特征转换
poly3 = PolynomialFeatures(degree=3)
X_poly3 = poly3.fit_transform(...)
poly9 = PolynomialFeatures(degree=9)
X_poly9 = poly9.fit_transform(...)

# 模型训练
model3 = LinearRegression().fit(...)
model9 = (...)

正则化效果对比#

问题

使用标普500成分股中10只科技股2023年数据(AAPL/MSFT/GOOG等):

  1. 以SPY收益率为基准,构建个股收益率的多因子模型

  2. 分别使用OLS、Ridge、Lasso回归拟合模型

  3. 比较三种方法在训练集和测试集的R²差异

  4. 可视化各模型系数绝对值大小

Python答题框架

code
from sklearn.linear_model import Ridge, Lasso

# 获取多资产数据
symbols = ['AAPL','MSFT','GOOG','SPY',...]
data = yf.download(...)[...]
returns = (...)

# 设置特征和标签
X = (...)
y = (...)

# 划分数据集
X_train, X_test, y_train, y_test = (...)

# 模型训练
models = {
    'OLS': LinearRegression(),
    'Ridge': Ridge(alpha=0.5),
    'Lasso': Lasso(alpha=0.1)
}

for name, model in models.items():
    ...

# 系数对比可视化
...

数据示例说明

多因子模型输入矩阵示例:

DateSPY_retAAPL_retMSFT_ret...
2023-01-030.0120.018-0.005...
2023-01-04-0.0070.0030.011...

正则化模型系数输出示例:

股票代码OLS系数Ridge系数Lasso系数
AAPL1.321.280.95
MSFT0.870.830.00

提示:Lasso回归会产生稀疏解,注意设置合适的alpha参数

完成练习后,自评一次

建议先独立作答,再展开参考答案进行核对。

模块收束 · 0/6 已完成

把知识收束成可复核的研究产物

完成后应该能够

  • 能够使用残差和稳定性检查拒绝不可靠模型
  • 能够设计时间顺序正确的样本外验证

交付物

  • 一份模型诊断报告,包含残差、稳定性和样本外结果

本模块已有 0/6 个主要学习单元完成。 本模块没有待复习项。