基于MATLAB的逻辑回归分类算法系统
项目简介
本项目是在MATLAB环境中构建的一个完整的逻辑回归(Logistic Regression)机器学习模型系统,专门用于解决非线性可分的二分类问题。系统不依赖第三方高级机器学习工具箱的黑盒模型,而是从底层实现了数据生成、特征映射、代价函数计算、梯度下降优化以及模型评估的全部逻辑。通过多项式特征映射和正则化技术,本系统能够有效地拟合复杂的非线性决策边界,并通过可视化模块直观展示模型的训练过程和分类效果。
功能特性
- 非线性数据模拟:能够自动生成类似于“芯片测试”场景的复杂二分类数据集,包含圆形非线性边界及随机噪声干扰,用于验证模型的鲁棒性。
- 特征工程:内置多项式特征映射算法,能将低维特征映射到高维空间(最高6阶),解决线性不可分问题。
- 双重优化策略:
* 实现了标准的
批量梯度下降(Batch Gradient Descent)算法,用于演示参数迭代原理。
* 集成了MATLAB内置的高级优化器
fminunc,提供更高效的无约束函数优化。
- 正则化机制:引入L2正则化项(Regularization),在训练过程中惩罚过大的参数值,有效防止高阶多项式特征导致模型过拟合。
- 全方位评估指标:除了基本的准确率(Accuracy)外,还计算了精确率(Precision)、召回率(Recall)和F1 Score,并绘制ROC曲线及计算AUC值。
- 多维可视化:在一个图形窗口中集成展示代价收敛曲线、非线性决策边界、混淆矩阵以及ROC曲线。
系统要求
- MATLAB R2016a 或更高版本(推荐)。
- 不需要额外的机器学习工具箱(Machine Learning Toolbox),核心算法均为原生实现;高级优化需Optimization Toolbox支持(标准MATLAB安装通常包含)。
使用方法
- 确保MATLAB环境已准备就绪。
- 直接运行主函数
main() 即可启动系统。 - 系统将自动执行以下流程:生成数据 -> 预处理 -> 训练模型 -> 评估结果 -> 弹出可视化结果窗口。
- 控制台窗口将输出数据集信息、训练过程中的状态、最终代价以及各项评估指标的具体数值。
算法实现与核心逻辑细节
本项目的所有功能逻辑均封装在一个脚本文件中,主要包含以下关键模块的底层实现:
1. 数据生成与预处理
- 数据模拟:生成200个特征值在[-1, 1]区间内的样本点。真实标签基于方程 $x_1^2 + x_2^2 > 0.5$ 定义,模拟圆形边界,并人为添加了约10%的标签噪声以增加分类难度。
- 数据集划分:采用随机排列索引的方式,将数据集按照8:2的比例划分为训练集和测试集。
- 特征映射 (Feature Mapping):实现了一个专门的映射函数,将原始的2维特征扩展为最高6阶的多项式特征(包含交叉项),使得逻辑回归能够构建非线性的决策边界。
2. 模型构建与优化
- 假设函数:定义了标准的Sigmoid函数 $g(z) = 1 / (1 + e^{-z})$ 将预测值映射到(0, 1)区间。
- 代价函数 (Cost Function):基于最大似然估计构建了对数损失函数。为了防止过拟合,在代价函数中加入了正则化项 $frac{lambda}{2m}sumtheta_j^2$。代码中特别注意了不对偏置项 $theta_0$ (代码索引为1) 进行正则化惩罚。
- 梯度计算:手动推导并计算了包含正则化项的梯度向量,用于参数更新。
- 参数求解:
* 代码首先演示了固定学习率(alpha=1)的迭代梯度下降过程。
* 主要采用
fminunc 函数进行最终参数优化,通过设置
GradObj 为 'on',利用自定义的梯度信息加速收敛。
3. 模型评估
- 预测逻辑:设定阈值为0.5,大于等于该值的概率判定为正类(1),否则为负类(0)。
- 指标计算:
*
准确率:分别计算训练集和测试集的预测准确度。
*
混淆矩阵元数据:手动统计真正例(TP)、假正例(FP)、假负例(FN)和真负例(TN)。
*
F1 Score:基于Precision和Recall计算F1分数,并加入了极小值
eps 以防止分母为零的数值错误。
4. 可视化模块
系统利用MATLAB绘图系统生成了一个包含四个子图的综合画板:
- 收敛曲线:绘制迭代次数与代价函数值的关系,验证梯度下降是否正常收敛。
- 决策边界:通过生成网格数据并计算每个网格点的预测值,使用等高线图(Contour)绘制出 $z=0$ 的非线性分界线,并叠加原始训练散点。
- 混淆矩阵:使用图像缩放(Imagesc)技术自定义绘制混淆矩阵热力图,并在格点中心标注具体的样本统计数量。
- ROC曲线:通过在[0, 1]区间内遍历100个阈值,手动计算对应的真正率(TPR)和假正率(FPR),绘制ROC曲线,并利用梯形法则(Trapezoidal rule)估算AUC面积。