逻辑回归(LR)机器学习分类器系统
项目介绍
本项目是一个在 MATLAB 环境下开发的综合性逻辑回归分类框架。该系统旨在提供从数据生成、预处理、模型训练到多维度结果评估的完整工作流。系统不仅支持基础的二分类任务,还通过 One-vs-All(一对多)策略实现了多分类功能。通过内置的正则化机制和梯度下降优化算法,用户可以深入探究机器学习模型的收敛过程及其在不同数据集上的泛化能力。
功能特性
- 多模式数据支持:内置四种实验数据集,涵盖了线性可分、非线性环形、高维金融风险模拟以及多类别医疗诊断数据。
- 自动化特征工程:集成 Z-score 归一化处理,能够自动计算均值与标准差并应用于测试集,同时自动添加偏置项(Intercept Term)。
- 正则化机制:实现 L2 正则化以有效防止模型过拟合,支持灵活调节正则化系数。
- 多分类扩展:采用 One-vs-All 策略,通过训练多个二分类器来处理复杂的非递归多分类任务。
- 综合可视化看板:实时生成包含损失下降曲线、混淆矩阵热图、测试集分布及二维决策边界的四维分析报告。
系统要求
- MATLAB R2016b 或更高版本。
- 无需额外工具箱(所有核心算法均基于矩阵运算原生实现)。
实现逻辑与工作流程
系统由核心控制流和若干功能函数组成,其执行逻辑严格遵循以下步骤:
- 参数初始化:用户可自定义学习率(alpha)、迭代次数、正则化系数(lambda)及训练集比例。
- 数据流处理:
* 根据选择生成实验数据。
* 利用随机索引对数据进行乱序处理并按比例切分训练/测试集。
* 对特征进行标准化处理,确保不同量级的特征在梯度下降中具有相同的贡献度。
- 模型训练阶段:
* 系统识别目标变量中的唯一类别标签数量。
* 针对每个类别,将当前类设为正例(1),其余设为负例(0),独立运行梯度下降算法。
* 计算带 L2 惩罚项的代价函数(Cost Function),通过反复迭代更新权重参数(Theta)。
- 预测与评估:
* 通过 Sigmoid 函数计算测试集在各个分类器下的概率。
* 选取概率最大的索引作为预测类别。
* 计算准确率(Accuracy),并针对二分类情况额外计算精确度(Precision)和召回率(Recall)。
- 可视化输出:系统自动开启图形窗口,动态绘制模型性能图表。
核心算法与关键函数分析
1. 激活函数与概率映射
系统采用 Sigmoid 函数将线性回归的输出映射到 (0,1) 区间,代表样本属于某一类别的概率。其数学实现考虑了数值稳定性。
2. 带正则化的代价函数(Cost Function with L2)
实现逻辑中综合了对数损失(Log-Loss)和 L2 范数惩罚。需要注意的是,在计算正则化项时,偏置项(Theta_0)被排除在惩罚之外,以避免对模型平移能力的过度约束。梯度计算通过向量化矩阵运算实现,显著提升了在 MATLAB 中的执行效率。
3. 梯度下降优化(Gradient Descent)
系统使用标准的批量梯度下降法,在每次迭代中同步更新所有权重。算法会记录每一次迭代后的代价值,以便用户观察模型是否已经收缩或是否存在震荡。
4. 混淆矩阵(Confusion Matrix)
该功能通过双重循环对比真实标签与预测标签,生成分类分布矩阵。可视化模块通过热力图形式展现,并利用内置工具函数根据单元格颜色自动切换文字颜色(黑/白),确保数据清晰易读。
5. 决策边界绘制(Decision Boundary)
对于二维特征空间,系统通过创建密集的网格点采样,对每个采样点进行多分类概率预测。利用等高线绘制功能,将不同预测区域的交界处标注出来,直观呈现模型对特征空间的划分逻辑。
使用方法
- 配置环境:在 MATLAB 中打开核心脚本文件。
- 设置数据集:修改代码起始处的
datasetType 变量(1-4)以切换不同的实验场景。 - 调整超参数:根据需要修改
learningRate 和 lambda 以观察模型收敛速度和决策边界的变化。 - 运行系统:点击运行,系统将自动在命令行输出统计指标,并弹出可视化报告窗口。