ensemble learning - Task 2 (回归)

本文详细探讨了线性回归模型的最小二乘法,解释了如何通过求导找到使误差平方和最小的参数。同时,讨论了线性回归中最小二乘估计与极大似然估计的关系。此外,还分析了多项式回归在实际应用中可能面临的过拟合问题及其对预测稳定性的影响。最后,展示了如何实现线性回归模型的拟合。
摘要由CSDN通过智能技术生成

(1)详细阐述线性回归模型的最小二乘法(The method of least squares)表达

为了衡量真实值yi与线性回归模型的预测值w^Tx_i之间的差距,用y_i- w^Tx_i的平方和L(w)来描述这种差距,

L(w) =\sum\limits_{i=1}^{N}(w^Tx_i-y_i)^2 \\ = (w^TX^T-Y^T)(w^TX^T-Y^T)^T \\ = w^TX^TXw - 2w^TX^TY+YY^T

求使得L(w)最小时对应的参数w,即:

\hat{w} = argmin\;L(w)\\

求导:
   \frac{\partial L(w)}{\partial w} = 2X^TXw-2X^TY = 0\\

\hat{w} = (X^TX)^{-1}X^TY

(2) 线性回归中极大似然估计和最小二乘估计的区别和联系

 线性回归的最小二乘估计 等价于 噪声\epsilon\backsim N(0,\sigma^2)的极大似然估计

(3)为什么多项式回归在实际问题表现不佳

多项式回归若阶数过大容易在训练数据集上过拟合,在X的边界处有置信区间明显增大,预测效果的稳定性下降 

(7) 实现用线性回归模型拟合模型 

from sklearn import datasets
import numpy as np

def hypothesis(X, theta):
    return np.dot(X, theta)

def computeCost(X, y, theta):
    n = X.shape[0]
    y_pred = hypothesis(X, theta)
    return np.sum(np.square(y_pred - y.reshape(-1,1)))/(2*n)
    
def gradientDescent(X,y,theta,alpha,epoch):
    cost = np.zeros(epoch)
    for i in range(epoch):
        y_pred = hypothesis(X, theta)
        #print(y_pred.shape, y.shape)
        residues = y_pred - y.reshape(-1,1)
        #print(residues.shape)
        grad = np.dot(X.T, residues) / X.shape[0]
        theta -= alpha*grad 
        cost[i] = computeCost(X,y,theta)
        
    return theta, cost

boston = datasets.load_boston()     
X = boston.data
y = boston.target

X_std = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
X_std = np.concatenate([X_std,np.ones((X.shape[0],1))], axis=1)
theta = np.zeros((X_std.shape[1],1))
alpha = 1e-4
epoch = 100000

# perform linear regression on the data set
g, cost = gradientDescent(X_std, y, theta, alpha, epoch)


            

 

### 集成学习的概念 集成学习是一种通过组合多个模型(通常称为弱学习器)来提高预测性能的方法。这种方法的核心理念在于,单个模型可能具有较高的偏差或方差,而通过聚合多个模型的结果,则可以在一定程度上减少这种误差,从而获得更好的泛化能力。 ### 常见的集成学习方法 #### 袋装法(Bagging) 袋装法旨在降低模型的方差,进而提升其稳定性与准确性。具体做法是从原始训练集中有放回地抽取样本子集,针对每个子集独立训练一个基分类器;最终预测时采用投票机制决定类别标签[^2]。 ```python from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier bagging_model = BaggingClassifier(base_estimator=DecisionTreeClassifier(), n_estimators=10) ``` #### 提升法(Boosting) 不同于Bagging并行处理各基估计量的方式,Boosting采取串行方式逐步改进模型表现。每一轮迭代过程中都会根据前一轮的表现调整权重分布,使得后续的学习更加关注之前容易被误分的数据点。常见的实现算法包括AdaBoost、Gradient Boosting等[^3]。 ```python from sklearn.ensemble import AdaBoostClassifier adaboost_model = AdaBoostClassifier(n_estimators=50, learning_rate=1) ``` #### Stacking Stacking进一步扩展了传统集成策略的思想,允许不同类型的机器学习算法作为初级层中的基础组件参与进来。在此基础上再引入一层元学习者负责综合底层输出特征完成最终决策任务[^1]。 ```python from mlxtend.classifier import StackingCVClassifier from sklearn.linear_model import LogisticRegression stacking_model = StackingCVClassifier(classifiers=[clf1, clf2], meta_classifier=LogisticRegression()) ``` ### 应用场景 - **金融风险评估**:利用随机森林等集成方法分析客户信用评分数据,帮助银行更精准识别潜在违约风险。 - **医疗诊断辅助系统**:借助XGBoost等高效梯度增强框架对疾病症状进行建模,支持医生做出更为可靠的诊疗建议。 - **图像识别领域**:结合卷积神经网络(CNN)与GBDT(Gradient Boosted Decision Trees),能够有效改善视觉对象检测精度,在自动驾驶汽车感知模块中有广泛应用前景[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值