一、线性模型和回归
1、线性模型
是机器学习中一类常用的模型,用于建立输入特征与输出变量之间的线性关系。回归是线性模型的一种应用,用于预测连续数值型的输出变量。
在线性回归中,我们假设输入特征与输出变量之间存在线性关系。具体来说,对于给定的输入特征 x1, x2, ..., xn,线性回归模型的形式可以表示为:
当n为1的时候就是最简单的一元一次方程模型:
其中,y是预测的输出变量,x1, x2, ..., xn是输入特征,w1, w2, ..., wn是对应的权重,b是偏置项。回归任务的目标是找到最优的权重和偏置项,使得模型的预测结果与真实值之间的误差最小化。
2、回归
回归是一种统计分析方法,用于研究一组随机变量 (Y1 ,Y2 ,…,Yi)和另一组 (X1,X2,…,Xk)变量之间的关系1。通常,Y1,Y2,…,Yi被视为因变量,X1、X2,…,Xk被视为自变量1。
回归分析是一种统计方法,用于研究变量之间的关系,并预测一个或多个连续数值型的输出变量。它通过建立一个数学模型,描述自变量(输入特征)与因变量(输出变量)之间的关系,以便进行预测、推断和理解。
回归分析的过程通常包括以下步骤:
-
数据收集和准备:收集所需的自变量和因变量的数据,并进行数据清洗和预处理。
-
建立回归模型:选择合适的回归模型,建立自变量与因变量之间的关系。
-
模型拟合:通过最小化误差,调整模型参数,使模型更好地拟合训练数据。
-
模型评估:使用评估指标(如均方误差、R平方等)来评估模型的性能和预测能力。
-
模型应用:使用训练好的回归模型来进行预测、推断或理解变量之间的关系。
回归分析在许多领域都有广泛的应用,例如经济学、金融学、社会科学、医学等。通过回归分析,我们可以研究变量之间的关系,预测未来趋势,进行决策支持和数据驱动的分析。
二、最小二乘法
最小二乘法是一种常用的回归分析方法,用于在已知输入和输出数据的情况下,求解出最佳拟合直线或曲线的参数。它通过最小化残差平方和来确定模型参数的值,以使得预测值与真实值之间的差异最小。
在最小二乘法中,我们假设因变量 y 与自变量 x 之间的关系是线性的,即 y=β0+β1x+ϵ,其中 β0 和 β1 是模型的截距和斜率,ϵ 是误差项。我们的目标是找到最佳的 β0 和 β1,使得残差平方和(RSS)最小,即:
其中 n 是样本数量,yi 是第 i 个样本的真实输出值,y^i 是模型对第 i 个样本的输出预测值。
三、对数线性回归
对数线性回归是一种广义线性模型,用于建立自变量和因变量之间的对数关系。对数线性回归模型可以通过最小化残差平方和来估计参数。
假设有 n 个样本数据 (,),(x2,y2),…,(xn,yn),我们要找到一个对数线性模型 、log(y)=β0+β1x,使得残差平方和最小化。
首先,我们对因变量 y 进行对数变换,得到log(yi),然后我们可以使用最小二乘法估计对数线性回归模型的参数。
对数线性回归模型的参数估计公式与普通线性回归类似。通过最小化残差平方和,可以得到参数估计公式:
其中,xˉ 是自变量 x 的均值,log(y)ˉ 是log(y) 的均值。
四、Logistic回归
Logistic回归是一种二分类问题的广义线性模型,用于建立自变量和因变量之间的对数几率关系。它常用于处理分类问题,尤其是当因变量是二元变量(例如正类和负类)时。
Logistic回归模型中,我们使用逻辑函数(又称为sigmoid函数)将线性模型的输出转换为概率值。逻辑函数的公式如下:
其中,P(Y=1∣X)表示给定自变量X时因变量Y取值为1(正类)的概率,β0和β1是待估计的参数。
对于二分类问题,我们可以进一步定义概率P(Y=0∣X)=1−P(Y=1∣X)。根据这个逻辑函数,我们可以得到Logistic回归的对数似然函数:
通过最大化对数似然函数,我们可以估计出Logistic回归模型的参数β0和β1。
五、实现
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
from sklearn import datasets
import matplotlib.pyplot as plt
# 加载新的数据集
X, y = datasets.make_classification(n_samples=1000, n_features=10, random_state=42)
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建Logistic回归模型
model = LogisticRegression()
# 拟合模型
model.fit(X_train, y_train)
# 预测测试集
predictions = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, predictions)
# 绘制预测值和实际值的图像
plt.figure(figsize=(12, 6))
plt.plot(y_test, 'b', label='Actual')
plt.plot(predictions, 'r', label='Predicted')
plt.legend(loc='upper left')
plt.xlabel('Sample Index')
plt.ylabel('Category')
plt.title('Predicted Values and Actual Values')
plt.show()
# 打印准确率
print("Accuracy: ", accuracy)