1. 线性模型概述1.1 sklearn总览机器学习的关键任务是【监督学习】和【无监督学习】针对前者sklearn提供了【分类】和【回归】的两类算法。2. 全部线性模型2. 1 线性模型逻辑与使用场景下面是给出的模型名称应用场景以及适用情况引用代码序号模型名称核心逻辑与适用场景金融 / 经济学视角Sklearn 导入代码1.1.1普通最小二乘法 OLS最小化残差平方和无正则标准计量线性回归用于多因子收益预测缺陷多重共线性、过拟合时系数失真from sklearn.linear_model import LinearRegression1.1.2脊回归 RidgeOLSL2 正则对大系数施加惩罚收缩系数解决自变量多重共线性适合高维金融因子保留全部变量from sklearn.linear_model import Ridge, RidgeClassifier1.1.3套索 LassoOLSL1 正则可将不重要变量系数压缩至 0实现自动因子筛选适合海量因子降维精简回归模型from sklearn.linear_model import Lasso1.1.4多任务套索 MultiTaskLasso多输出联合 L1 正则多个因变量同步训练共享稀疏特征例如同时预测多只股票收益率from sklearn.linear_model import MultiTaskLasso1.1.5弹性网 ElasticNetL1L2 混合正则兼顾 Lasso 变量筛选与 Ridge 系数平滑因子高度相关、样本少于特征时效果最优from sklearn.linear_model import ElasticNet1.1.6多任务弹性网 MultiTaskElasticNet多输出任务的弹性网多目标回归共享稀疏因子适合面板多资产同步建模from sklearn.linear_model import MultiTaskElasticNet1.1.7最小角度回归 LARS逐次选取与残差相关性最高的特征高效求解 Lasso 路径快速遍历全部正则强度批量调参from sklearn.linear_model import Lars1.1.8拉尔斯套索 LassoLars基于 LARS 算法求解 Lasso快速生成完整正则化路径适合批量筛选金融因子from sklearn.linear_model import LassoLars1.1.9正交匹配追踪 OMP贪心稀疏回归迭代选择最优正交特征逼近目标高维稀疏数据快速近似 L1 解算力开销更低from sklearn.linear_model import OrthogonalMatchingPursuit1.1.10贝叶斯回归 BayesianRidge贝叶斯视角岭回归自动估计正则强度输出系数后验分布可得到参数置信区间适配计量推断from sklearn.linear_model import BayesianRidge1.1.11逻辑回归 LogisticRegression线性分类模型Sigmoid 映射概率金融二分类涨跌预测、信贷违约、风险识别from sklearn.linear_model import LogisticRegression1.1.12广义线性模型 GLM放宽 OLS 正态残差假设支持泊松 / 二项 / 伽马分布计数型因变量交易量、违约次数建模from sklearn.linear_model import PoissonRegressor, GammaRegressor, TweedieRegressor1.1.13随机梯度下降 SGD随机小批量梯度下降优化线性损失支持 L1/L2 / 弹性网正则超大样本百万级行情数据加速训练from sklearn.linear_model import SGDRegressor, SGDClassifier1.1.14鲁棒性回归 HuberRegressor/RANSAC损失函数对异常值不敏感降低极端行情离群样本干扰处理财报异常值、极端涨跌噪声数据from sklearn.linear_model import HuberRegressor, RANSACRegressor1.1.15分位数回归 QuantileRegressor拟合指定分位数的线性关系不依赖均值刻画收益尾部风险、极端收益因子效应from sklearn.linear_model import QuantileRegressor1.1.16多项式回归 PolynomialFeatures通过基函数构造高次特征将非线性关系转为线性捕捉因子非线性溢价如市值非线性收益from sklearn.preprocessing import PolynomialFeaturesfrom sklearn.linear_model import LinearRegression2.2 线性模型内容解释模型名称详细解释内容Ridge1. 核心机制在普通最小二乘 OLS 损失基础上增加L2 正则惩罚项损失函数Loss∑(y−y^)2α∑βi22. 作用原理对所有回归系数的平方施加惩罚压缩大系数、平滑参数不会将系数压缩至 03. 金融 / 计量场景解决自变量多重共线性问题高维因子建模时保留全部特征稳定系数估计值Lasso1. 核心机制引入L1 正则化2. 作用原理L1 惩罚会将无关特征的系数直接压缩为 0天然实现自动因子筛选得到稀疏模型3. 适用场景海量候选因子降维快速剔除无解释力的经济 / 金融指标精简回归模型MultiTaskLasso1. 基于 L1 正则的多输出回归模型支持同时拟合多个因变量多任务2. 核心特性所有任务共享同一套稀疏特征同步筛选对全部目标变量有效的自变量3. 量化实例同时预测多只股票的收益率、同时对多行业营收做回归减少重复特征筛选成本ElasticNet1. L1L2 混合正则化融合 Ridge 与 Lasso 优势2. 特性既可以实现 L1 的自动因子筛选又通过 L2 缓解自变量高度相关时 Lasso 系数波动剧烈的问题3. 适配场景特征数量远大于样本、因子间存在强相关性的高维金融数据集MultiTaskElasticNet1. 多任务版本的弹性网同时处理多个回归目标2. 核心特性多任务共享稀疏特征结构同时搭载 L1L2 双重正则约束3. 优势相比 MultiTaskLasso能解决多任务下自变量多重共线性导致的系数不稳定问题兼顾多目标同步建模、特征稀疏筛选、系数平滑三大需求4. 应用面板数据多指标同步预测、多资产收益联合建模LARS最小角度回归## 一、算法逻辑逐次迭代选取与当前残差相关性最高的特征进入模型每一步调整系数使新增特征与旧特征和残差夹角相等无需反复求解完整回归## 二、数学逻辑1. 初始残差等于因变量所有特征系数置 02. 计算全部自变量与残差的相关系数挑选相关性最大的特征加入活跃集3. 沿最小角度方向同步更新所有活跃特征系数直到下一个特征与残差相关性持平将其纳入活跃集4. 重复迭代直至所有特征入模或达到收敛条件##三、用途快速生成完整正则化路径批量遍历不同惩罚强度下的稀疏因子组合OMP正交匹配追踪1. 定位贪心算法实现稀疏回归轻量化近似 L1 求解2. 运行逻辑① 初始化残差 原始因变量空特征集② 遍历所有自变量选出与残差内积最大的特征加入集合③ 对当前选中特征做最小二乘拟合重新计算正交化残差④ 重复步骤②③直至达到预设特征数量或残差阈值3. 优势计算速度远快于 Lasso/LARS适合超高维稀疏经济数据快速粗筛因子BayesianRidge贝叶斯岭回归1. 贝叶斯视角下的岭回归不再把正则系数α设为人工超参而是将回归系数、噪声方差、正则强度全部视作随机变量2. 核心特性依靠贝叶斯后验分布自动估计最优正则强度无需网格搜索调参3. 计量优势输出回归系数完整后验分布可直接得到参数置信区间满足经济学统计推断需求天然自带 L2 收缩效果抑制多重共线性LogisticRegression逻辑回归1. 线性分类模型底层线性得分通过Sigmoid 函数映射至 0~1 概率区间σ(z)1e−z1,zXβ2. 损失采用对数似然损失用于二分类任务3. 金融 / 经济场景信贷违约预测、股票涨跌二分类、风险事件判别、用户信用评级GLM广义线性模型1. 核心突破放宽 OLS 必须满足的正态分布残差假设由三部分构成线性预测项、连接函数、指数族分布2. 支持分布泊松分布计数数据交易量、违约次数、二项分布0-1 分类、伽马分布右偏连续数据营收、损失金额、Tweedie 复合分布3. 适用不符合正态分布的经济计数、偏态金融损失数据建模SGD随机梯度下降1. 优化逻辑不使用全量样本计算梯度随机抽取小批量样本迭代更新参数降低计算与内存开销2. 灵活度损失支持回归 / 分类同时兼容 L1、L2、弹性网三种正则约束3. 适用场景百万级海量行情、高频交易数据等超大样本数据集加速线性模型训练QuantileRegressor分位数回归1. 区别于 OLS 拟合均值该模型可自定义拟合 0~1 之间任意分位数的线性关系2. 核心特点损失为分位数损失不依赖残差正态、同方差假设专注刻画变量对不同分位数目标的影响3. 金融价值分析资产收益尾部风险、极端高低收益下因子的差异化作用研究经济变量的异质性影响PolynomialFeatures多项式特征1. 核心原理通过多项式基函数对原始自变量做升维变换生成一次、二次、高次交互特征例输入x1,x2二阶变换得到1,x1,x2,x12,x22,x1x22. 建模思路原始变量与因变量存在非线性关系时构造高次特征后送入线性模型将非线性拟合转化为线性回归任务3. 应用捕捉市值、利率等经济因子的非线性溢价效应2.3 重要的线性模型注意到一些方法在适用范围上和逻辑上可以覆盖其他一些模型虽然在机器学习中不同的模型均有其存在的价值和意义简单的模型在时间复杂度和直观性上可能存在优势但为了更强的适用性这里提炼了一下模型而不是简单的使用OLS。高阶模型名称统一核心解释 覆盖哪些基础模型ElasticNet弹性网全能正则回归1. 同时融合 L1L2 正则调整超参可单独等价 Ridge仅 L2、单独等价 Lasso仅 L1一套代码覆盖两种正则2. 解决 Lasso 在特征高度相关时系数不稳定、Ridge 无法自动筛因子的双重缺陷3. 衍生多任务版本 MultiTaskElasticNet可拓展至多输出面板回归覆盖 MultiTaskLasso。SGDRegressor / SGDClassifier随机梯度下降通用线性优化框架1. 损失函数可选回归 / 分类正则参数支持 L1、L2、弹性网可模拟 OLS、Ridge、Lasso、ElasticNet 全部效果2. 基于小批量梯度下降适配百万级海量行情数据传统闭式求解模型OLS/LARS无法处理超大样本3. 分类场景直接替代 LogisticRegression一套框架搞定线性回归 线性分类。BayesianRidge贝叶斯岭回归无人工调参的通用线性推断模型1. 贝叶斯框架自动学习最优 L2 正则强度不用网格搜索调 alpha覆盖传统 Ridge 全部功能2. 输出系数后验分布、置信区间计量经济学推断能力远超普通 OLS/Ridge3. 天然抑制多重共线性小样本实证效果优于传统正则模型。GLM广义线性模型 TweedieRegressor突破 OLS 分布限制的通用线性范式1. OLS 只是 GLM 中「高斯分布 恒等连接」的特殊子集2. 通过切换指数分布族与连接函数统一实现OLS 正态回归、泊松计数回归、伽马损失回归、二分类逻辑回归3. 适配各类非正态经济数据交易量、违约次数、右偏营收、损失金额覆盖所有传统线性模型适用场景。QuantileRegressor分位数回归超越均值回归的通用线性分析工具1. OLS 仅拟合条件均值是分位数回归在 0.5 分位数的特例2. 可自定义任意分位数0~1同时刻画均值、极端上行 / 下行尾部风险3. 不要求残差正态、同方差对金融离群值、异质性经济效应建模能力碾压普通 OLS。3. 加利福尼亚房价数据集测试3.1 数据获取与处理下面使用sklearn自带的加利福尼亚房价进行试验导入必要的库以及数据集进行数据集划分。# 1. 导入依赖与数据集 import numpy as np import pandas as pd from sklearn.datasets import fetch_california_housing #california房价数据集 from sklearn.model_selection import train_test_split #区分训练集与测试集 from sklearn.preprocessing import StandardScaler #标准化 from sklearn.metrics import mean_squared_error, r2_score#误差测量与评价 # 五大高阶模型 from sklearn.linear_model import ElasticNet, SGDRegressor, BayesianRidge, QuantileRegressor,TweedieRegressor # 加载数据集模拟资产定价回归任务 data fetch_california_housing() X, y data.data, data.target X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42) #data可以使用data获取该数据集相关的内容这里我做了整理。| 项目 | 内容 || --------- | ---------------------------------- || **数据集名称** | California Housing Dataset || **数据来源** | 1990年美国人口普查数据 || **样本数量** | 20,640 条 || **特征数量** | 8个数值型特征 1个目标变量 || **地理单位** | 人口普查区块组block group通常人口600-3000人 || 特征名 | 含义 || -------------- | ----------- || **MedInc** | 区块组的中位数收入 || **HouseAge** | 区块组的中位数房屋年龄 || **AveRooms** | 每户平均房间数 || **AveBedrms** | 每户平均卧室数 || **Population** | 区块组人口 || **AveOccup** | 每户平均居住人数 || **Latitude** | 区块组纬度 || **Longitude** | 区块组经度 |目标变量名称MedHouseVal中位数房价单位十万美元$100,000示例值[4.526, 3.585, 3.521, ..., 0.923, 0.847, 0.894]含义例如4.526表示该区块组的中位数房价为$452,600标准化统一特征的量纲以便进行比较。# 标准化线性正则模型必做消除量纲影响 scaler StandardScaler() X_train_scaled scaler.fit_transform(X_train) X_test_scaled scaler.transform(X_test)3.2 模型运用模型1 ElasticNet# ElasticNet # ---------------------- elastic ElasticNet(alpha0.1, l1_ratio0.5, random_state42) elastic.fit(X_train_scaled, y_train) y_pred_elastic elastic.predict(X_test_scaled) print( ElasticNet(L1L2混合正则) ) print(fMSE: {mean_squared_error(y_test, y_pred_elastic):.4f}, R2: {r2_score(y_test, y_pred_elastic):.4f}) print(f稀疏非零系数数量{np.sum(np.abs(elastic.coef_) 1e-5)}\n)模型2 SGDRegressor# 模型2SGDRegressor 随机梯度下降大数据通用线性框架 # ---------------------- # losssquared_error等价OLSpenalty支持l1/l2/elasticnet sgd SGDRegressor(losssquared_error, penaltyelasticnet, alpha0.01, l1_ratio0.5, random_state42) sgd.fit(X_train_scaled, y_train) y_pred_sgd sgd.predict(X_test_scaled) print( SGDRegressor(通用线性优化) ) print(fMSE: {mean_squared_error(y_test, y_pred_sgd):.4f}, R2: {r2_score(y_test, y_pred_sgd):.4f}\n)模型3 BayesianRidge# 模型3BayesianRidge 贝叶斯岭回归自动正则调参 # ---------------------- bayes_ridge BayesianRidge() bayes_ridge.fit(X_train_scaled, y_train) y_pred_bayes bayes_ridge.predict(X_test_scaled) print( BayesianRidge(贝叶斯自动L2正则) ) print(fMSE: {mean_squared_error(y_test, y_pred_bayes):.4f}, R2: {r2_score(y_test, y_pred_bayes):.4f}) print(f模型自动学习的正则强度alpha: {bayes_ridge.alpha_:.4f}\n)模型4 TweedieRegressor# 模型4GLM TweedieRegressor通用广义线性模型覆盖OLS/泊松/伽马 # ---------------------- # power0 等价高斯分布OLSpower1泊松power2伽马 glm_gauss TweedieRegressor(power0, alpha0.1) glm_gauss.fit(X_train_scaled, y_train) y_pred_glm glm_gauss.predict(X_test_scaled) print( GLM TweedieRegressor(高斯分布等价OLS拓展) ) print(fMSE: {mean_squared_error(y_test, y_pred_glm):.4f}, R2: {r2_score(y_test, y_pred_glm):.4f}\n)模型5 QuantileRegressor# 模型5QuantileRegressor 分位数回归拟合中位数0.5分位拓展尾部风险 # ---------------------- # quantile0.5 等价均值回归的中位数版本可改0.1/0.9做尾部分析 quantile_50 QuantileRegressor(quantile0.5, alpha0.1, solverhighs) quantile_50.fit(X_train_scaled, y_train) y_pred_q50 quantile_50.predict(X_test_scaled) print( QuantileRegressor(0.5中位数分位数回归) ) print(fMSE: {mean_squared_error(y_test, y_pred_q50):.4f}, R2: {r2_score(y_test, y_pred_q50):.4f})4. 总结实际上你可能也发现在MSE和R2上的表现可能并没有那么的理想。实际上我们可以做一些特征工程以增加准确性。X_df pd.DataFrame(X, columnsfeature_names) # 创建工程特征 X_engineered X_df.copy() # 1.1 对数变换收入、人口等右偏特征 X_engineered[MedInc_log] np.log1p(X_df[MedInc]) X_engineered[Population_log] np.log1p(X_df[Population]) X_engineered[AveOccup_log] np.log1p(X_df[AveOccup]) # 1.2 房间比例特征 X_engineered[RoomsPerBedrm] X_df[AveRooms] / (X_df[AveBedrms] 0.1) X_engineered[BedrmsPerRoom] X_df[AveBedrms] / (X_df[AveRooms] 0.1) # 1.3 地理位置特征到海岸/中心的距离近似 # 加州大致中心经纬度 X_engineered[Lat_centered] X_df[Latitude] - 37.0 X_engineered[Lon_centered] X_df[Longitude] - (-120.0) X_engineered[Dist_from_center] np.sqrt(X_engineered[Lat_centered]**2 X_engineered[Lon_centered]**2) # 1.4 交互特征收入与房间数 X_engineered[MedInc_x_Rooms] X_df[MedInc] * X_df[AveRooms] X_engineered[MedInc_x_HouseAge] X_df[MedInc] * X_df[HouseAge] # 1.5 非线性特征 X_engineered[MedInc_sq] X_df[MedInc] ** 2 X_engineered[HouseAge_sq] X_df[HouseAge] ** 2 X_engineered[MedInc_sqrt] np.sqrt(np.clip(X_df[MedInc], 0, None))5. 一点实际的反思机器学习在经济和金融邻域的使用越来越广泛这主要得益于它能够捕获更多的复杂的【非线性】因素一方面更好的处理经济学和金融学中的因果关系另一方面也可以在实际使用中减少一些稳健性检验的繁琐步骤。然而线性模型的一个优势是可以准确的度量每个【解释变量】的贡献这对我们判断【什么具体的因素】影响【被解释变量】十分关键。