《Python大规模机器学习》 —2.3.3Scikit-learn的SGD实现

举报
华章计算机 发表于 2020/02/14 21:38:25 2020/02/14
【摘要】 本节书摘来自华章计算机《Python大规模机器学习》 一书中第2章,第2.3.3节,作者是[荷]巴斯蒂安·贾丁(Bastiaan Sjardin)[意]卢卡·马萨罗(Luca Massaron)[意]阿尔贝托·博斯凯蒂(Alberto Boschetti),王贵财 刘春明 译。

2.3.3Scikit-learn的SGD实现

Scikit-learn软件包含许多在线学习算法。并不是所有机器学习算法都有在线学习算法,但是在线算法种类一直在稳步增长。在监督学习方面,我们将可用学习器分成分类器和回归器,并列举它们。

对于分类器有以下几点说明:

 sklearn.naive_bayes.MultinomialNB

 sklearn.naive_bayes.BernoulliNB

 sklearn.linear_model.Perceptron

 sklearn.linear_model.PassiveAggressiveClassifier

 sklearn.linear_model.SGDClassifier

回归器有两种选择:

 sklearn.linear_model.PassiveAggressiveRegressor

 sklearn.linear_model.SGDRegressor

它们都可以增量学习,逐实例更新自己,但只有SGDClassifier和SGDRegressor是基于我们之前描述的随机梯度下降优化算法,本章重点介绍它们。对于所有大型问题,SGD学习器都为最优,因为其复杂度为O(k*n*p),其中k为数据遍历次数,n为实例数量,p为特征数(如果使用稀疏矩阵为非零特征):一个完全线性时间学习器,学习时间与所显示的实例数量成正比。

其他在线算法将被用作比较基准。此外,基于在线学习的partial_fit 算法和mini-batch(传输更大块非单个实例)的所有算法都使用相同API。共享相同API便于这些学习技术在你的学习框架中任意互换。

拟合方法能使用所有可用数据进行即时优化,与之相比,partial_fit基于传递的每个实例进行局部优化。即使数据集全传递给partial_fit,它也不会处理整批数据,而是处理每个元素,以保证学习操作的复杂度呈线性。此外,在partial_fit后,学习器可通过后续调用partial_fit来不断更新,这样的方法非常适合于从连续数据流进行在线学习。

分类时,唯一要注意的是,第一次初始化时需要知道要学习的种类数及其标记方法。可以使用类参数来完成,并指出标签数值的列表。这就需要事先进行探索,疏理数据流以记录问题的标签,并在不平衡情况下关注其分布——相对其他类,该类在数值上会太大或太小(但是Scikit-learn提供了一种自动处理问题的方法)。如果目标变量为数值变量,则了解其分布仍然很有用,但是这对于成功运行学习算法来说不是必需的。

Scikit-learn中有两个实现——一个用于分类问题(SGDClassfier),一个用于回归问题(SGDRegressor)。分类实现使用一对多(OVA)策略处理多类问题。这个策略就是,给定k个类,就建立k个模型,每个类针对其他类的所有实例都会建立一个模型,因此总共创建k个二进制分类。这就会产生k组系数和k个向量的预测及其概率。最后,与其他类比较每类的发生概率,将分类结果分配给概率最高的类。如果要求给出多项式分布的实际概率,只要简单地与其相除就能对结果归一化。(神经网络中的softmax层就会这么处理,下一章会看到详细介绍。)

Scikit-learn中实现分类和SGD回归时都会有不同的损失函数(成本函数,随机梯度下降优化法的核心)。

可以按照以下内容用损失参数表示分类:

 loss='log':经典逻辑回归

 loss='hinge':软边界,即线性支持向量机

 loss='modified_huber':平滑hinge loss

回归有三个损失函数:

 loss='squared_loss':普通最小二乘法线性回归(OLS)

 loss='huber': 抗噪强的鲁棒回归抗Huberloss

 loss='epsilon_insensitive':线性支持向量回归

我们将给出一些使用经典统计损失函数的实例,例如对数损失和OLS。下一章讨论hinge loss和支持向量机(SVMS),并详细介绍其功能。

作为提醒(这样读者就不必再查阅其他机器学习辅助书籍),如果回归函数定义为h,其预测由h(x)给出,因为X为特征矩阵,那么其公式如下:

image.png

因此,最小化的OLS成本函数如下:

image.png

在逻辑回归中,将二进制结果0/1变换为优势比,пy为正结果的概率,公式如下:

image.png

因此,对数损失函数定义如下:

image.png


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。