自适应lasso_线性回归模型优化算法(Lasso)

学习最好的时间是十年前,其次就是现在。算法?好难啊,机器学习的,那来看看,啥,线性回归,没意思。所以我也不打算讲什么是线性回归。手推Lasso算法在分割线下。

  1. 目标: 找出
    使得
    最小。

后来在此基础上引入最小二乘、逻辑回归。都是只有一个目的:预测的

与 真实值
尽可能接近。提一下逻辑回归的sigmoid函数把预测的值强行转换为[0,1]范围内大小的值,巧的是概率的值也是[0,1]的大小。

2.优化:解决目标的过程,目标是求最值,最值的问题怎么能少了求导。

,初中生用公式就算出来,咱先把它看成一个优化问题,找出最好的
,使得
最小。Gradient Descent(梯度下降法),

39b0e64294ccd1a66f98a425351502e9.png
Gradient Descent

(学习率|步长);
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个自适应 Lasso 面板分位数回归的 Python 代码示例: ```python import numpy as np import pandas as pd from sklearn.linear_model import LassoCV, QuantileRegressor # 加载数据 data = pd.read_csv('data.csv') # 分离自变量和因变量 X = data.drop('y', axis=1) y = data['y'] # 定义自适应 Lasso 模型 class AdaptiveLassoCV(LassoCV): def __init__(self, quantile=0.5, **kwargs): self.quantile = quantile super().__init__(**kwargs) def fit(self, X, y): super().fit(X, y) self.alpha_ *= np.percentile(np.abs(self.coef_), q=self.quantile*100) super().fit(X, y) # 定义面板分位数回归模型 class PanelQuantileRegressor: def __init__(self, tau=0.5, **kwargs): self.tau = tau self.models = {} self.kwargs = kwargs def fit(self, X, y, groups): for group in groups: X_group = X[groups == group] y_group = y[groups == group] model = QuantileRegressor(tau=self.tau, **self.kwargs) model.fit(X_group, y_group) self.models[group] = model def predict(self, X, groups): y_pred = np.zeros(len(X)) for group in np.unique(groups): X_group = X[groups == group] y_pred[groups == group] = self.models[group].predict(X_group) return y_pred # 定义自适应 Lasso 面板分位数回归模型 class AdaptivePanelQuantileRegressor(PanelQuantileRegressor): def __init__(self, tau=0.5, quantile=0.5, **kwargs): self.quantile = quantile super().__init__(tau=tau, **kwargs) def fit(self, X, y, groups): for group in np.unique(groups): X_group = X[groups == group] y_group = y[groups == group] model = AdaptiveLassoCV(quantile=self.quantile, **self.kwargs) model.fit(X_group, y_group) self.models[group] = QuantileRegressor(tau=self.tau) self.models[group].coef_ = model.coef_ self.models[group].intercept_ = model.intercept_ # 训练自适应 Lasso 面板分位数回归模型 model = AdaptivePanelQuantileRegressor(tau=0.5, quantile=0.5) model.fit(X, y, groups=data['group']) # 预测新数据 new_X = pd.read_csv('new_data.csv') y_pred = model.predict(new_X, groups=new_X['group']) ``` 需要注意的是,该代码仅提供了一个示例,实际应用中需要根据数据特点和问题进行调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值