线性模型是最基础的模型,便于我们掌握机器学习的基本方法。机器学习可以分为两大类任务:回归任务,分类任务。因此我把线性模型做如下分类: 一、线性回归 机器学习,就是根据已知数据,学习出一个数学函数。对于线性回归,需要学习的函数形式为: 只要学得了其中的ω和b,模型就被确定了。确定参数的关键在于衡量预测输出f(x)与实际输出y之间的差距。 1.二元线性回归 二元线性回归需要学的函数为:
利用最小二乘法,基于均方误差最小化进行模型求解,求ω和b使得E(ω,b)最小: 对函数求一阶偏导,分别令其等于零即可求得相应参数。 2.多元线性回归 二元线性回归只有一个属性,也就是只需要学习一个权重。而多元线性回归有多个属性,需要学习多个权重(属性数为d,样本数为m): 写成矩阵形式为: 为便于计算,将ω和b合为:
依然是使用最小二乘法计算预测输出与实际输出的差别,化简后的均方误差为: 对均方误差求一阶导,令其等于零即可求得参数。(此处涉及到矩阵微分公式)
二、逻辑回归 1.二分类学习 对于二分类任务,最理想的就是阶跃函数。但是阶跃函数不连续,因此使用单调连续的对数几率函数作为替代,带入权重和偏差,预测函数为: 求几率,并对几率取对数,即可进行预测。其值为正则为正样本,其值为负则为负样本: 同样求得ω和b就求得了模型。将ω和b合成为β=(ω;b),用极大似然法计算β。在概率统计课中学到的极大似然法,写出似然函数后对其取对数,然后求导等于零就能求得相应参数,但是西瓜书上写用梯度下降法和牛顿法进行数值优化,这块我没看懂……应该是还要通过多次迭代更新参数使之接近最优解的意思。 2.多分类学习 多分类其实是被分为了多个二分类问题。将多分类转化为二分类有三种方法:OvO, OvR, MvM。OvO就是简单的两两匹配,统计样本在每个分类器之中的分类结果,结果出现最多的那个就是最终预测结果。OvR就是一个类别为正,其他所有类别都为负,样本在所有分类器中唯一判别为正的结果即为最终预测结果。MvM是若干类为正,若干类为负,这种划分方法需要特殊的设计。
sklearn逻辑回归实现mnist分类
相关网址: sklearn逻辑回归官网文档 sklearn逻辑回归类使用说明 sklearn逻辑回归实现mnist分类官方代码 mnist数据集下载网址 关于sklearn有两点说明: 1.在sklearn中的逻辑回归加入了正则化,有l1和l2两种。正则化就是在代价函数后面加一个惩罚项,为了防止过拟合。 2.sklearn中有ovr和multinomial两种多分类划分方式。multinomial具体怎么划分的我还不太清楚,我觉得应该算MvM的一种吧。 这个代码我没有改直接运行了一下。它用的l1正则化以及multinomial法。比较直观的是它把模型可视化了,蓝色为正样本,橘色为负样本: