人工智能训练师(四级)
模块0 人工智能训练师职业认知
学习单元1 人工智能概论
学习单元2 人工智能训练师岗位认知
模块1 数据采集和处理
课程1-1 业务数据采集
学习单元1 文本与图片数据采集(爬虫)
学习单元2 视频数据采集
学习单元3 语音数据采集
课程1-2 业务数据处理
学习单元1 文本数据清洗
学习单元2 图像数据清洗
模块2 原始数据标注
学习单元1 文本数据标注
学习单元2 图像数据标注
学习单元3 语音数据标注
模块3 使用Excel进行分类统计
模块4 数据归类和定义
学习单元1 聚类分析
学习单元2 回归分析
学习单元3 关联分析
模块5 标注数据审核
学习单元1 标注数据质量检验基础知识
学习单元2 图像和视频标注数据质量检验
学习单元3 语音标注数据质量检验
学习单元4 文本标注数据质量检验
模块6 智能系统运维
学习单元1 智能系统运维基础
学习单元2 系统功能日志维护
学习单元3 常见智能系统介绍
学习单元4 使用Docker进行系统安装部署
附加0 工作中常用的人工智能软件
-
+
首页
学习单元2 回归分析
## 1.回归分析的基本概念 回归分析是统计学中一种重要的分析方法,用于探索自变量(预测变量)与因变量(响应变量)之间的关系。主要目的是建立一个数学模型来描述和预测因变量如何随着自变量的变化而变化。 ### 1.1回归分析的目的和应用 - 预测未来:回归分析可以帮助我们根据历史数据预测未来的趋势,如股票价格、销售量等。 - 解释变量关系:回归分析可以用来解释变量之间的关系,如教育水平与收入之间的关系。 - 优化决策:回归分析可以帮助我们优化决策,如确定最佳的广告预算、产品定价等。 ### 1.2 回归分析的基本假设 为确保回归模型有效性和准确性的基础,排除可能会导致模型不准确或不可靠的因素,原始数据通常需要满足某些条件。 以下是回归分析中经常需要纳入考量的基本假设: - 线性关系:因变量 `y` 与自变量 `x` 之间存在线性关系。这意味着因变量的期望值 `E(y\x)` 是自变量的线性函数。 - 独立性:每个观测值之间应该是独立的。即误差项 `ε` 应该是互相独立的,一个观测值的误差项不应该影响其他观测值的误差项。 - 同方差性(等方差性):误差项 `ε` 应该具有相同的方差,即 ` Var(εi) = σ²`,其中 `σ² ` 是常数。 - 正态性:误差项 `ε` 应该服从正态分布,即 `εi ~ N(0, σ²)` - 无多重共线性:自变量之间应该是近似线性无关的,即自变量不应该存在高度相关性。 ### 1.3回归分析的分类 回归分析算法可以根据自变量类型、因变量类型、分析目的等多个不同的维度进行分类: ```mindmap # 回归分析方法分类 ### 根据自变量的数量 #### 简单线性回归 #### 多元线性回归 ### 根据因变量的类型 #### 线性回归 #### 逻辑回归 ### 根据数据分析的目的 #### 普通最小二乘回归 #### 岭回归 #### Lasso回归 ### 根据数据的特征和分布 #### 参数回归 #### 非参数回归 ### 根据数据样本的特征 #### 横截面回归 #### 时间序列回归 ``` 本文中主要介绍以下几种回归分析: - 线性回归:最常见的回归分析类型,假设因变量与自变量之间存在线性关系。 - 线性回归模型试图通过拟合一条直线(在简单线性回归中)或者一个超平面(在多元线性回归中)来最大程度地解释因变量的变化。 - 逻辑回归:虽然名字中有“回归”,但逻辑回归实际上是一种分类算法,用于预测二分类或多分类问题的概率。 - 岭回归和Lasso回归:用于解决多重共线性问题(自变量之间存在高度相关性)的技术。 - 通过引入正则化项来限制模型的复杂度,防止过拟合。 ### 1.4回归分析常用工具 - 编程语言: - R:R语言是一个广泛使用的开源统计计算和数据可视化软件,有丰富的回归分析包(如lm、glm等)支持线性回归、逻辑回归等分析。 - Python:Python语言通过包括NumPy、SciPy、Statsmodels和scikit-learn等库提供了强大的统计分析能力,可以进行各种回归分析。 - 商业统计软件: - SPSS:SPSS统计软件是一款广泛用于数据分析的商业软件,支持线性回归、逻辑回归等多种回归分析方法。 - SAS:SAS统计分析系统是另一种商业统计软件,提供了广泛的统计功能和高级数据分析能力。 - 数据分析工具: - Excel:Excel是一种常见的电子表格软件,它也提供了简单的回归分析功能,适合初学者和简单分析任务。 - Matlab:Matlab是一种高级技术计算语言和交互式环境,提供了强大的数值计算和数据分析功能,包括回归分析。 - 在线统计工具: - Google Sheets:Google Sheets提供了一些基本的统计函数和插件,可以进行简单的回归分析。 - StatTools:StatTools是一款基于网络的统计工具,提供了多种回归分析方法和数据可视化功能。 ## 2.线性回归分析 线性回归模型可以用于预测未来数据,例如预测股票价格、销售量等。 在金融领域,线性回归模型可以用于风险评估和投资决策。 ### 2.1线性回归模型 - 如果认为原数据中因变量 ( y ) 和自变量 ( x ) 之间存在线性关系。这可以用数学公式表示为:  - 其中,( `β₀, β₁, β₂, ..., βₚ `) 是回归系数(或称为斜率),表示自变量对因变量的影响;( `x₁, x₂, ..., xₚ `) 是自变量;`ε `是误差项,表示未被模型解释的随机误差。 ### 2.2 线性回归的估计和检验 - 参数估计:线性回归模型中,参数估计通常采用最小二乘法,通过最小化实际观测值与模型预测值之间的残差平方和来求解参数。 - 假设检验:线性回归模型中,假设检验通常用于检验模型参数的显著性,例如检验自变量与因变量之间的线性关系是否显著。 - 模型诊断:线性回归模型中,模型诊断通常用于检查模型的假设条件是否满足,例如自变量与因变量之间的关系是否线性,是否存在多重共线性等。 ### 2.3 线性回归应用举例 以下是使用Python进行线性回归分析的应用举例: - 准备数据:首先,准备你的数据。假设你有两个变量 X 和 Y,你想建立一个简单的线性回归模型来预测 Y。 ```python import numpy as np import statsmodels.api as sm ``` - 构造数据 ```python X = np.array([1, 2, 3, 4, 5]) # 自变量 X Y = np.array([2, 3, 4, 5, 6]) # 因变量 Y ``` - 添加常数项(截距):通常需要为模型添加一个截距项(常数项),Statsmodels不会自动添加常数项,因此需要手动添加。 ```python # 添加常数项(截距) X = sm.add_constant(X) ``` - 拟合线性回归模型:使用OLS(Ordinary Least Squares,普通最小二乘法)方法拟合线性回归模型。 ```python # 拟合线性回归模型 model = sm.OLS(Y, X) results = model.fit() ``` - 查看回归结果:查看回归结果,包括参数估计、显著性检验、R-squared等统计信息。 ```python # 查看回归结果摘要 print(results.summary() ``` - 进行预测:使用拟合的模型进行新数据的预测。 ```python # 进行预测 new_X = np.array([6, 7, 8]) # 新的自变量 X new_X = sm.add_constant(new_X) # 添加常数项 predictions = results.predict(new_X) print(predictions) ``` 回归结果如下:  结果分析: - 这个回归结果表明你的模型非常完美地拟合了数据,R-squared 值为 1.000,说明模型可以完美地解释因变量的变化。让我们逐一解释表中的各个部分: - Df Residuals: 残差的自由度为 3,这是指模型参数减去估计的参数数量。 - Df Model: 模型的自由度为 1,这是指模型中的自变量数量。 - R-squared: 拟合优度为 1.000,表示模型完美地拟合了数据。 - Adj. R-squared: 调整后的拟合优度也为 1.000,通常在有多个自变量时使用,这里显示效果与拟合优度相同。 - F-statistic: F 统计量为 1.784e+30,用于检验模型的显著性。 - Prob (F-statistic): F 统计量的概率值为 9.25e-46,非常接近于零,表明模型非常显著。 - Log-Likelihood: 对数似然为 162.57,用于评估模型拟合的好坏程度。 - AIC: 赤池信息准则为 -321.1,用于模型选择。 - BIC: 贝叶斯信息准则为 -321.9,也用于模型选择。。 - std err: 系数的标准误差。 - t: t 统计量用于检验系数是否显著 - P>|t|: 系数的显著性检验的 p 值显示在 P>|t| 列中,这里都是 0.000,表明非常显著。 - [0.025 0.975]: 置信区间显示在 [0.025 0.975] 中,表明估计系数的置信区间。 ### 2.4补充学习,请观看下方视频:  ## 3.逻辑回归分析 - 逻辑回归模型可以用于预测一个事件发生的概率,如疾病诊断、信用评分等;在医疗领域,逻辑回归可以用于预测疾病的风险,如心脏病、糖尿病等。 - 逻辑回归的优点包括计算简单、易于理解和实现,特别适用于线性可分的数据。然而,它也有一些限制,例如对特征空间的线性边界要求较高,对异常值较为敏感等。  ### 3.1逻辑回归模型 - 逻辑回归的核心思想是通过一个线性函数的形式,将输入特征映射到一个概率的预测上,通常这个概率由一个逻辑函数(即`Sigmoid`函数)来表示。这个Sigmoid函数能够将任意的实数映射到0到1之间,形式为: - 其中,`z ` 是输入特征的线性组合。在训练逻辑回归模型时,通过最大化似然函数或最小化对数损失函数来求解模型参数。 ### 3.2逻辑回归的估计和检验 - 参数估计:逻辑回归模型中的参数估计通常采用极大似然估计方法,通过求解似然函数对数形式的最大值来估计参数。 - 模型检验:逻辑回归模型需要进行模型检验,包括拟合优度检验、假设检验等,以验证模型的有效性和可靠性。 - 预测:逻辑回归模型可以用于预测,通过将新数据的特征值代入模型,可以预测出相应的因变量值。 ### 3.3逻辑回归的应用举例 以下是使用scikit-learn中的LogisticRegression类进行逻辑回归分析的Python用例: ```python # 导入必要的库 import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score, classification_report # 生成更大规模、更复杂的示例数据 np.random.seed(0) # 设置随机种子以便结果可重现 # 生成1000个样本,每个样本有10个特征 X = np.random.randn(1000, 10) # 生成对应的随机标签,假设这是一个二分类任务 y = np.random.randint(0, 2, 1000) # 将数据集拆分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建逻辑回归模型对象 model = LogisticRegression() # 在训练集上训练模型 model.fit(X_train, y_train) # 在测试集上做预测 y_pred = model.predict(X_test) # 计算模型准确率 accuracy = accuracy_score(y_test, y_pred) print(f"Accuracy: {accuracy}") # 输出分类报告 print(classification_report(y_test, y_pred)) ``` 逻辑回归结果如下:  结果解释: - Accuracy (准确率): 准确率表示模型预测正确的样本比例。在这里,准确率为 0.4433,即约为44.33%。这表示模型正确预测了44.33%的样本标签。 - Precision (精确率): 精确率衡量模型预测为正类的样本中有多少确实是真正的正类。对于类别 0 和 1,精确率分别为 0.45 和 0.44。这意味着当模型预测某个样本属于类别 0 或类别 1 时,它分别有45%和44%的准确性。 - Recall (召回率): 召回率衡量真正的正类样本被模型预测为正类的比例。对于类别 0 和 1,召回率均为 0.44。这表示实际上是正类的样本中,模型正确预测了44%。 - F1-score (F1 分数): F1 分数是精确率和召回率的调和平均数,用于综合评估模型的表现。F1-score 结合了精确率和召回率的信息。对于类别 0 和 1,F1-score 均为 0.45,0.44。这表明模型在预测两个类别的时候综合考虑了精确率和召回率。 - Support: 每个类别的样本数量。在这里,类别 0 和 1 的支持数分别为 151 和 149。 ### 3.4补充学习,请观看下方视频:  ## 4.LASSO回归分析 - LASSO回归是一种线性回归模型,通过最小化残差平方和加上L1正则项,自动选择最相关的变量来防止过拟合并提高模型的泛化能力。 - LASSO回归广泛应用于各种领域,如金融、生物信息学、医学等,用于预测、分类、特征选择等任务。 ### 4.1LASSO回归模型 Lasso回归是一种线性回归的正则化方法,它通过在损失函数中添加一个L1正则项(权重系数的绝对值之和)来控制模型的复杂度。Lasso回归的公式如下: - 给定训练数据集X和对应的目标值 y, Lasso回归的损失的数可以表示为  - 其中,m 是训练样本的数量,n是特征的数量,β是模型参数向量,X 是设计矩阵,yi是第i个样本的目标值,λ是正则化系数。 - 为了求解最优的模型参数向量,我们可以使用梯度下降法。根据损失的数的一阶导数,我们可以得到以下更新规则:  - 其中,α是学习率,δj/δβj是损失的数关于第j个参数的偏导数,sign(B)是第j个参数的符号函数。 ### 4.2LASSO回归的估计和选择 - LASSO回归的估计:LASSO回归是一种能够自动进行变量选择的回归方法,通过最小化残差平方和加上L1正则项来估计参数。 - LASSO回归的选择:LASSO回归能够自动选择最相关的变量,从而简化模型,提高预测精度。 - LASSO回归的应用:LASSO回归在许多领域都有广泛的应用,如金融、生物信息学、医学等。 ### 4.3LASSO回归模型应用举例 以下是使用scikit-learn拟合LASSO回归模型的使用例: - 首先,我们导入必要的库: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Lasso from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error ``` - 然后,生成一些随机数据。假设我们想要生成一个具有线性关系的数据集: ```python # 生成随机数据 np.random.seed(42) n_samples = 100 n_features = 5 # 生成特征矩阵 X,服从标准正态分布 X = np.random.randn(n_samples, n_features) # 生成系数向量 true_coef,其中大部分系数为零 true_coef = np.random.randn(n_features) true_coef[2:] = 0 # 设定大部分系数为零 # 生成响应变量 y,并添加噪声 y = np.dot(X, true_coef) + np.random.normal(scale=0.5, size=n_samples) ``` - 现在我们有了特征矩阵 X 和响应变量 y。接下来,将数据集拆分为训练集和测试集: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` - 然后,我们可以使用Lasso回归拟合模型。在这里,我们选择Lasso回归的正则化参数alpha: ```python # 创建Lasso回归模型 lasso = Lasso(alpha=0.1) # 在训练集上拟合模型 lasso.fit(X_train, y_train) # 打印系数 print("Coefficients:", lasso.coef_) ``` - 最后,我们可以评估模型的性能。这里简单地计算模型在测试集上的均方误差(MSE): ```python # 在测试集上进行预测 y_pred = lasso.predict(X_test) # 计算均方误差 mse = mean_squared_error(y_test, y_pred) print("Mean Squared Error:", mse) ``` - 输出结果如下:  LASSO回归结果解释: - 系数数组 [0.77274761, 1.76326488, 0., 0., 0.02655963] 对应于模型拟合后得到的特征系数。根据这些系数,可以看出第一个和第二个特征对目标变量影响较大,而第三个到第五个特征的系数几乎为零,这表明模型认为这些特征对目标变量的预测作用较小或者没有作用。 - MSE 等于 0.25029862989517665。由于MSE是一个非负值,这个结果表明模型的预测误差相对较小,即模型在测试集上的预测效果较好。 ### 4.4补充学习,请观看下方视频:  ## 5.岭回归分析 - 岭回归是一种线性回归模型,通过在损失函数中加入一个L2正则项,来防止过拟合。 - 岭回归在许多领域都有应用,如金融、生物信息学、医学等,可以用于预测股票价格、基因表达、疾病风险等。 #### 5.1岭回归模型 岭回归(Ridge Regression)是一种线性回归的改进方法,它通过在损失函数中添加一个L2正则项(权重系数的平方和)来防止过拟合。岭回归的公式如下: - 给定训练数据集X和对应的目标值 y, Lasso回归的损失的数可以表示为:  - 其中,m 是训练样本的数量,n是特征的数量,θ是模型参数向量,hθ(xⁱ) 是预测值,λ是正则化系数。 - 为了求解最优的模型参数向量θ,我们可以使用梯度下降法。根据损失的数的一阶函数,我们可以得到以下更新规则:  - 其中,α是学习率,δJ/δθj是损失函数关于第j个参数的偏导数. #### 5.2岭回归的估计和选择 - 岭回归估计:岭回归是一种用于估计线性回归模型的方法,通过引入一个惩罚项来防止过拟合。 - 岭回归选择:岭回归的选择涉及到选择合适的惩罚项参数,以平衡模型的复杂度和预测精度。 - 岭回归的应用:岭回归在许多领域都有应用,如生物信息学、金融、医学等,用于处理高维数据中的回归问题。 #### 5.3岭回归模型应用举例 以下是使用scikit-learn拟合LASSO回归模型的使用例: ```python import numpy as np from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error # 生成随机数据 np.random.seed(42) n_samples = 100 n_features = 5 # 生成特征矩阵 X,服从标准正态分布 X = np.random.randn(n_samples, n_features) # 生成系数向量 true_coef,其中大部分系数为零 true_coef = np.random.randn(n_features) true_coef[2:] = 0 # 设定大部分系数为零 # 生成响应变量 y,并添加噪声 y = np.dot(X, true_coef) + np.random.normal(scale=0.5, size=n_samples) # 将数据集拆分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建岭回归模型 ridge = Ridge(alpha=0.1) # 在训练集上拟合模型 ridge.fit(X_train, y_train) # 打印系数 print("Coefficients:", ridge.coef_) # 在测试集上进行预测 y_pred = ridge.predict(X_test) # 计算均方误差 mse = mean_squared_error(y_test, y_pred) print("Mean Squared Error:", mse) ``` 以上代码的输出结果为:  结果解释: - 系数 (Coefficients): [0.93224194, 1.86865638, 0.04592671, 0.00247195, 0.11097867]这些系数反映了每个特征对目标变量的影响程度。从系数的大小可以看出,第二个特征对目标变量影响最大,其次是第一个特征,而其他特征的影响较小。 - 均方误差 (Mean Squared Error): 0.23119326644351673这个值表示模型在测试集上预测值与真实值之间的平方误差的平均值。较低的均方误差表明模型在测试数据上有较好的预测能力。 ### 5.4补充学习,请观看下方视频: 
张龙
2024年7月18日 16:25
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码