线性关系
- 线性:两个变量之间的关系为一次函数关系——直线
- 非线性:两个变量之间的关系不是一次函数关系——非直线
- 回归:测量事物的时候因客观条件所求的是测量值,不是真实值,为获得真实值,通过测量数据计算回归到真实值。
解决的问题:
通过对观测数据处理,得到符合事物内部规律的数学表达式。即寻找数据与数据的规律,模拟出结果,通过已知数据得到未知结果。例如:对房价的预测、判断信用评价、电影票房预估等。
表达式一般为: W * x + b = Y,使用 MSE 做损失函数:,利用梯度下降法找到最小值点,也就是最小误差,求出 w 和 b 。
过拟合与欠拟合:
使用正则化项,在损失函数加上一个参数项,正则化项有L1正则化(lasso回归)、L2正则化(岭回归)、ElasticNet。加入这个正则化项好处:
- 控制参数幅度
- 限制参数搜索空间
- 解决欠拟合与过拟合的问题。
如果输入特征的维度很高,而且是稀疏线性关系的话, 可考虑使用Lasso回归。
用Lasso回归太多特征被稀疏为0,而岭回归的回归系数衰减太慢,可使用ElasticNet回归来综合,会得到比较好的结果。
PyTorch 的线性层 nn.Linear()
torch.nn.Linear(in_features, # 输入的神经元个数,
out_features, # 输出神经元个数,
bias=True # 是否包含偏置)
Linear 就是对输入 X(n * i) 执行了一个线性变换:,W是模型要学习的参数,维度为 i * o,b 是 o 维的向量偏置,n 为输入向量的行数(例如,一次输入10个样本,即batch_size为10,则 n = 10),i 为输入神经元的个数(例如样本特征数为5,则 i = 5),o 为输出神经元的个数。
import torch from torch import nn model = nn.Linear(2, 1, bias=True) # 输入特征数为2,输出特征数为1 i = torch.Tensor([1, 2]) # 给一个样本,该样本有2个特征(这两个特征的值分别为1和2) o = model(i) print(o) # 查看模型参数, 含有两个权重和一个偏执 for param in model.parameters(): print(param)
回归评价:
1. 均方误差(MSE):常用评估回归模型性能的指标,衡量预测值与实际值之间的平均平方差。MSE越小,说明模型的预测结果越接近真实值,模型的性能越好。
2. 均方根误差(RMSE):RMSE是MSE的平方根,预测误差的量级。
3. R-squared(R_):决定系数,衡量模型对数据的拟合程度。R_的值介于0和1之间,越接近1,说明模型对数据的拟合程度越好。1 - (残差平方和 / 总平方和),残差平方和是预测值和实际值差的平方和,总平方和是实际值与均值差的平方和。
4. MAE(平均绝对误差):MAE是所有单个观测值与真值的绝对差之和的平均数。
5. 学习曲线:可视化工具,通过绘制训练集和验证集上的误差随着训练轮次的变化情况,了解模型是否过拟合或欠拟合。
参考:
ML-NLP/1.Liner Regression.md at master · NLP-LOVE/ML-NLP · GitHub
Pytorch nn.Linear的基本用法与原理详解_iioSnail的博客-CSDN博客
nn.Linear 官方文档:
pytorch学习线性回归与非线性回归,以及理解nn.linear()和ReLU激活函数_py的linear和reul_LiterMa的博客-CSDN博客