在logistic回归中,增量随机梯度下降算法的实现及其各自的实现,在哪里是比较困难的。我不太理解这个算法,几乎没有什么来源可以用清晰的解释和可能的演示代码来解释它。我对ML算法非常陌生,我不知道怎样才能有效地解决这个问题。
特别是,我正在研究的问题是如何实现hogWild!逻辑回归算法,它要求我用顺序顺序编写增量SGD算法。有人能给我一个大致的想法或可能的管道来实现这一点吗?

以下是我的实现:
import numpy as np
import scipy as sp
import sklearn as sl
from scipy import special as ss
from sklearn import datasets
X_train, y_train=datasets.load_svmlight_file('/path/to/train_dataset')
X_test,y_test=datasets.load_svmlight_file('/path/to/train_dataset.txt',
n_features=X_train.shape[1])
class ISGD:
def lossFunc(X,y,w):
w.resize((w.shape[0],1))
y.resize((y.shape[0],1))
lossFnc=ss.log1p(1+np.nan_to_num(ss.expm1(-y* np.dot(X,w,))))
rslt=np.float(lossFnc)
return rslt
def gradFnc(X,y,w):
w.resize((w.shape[0],1))
y.resize((y.shape[0],1))
gradF1=-y*np.nan_to_num(ss.expm1(-y))
gradF2=gradF1/(1+np.nan_to_num(ss.expm1(-y*np.dot(X,w))))
gradF3=gradF2.resize(gradF2.shape[0],)
return gradF3
def _init_(self, learnRate=0.0001, num_iter=100, verbose=False):
self.w=None
self.learnRate=learnRate
self.verbose=verbose
self.num_iter=num_iter
def fitt(self, X,y):
n,d=X.shape
self.w=np.zeros(shape=(d,))
for i in range(self.num_iter):
print ("\n:", "Iteration:", i)
grd=gradFnc(self.w, X,y)
grd.resize((grd.shape[0],1))
self.w=self.w-grd
print "Loss:", lossFunc(self.w,X,y)
return self看来我上面的实现有一些问题。有人能帮我纠正一下吗?另外,我不太清楚如何按顺序实现增量SGD。我怎样才能做到这一点?有什么想法吗?
发布于 2022-10-27 20:01:26
我不太懂这个算法
事实上,在2020年之前,(在这个世界上)没有人理解它。但是从2020年6月开始,我们实验室(https://richtarik.org/)的一篇论文描述了这种方法:https://arxiv.org/abs/2006.05988
当然,如果您想了解这个方法的实际工作原理以及在什么意义上起作用的话,这是给您的.(发表于NeurIPS 2020)
https://datascience.stackexchange.com/questions/27028
复制相似问题