一种简单的二分类模型

本文将简单介绍逻辑回归中的常用模型——基于梯度下降优化的逻辑回归二分类模型的编程实践。
在本文开始前,你需要具备这些基础:
1、线性代数
2、导数与偏导数
3、概率论与数理统计基础(主要指逻辑斯蒂函数[1]的运用)
4、线性回归模型
5、逻辑回归模型的概念

好,我们开始吧。
一、数据设置与建立矩阵
该部分我使用预先设置好的数据集,便于观察效果。
大佬可以用xlrd库直接导入,由于我刚学Python太菜了没有办法。
以列表形式给出后,构造矩阵,这里将自变量、因变量与权重分别分为三个矩阵:

upload successful

二、构造梯度下降损失单次迭代
设自变量矩阵为X,因变量矩阵为Y,权重矩阵为θ,有:

upload successful

(我下次有时间得把渲染公式的插件搞上去,插入图片真是累死人)
此步需要注意求相乘构成的列向量的矩阵须用np.exp()函数,用math.exp()会出大问题!

我们将真实的因变量矩阵表示为Y0,那么误差为:

upload successful

这里我们取Y作为前面的减数,去掉绝对值。
根据损失函数[2],求导并经过矩阵变换得到:

upload successful

此步我们在迭代中设置一个空矩阵A用于储存迭代的误差与向量星乘之和a通过np.c_[]压入空矩阵A,再将A依次与列向量相乘并求和,最后按以上公式迭代(A须转置)

1
2
#伪代码
a = sum((Y-Y0)*xi

三、构造循环
此步同线性回归,设置循环结束条件iterations、步长(学习率)α、计数器cnt、数据个数m,套上第二步中所述梯度下降,完成。
四、函数泛化及输出
此步推导该公式使得三维决策平面降到二维决策边际:

upload successful

设置x1在数据的最小值与最大值之间(此处取0.1间距),输出。
五、效果展示

upload successful

迭代次数:10000
学习率:0.1
无初值扰动
可以看见,决策边际将圆点与三角点区分开来

轨迹图如下:

upload successful

迭代次数:100
学习率:0.1
无初值扰动
可以看见,该决策边际从平行x轴出发,经过多次拟合,最后得到橘黄色直线(斜率最大负值的一条)

老实说,有上下摆动我是没想到的

六、下载项

二分类逻辑回归

效果图

七、参考资料
[1]逻辑斯蒂函数
[2]损失函数