随机梯度下降分类器和回归器

随机梯度下降分类器并不是一个独立的算法,而是一系列利用随机梯度下降求解参数的算法的集合。

SGDClassifier(分类):

from sklearn.linear_model import SGDClassifier

clf = SGDClassifier(loss="hinge", penalty="l2")

loss function(损失函数):

可以通过 loss 参数来设置。SGDClassifier 支持以下的 loss functions(损失函数):

1)loss="hinge"                         (soft-margin) linear Support Vector Machine ((软-间隔)线性支持向量机),

2)loss="modified_huber"          smoothed hinge loss (平滑的 hinge 损失),

3)loss="log"                             logistic regression (logistic 回归),

惩罚方法:

惩罚方法可以通过 penalty 参数来设定。 SGD 支持以下 penalties(惩罚):

penalty="l2":                L2 norm penalty on coef_.

penalty="l1":                L1 norm penalty on coef_.

penalty="elasticnet":     Convex combination of L2 and L1(L2 型和 L1 型的凸组合); (1 - l1_ratio) * L2 + l1_ratio * L1.

支持多分类以及样本非均衡问题

SGDRegressor

损失函数:

具体的损失函数可以通过 loss 参数设置。 SGDRegressor 支持以下的损失函数:

loss="squared_loss":            Ordinary least squares(普通最小二乘法),

loss="huber":                      Huber loss for robust regression(Huber回归),

loss="epsilon_insensitive":   linear Support Vector Regression(线性支持向量回归).

使用小贴士

1、强烈建议缩放数据 :

将输入向量 X 上的每个特征缩放到 [0,1] 或 [- 1,+1], 或将其标准化,使其均值为 0,方差为 1。

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

scaler.fit(X_train)

假如你的 attributes (属性)有一个固有尺度(例如 word frequencies (词频)或 indicator features(指标特征))就不需要缩放。

2、最好使用 GridSearchCV 找到一个合理的 regularization term (正则化项),它的范围通常在 10.0**-np.arange(1,7)

3、经验表明,SGD 在处理约 10^6 训练样本后基本收敛。因此,对于迭代次数第一个合理的猜想是 n_iter = np.ceil(10**6 / n),其中 n 是训练集的大小。

4、我们发现,当特征很多或 eta0 很大时, ASGD(平均随机梯度下降) 效果更好。

原文地址:https://www.cnblogs.com/yongfuxue/p/9971836.html

时间: 2024-07-30 14:14:52

随机梯度下降分类器和回归器的相关文章

随机梯度下降的逻辑回归算法(SGDLR)

由于第一次实验的实验报告不在这台机器,先写这一算法吧. SGDLR(the Stochastic Gradient Descent for Logistic Regression),要讲解这一算法,首先要把名字拆为几块. 1 随机   2 梯度下降   3逻辑回归 先贴一篇文章:http://blog.csdn.net/zouxy09/article/details/20319673 这篇文章中解释的还不错. 其实这一算法,通俗来讲是这样子的: 1.手中肯定有很多带有label标记的数据,这是训

[Exercise]随机梯度下降、logistic回归

代码: 1 import numpy as np 2 import csv 3 import math as mt 4 5 def hypo(tt,xx): #hypothesis函数 6 exp=mt.e 7 tmp=0.0 8 for i in range(0,4): 9 tmp+=tt[i]*xx[i] 10 ans=mt.pow(exp,tmp)/(1+mt.pow(exp,tmp)) 11 return ans 12 13 def GDA(tt,iter): #随机梯度下降 14 fo

机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)

本文介绍了机器学习中基本的优化算法-梯度下降算法和随机梯度下降算法,以及实际应用到线性回归.Logistic回归.矩阵分解推荐算法等ML中. 梯度下降算法基本公式 常见的符号说明和损失函数 X :所有样本的特征向量组成的矩阵 x(i) 是第i个样本包含的所有特征组成的向量x(i)=(x(i)1,x(i)2...,x(i)n) y(i) 第i个样本的label,每个样本只有一个label,y(i)是标量(一个数值) hθ(x(i)) :拟合函数,机器学习中可以用多种类型的拟合函数 θ 是函数变量,

对数几率回归法(梯度下降法,随机梯度下降与牛顿法)与线性判别法(LDA)

本文主要使用了对数几率回归法与线性判别法(LDA)对数据集(西瓜3.0)进行分类.其中在对数几率回归法中,求解最优权重W时,分别使用梯度下降法,随机梯度下降与牛顿法. 代码如下: 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2017-05-09 15:03:50 4 # @Author : whb ([email protected]) 5 # @Link : ${link} 6 # @Version : $Id$

ng机器学习视频笔记(十五) ——大数据机器学习(随机梯度下降与map reduce)

ng机器学习视频笔记(十五) --大数据机器学习(随机梯度下降与map reduce) (转载请附上本文链接--linhxx) 一.概述 1.存在问题 当样本集非常大的时候,例如m=1亿,此时如果使用原来的梯度下降算法(也成为批量梯度下降算法(batch gradient descent),下同),则速度会非常慢,因为其每次遍历整个数据集,才完成1次的梯度下降的优化.即计算机执行1亿次的计算,仅仅完成1次的优化,因此速度非常慢. 2.数据量考虑 在使用全量数据,而不是摘取一部分数据来做机器学习,

【转】 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比

梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式和实现的角度对两者进行分析,如有哪个方面写的不对,希望网友纠正. 下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降的求解思路如下: (1)将J(theta)对theta求偏导,得到每个theta对应的的梯度 (2)由于是

梯度下降VS随机梯度下降

样本个数m,x为n维向量.h_theta(x) = theta^t * x梯度下降需要把m个样本全部带入计算,迭代一次计算量为m*n^2 随机梯度下降每次只使用一个样本,迭代一次计算量为n^2,当m很大的时候,随机梯度下降迭代一次的速度要远高于梯度下降

随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比

转自:here 注意下面说的全局最优是特殊的情况,一般还是梯度下降的方法还是很容易变成局部最优. 梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路,下面从公式的角度对两者进行分析. 下面的h(x)是要拟合的函数,J(theta)损失函数,theta是参数,要迭代求解的值,theta求解出来了那最终要拟合的函数h(theta)就出来了.其中m是训练集的记录条数,j是参数的个数. 1.批量梯度下降的求解思路如下: (1)将J(theta)对the

NN优化方法对比:梯度下降、随机梯度下降和批量梯度下降

1.前言 这几种方法呢都是在求最优解中经常出现的方法,主要是应用迭代的思想来逼近.在梯度下降算法中,都是围绕以下这个式子展开: 其中在上面的式子中hθ(x)代表,输入为x的时候的其当时θ参数下的输出值,与y相减则是一个相对误差,之后再平方乘以1/2,并且其中 注意到x可以一维变量,也可以是多维变量,实际上最常用的还是多维变量.我们知道曲面上方向导数的最大值的方向就代表了梯度的方向,因此我们在做梯度下降的时候,应该是沿着梯度的反方向进行权重的更新,可以有效的找到全局的最优解.这个θ的更新过程可以描