关闭
当前位置:首页 - 国际国内新闻 - 正文

喉咙痒咳嗽怎么办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的有趣行为收集大全

admin 2019-08-14 185°c

收拾 | Jane

出品 | AI科技大本营(ID:rgznai100)

【导语】学习逻辑回归模型,今日的内容轻松带你从0到100!阿里巴巴达摩院算法专家、阿里巴巴技能发展专家、阿里巴巴数据架构师联合编撰,从技能原理、算法和工程实践3个维度体系打开,既合适零根底读者快速入门,又合适有根底读者了解其中心技能;写作办法上避开了艰涩的数学公式及其推导,浅显易懂。

0、前语

简略了解逻辑回归,便是在线性回归根底上加一个 Sigmoid 函数对线性回归的成果进行紧缩,令其终究猜测值 y 在一个规模内昭通天气预报。这儿 Sigmoid 函数的作用便是将一个接连的数值紧缩到必定规模内,它将终究猜测值 y 的规模紧缩到在 0 到 1 之间。尽管逻辑回归也有回归这个词,但因为这儿的自变量和因变量呈现的对错线性联系,因而严厉意义上讲逻辑回归模型归于非线性模型。逻辑回归模型一般用来处理二分类问题,如图 4-4 所示。在逻辑回归中,核算出的猜测值是一个 0 到 1 的概率值,一般的,咱们以 0.5 为分界线,假如猜测的概率值大于 0.5 则会将终究成果笔记归嗓子痒咳嗽怎样办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的风趣行为搜集大全为 1 这个类别,假如猜测的概率值小于等于 0.5 则会将终究成果归为 0 这个类别。而 1 和 0 在实践项目中或许代表了许多意义,比方 1 代表恶性肿瘤,0 代表良性肿瘤,1 代表嗓子痒咳嗽怎样办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的风趣行为搜集大全银行能够给小王借款,0 代表银行不能给小王借款等等。

赵一荻

图4-4 逻辑回归分类暗示图

尽管逻辑回归很简略,但它被广泛使用在实践出产之中,并且经过改造逻辑回归也能够处理多分类问题。逻辑回归不只自身十分受欢迎,它相同也是咱们将在第 5 章介绍的神经网络的根底。一般神经网络中,常常运用 Sigmoid 对神经元进行激活。关于神经网络的神经元,第 5 章会有详细的介绍(第 5 章会再次说到 Sigmoid 函数),这儿仅仅先提一下逻辑回归和神经网络的联系,读者有个形象。

1、Sigmoid 函数

Sigmoid 的函数表达式如下:

该公式中,e 约等于 2.718,z 则是线性回归的方程式,p 为核算出来的概率,规模在 0 到 1 之间。接下来咱们将这个函数制作出来,看看它的形状。运用 Python 的 Numpy 以及 Matplotlib 库进行编写,代码如下:

defsigmoid(x):y = 1.0/ (1.0+ np.exp(-x))returny

plot_x = np.linspace(-10, 10, 100)plot_y = sigmoid(plot_x)plt.plot(plot_x, plot_y)plt.show

作用如图 4-5 所示:

图4-5 Sigmoid函数

咱们对上图做一个解说,当 x 为 0 的时分,后妈Sigmoid 函数值为 0.5,跟着 x 的不断增大,对应的 Sigmoid 值将无线逼近于 1;而跟着 x 的不断的减小,Sigmoid 值将不断逼近于 0 。所以它的值域是在 (0,1) 之间。因为 Sigmoid 函数将实数规模内的数值紧缩到(0,1)之间,因而也被称为紧缩函数。但这儿多提一下,紧缩函数其实能够有许多,比方 tanh 能够将实数规模内的数值紧缩到(-1,1)之间,因而 tanh 有时也会被成为紧缩函数。

2、 梯度下降法

在学习 4.1.1 末节的时分,咱们在介绍一元线性回归模型的数学表达之后又介绍了一元线性回归模型的练习进程。类似的,在 4.2.1 末节学习完逻辑回归模型的数学表达之后咱们来学习逻辑回归模型的练习办法。首要与 4.1.1 末节类似,咱们首要需求确认逻辑回归模型的点评办法,也便是模型的优化方针。有了这个方针,咱们才干更好地“教”模型学习出咱们想要的东西。这儿的方针也和 4.1.1 相同,界说为

接下来是挑选优化这个方针的办法,也便是本末节中要点要介绍的梯度下降法。

首要带咱们简略认识一下梯度下降嗓子痒咳嗽怎样办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的风趣行为搜集大全法。梯度下降算法(Gradient Descent Optimization)是常用的最优化办法之一。“最优化办法”归于运筹学办法,它指在某些束缚条件下,为某些变量选取哪些的值,使得设定的方针函数到达最优的问题。最优化办法有许多,常见的有梯度下降法、牛顿法、共轭梯度法等等。因为本书要点在于带咱们快速把握“图画辨认”技能,因而暂时不对最优化办法进行打开,感兴趣的读者能够自行查阅相关材料进行学习。因为梯度下降是一种比较常见的最优化办法,并且在后续第 5 章、第 7 章的神经网络中咱们也将用到梯度下降来进行优化,因而咱们将在本章详细介绍该办法。

接下来咱们以图形化的办法带领读者学习梯度下降法。

咱们在 Pycharm 新建一个 python 文件,然后键入以下代码:

经过上述代码,咱们就能画出如图 4-6 所示的丢失函数暗示图,其间 x 轴代表的是咱们待学习的参数 (theta),y 轴代表的是丢失函数的值(即 loss 值),曲线 y 代表的是丢失函数。咱们的方针是期望经过很多的数据去练习和调整参数,使丢失函数的值最小。想要到达二次方程的最小值点,能够经过求导数的办法,使得导数为 0 即可。也便是说,横轴上 2.5 的方位对应丢失最小,在该点上一元二次方程 切线的斜率则为 0。暂时将导数描绘为 ,其间 J 为丢失函数,为待求解的参数。

梯度下降中有个比较重要的参数:学习率 (读作eta,有时也称其为步长),它操控着模型寻觅最优解的速度。参加学习率后的数学表达为 。

图4-6 丢失函数暗示图

接下来咱们画图模仿梯度下降的进程。

1. 首要界说丢失函数及其导数

defdJ(theta):#丢失函数的导数return2* (theta - 2.5)

2. 经过 Matplotlib 制作梯度下降迭代进程,详细代码如下:

咱们来看下所制作的图画是什么姿态的,能够调查到 从初始值 0.0 开端不断的向下行进,一开端的起伏比较大,之后渐渐趋于平缓,逐步挨近导数为 0,总共走了 46 步。如图 4-7 所示:

图4-7 一元二次丢失函数梯度下降进程暗示图

3、学习率的剖析

上一末节咱们首要介绍了什么是梯度下降法,本末节首要介绍学习率关于梯度下降法的影响。

第一个比如,咱们将 设置为 0.01(之前是 0.1 ),咱们会调查到,步长削减之后,蓝色的符号更密布,阐明步长削减之后,从起始点到导数为 0 的步数添加了。步数变为了 424 步,这样整个学习的速度就变慢了。作用如图 4-8 所示:

图嗓子痒咳嗽怎样办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的风趣行为搜集大全4-8 学习率时,一元二次丢失函数梯度下降进程暗示图

第二个比如,咱们将 设置为 0.8,咱们会调查到,代表蓝色的步长在丢失函数之间跳动了,但在跳动进程中,丢失函数的值仍然在不断的变小。步数是 22被挽救的姜戈 步,因而当学习率为 0.8 时,优化进程时刻缩短,可是终究也找到了最优解。作用如图 4-9法龙功 所示:

图4-9 学习率 时,一元二次丢失函数梯度下降进程暗示图

第三个比如,咱们将设置为1.1,看一下效嗓子痒咳嗽怎样办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的风趣行为搜集大全果。这儿留意,学习率自身是一个 0 到 1 的概率,因而 1.1 是一个过错的值,但为了展现梯度过大会呈现的状况,咱们暂时用这个值来画图暗示。咱们会发现程序会报这个过错 OverflowError: ( 34, 'Result too large' )。咱们能够幻想得到,这个步长跳动的方向导致了丢失函数的值越来越大,所以才报了“Result too large”作用,咱们需求修改下求丢失函数的程序:

  • 琅琊榜演员表

别的咱们需求添加一下循环的次数。

咱们能够很明显的看到,咱们丢失函数在最下面,学习到的丢失函数的值在不断的增大,万鹏也便是说模型不会找到最优解。如图 4-10 所示:

图4-10 学习率时,一元二次丢失函数不收敛

经过本末节的几个比如,简略讲解了梯度下降法,以及步长 的作用。从三个试验咱们能够看出,学习率是一个需求仔细调整的参数,过小会导致收敛过慢,而过大或许导致模型不收敛。

4、逻辑回归的丢失函数

逻辑回归中的 Sigmoid 函数用来使值域在(0,1)之间,结合之前所讲的线性回归,咱们所得到的完好的公式其实是:,其间的便是之前所介绍的多元线性回归。

现在的问题就比较简略明了了,关于给定的样本数据集 X,y,咱们怎样找到参数 theta ,来取得样本数据集 X 所对应分类输出 y(经过p的概率值)

需求求解上述这个问题,咱们就需求先了解下逻辑回归中的丢失函数,假定咱们的猜测值为:

丢失函数假定为下面两种状况,y 表明真值;表明为猜测值:

结合上述两个假定,咱们来剖析下,当 y 真值为 1 的时分,p 的概率值越小(越挨近0),阐明y的猜测值倾向于0,丢失函数 cost 就应该越大;当 y 真值为 0 的时分,假如这个时分 p 的概率值越大则同理得到丢失函数 cost 也应该越大。在数学上咱们想运用一个函数来表明这种现象,能够运用如下这个:

咱们对上面这个函数做必定的解说,为了更直观的调查上述两个函数,咱们经过 Python 中的 Numpy 以及空间亿宠之鬼手萌妃 Matplotlib 库进行制作。

咱们先制作下 ,代码如下:

  • 胃病

deflogp(x):y = -np.log(x)returny

plot_x = np.linspace(0.001, 1, 50) #取0.001防止除数为0

plot_y = logp(plot_排卵试纸怎样用x)plt.plot(plot_x, plot_y)plt.show

如下图4-9所示:

图4-9 丢失函数if y=1

当p=0的时分,丢失函数的值趋近于正无量,依据阐明y的猜测值 倾向于0,但实践上咱们的 y 真值为 1 。当 p 到达 1 的时分,y 的真值和猜测值相同,咱们能够从图中调查到丢失函数的值趋近于 0 代表没有任何丢失。

咱们再来制作一下,代码如下:

plot_x = np.linspace(0, 0.99, 50) #取0.99防止除数为0plot_y = logp2(plot_x)plt.plot(plot_x, plot_y)plt.show

作用如图4-10所示:

图4-10 丢失函数 if y=0

当p=1的时分,丢失函数的值趋近于正无量,依据 阐明y的猜测值 倾向于 1,但实践上咱们的 y 真值为 0 。当 p 到达 0 的时分,y 的真值和猜测值相同,咱们能够从图中调查到丢失函数的值趋近于 0 代表没有任何丢失。

咱们再对这两个函数略微收拾下,使之组成一个丢失函数:

对这个函数略微解说下,当 y=1 的时分,后边的式子就变为了 0 ,所以整个公式成为了;当 y=0 的时使命管理器快捷键候前面的式子变为了 0,整个公式就变为了。

最终就变为了,对m个样本,求一组值使得丢失函数最小。

公式如下:

(其间= sigmoi;其间 代表了;恒等于1;为列向量)。

当公式变为上述的时分,关于咱们来说,只需求求解一组使得丢失函数最小就能够了,那么关于如此杂乱的丢失函数,咱们一般运用的是梯度下降法进行求解。

5、Python完成逻辑回归

结合之前讲的理论,本末节开端着手完成一个逻辑回归算法。首要咱们界说一个类,姓名为 LogisticRegressionSelf ,其间初始化一些变量:维度、截距、theta 值,代码如下:

def__init__(self):"""初始化Logistic regression模型"""self.coef_ = None#维度self.intercept_ = None#截距self._theta = None

接着咱们完成下在丢失函数中的 这个函数,咱们之前在

Sigmoid 函数那个末节现已完成过了,关于这个函数咱们输入的值为多元线性回归中的(其间恒等于1),为了添加履行功率,咱们主张运用向量化来处理,而尽量防止运用 for 循环,所以关于咱们运用来替代,详细代码如下:

接着咱们来完成丢失函数,

代码如下:

然后咱们需求完成下丢失函数的导数。详细求导进程读者能够自行百度,咱们这边直接给出定论,关于丢失函数cost,得到的导数值为: ,其间,之前提过考虑核算功能尽量防止运用 for 循环完成累加,所以咱们运用向量化核算。

完好代码如下:

classLogisticRegressionSelf:

def__init__(self):"""初始化Logistic regression模型"""self.coef_= None #维度self.intercept_= None #截距self._theta = None

#sigmoid函数,私有化函数def_sigmoid(self,x):y = 1.0/ (1.0+ np.exp(-x))returny

deffit(做梦梦到蛇self,X_train,y_train,eta=0.01,n_iters=1e4):assert X_train.shape[0] == y_train.shape[0], '练习数据集的长度需求和标签长度保持一致'

#核算丢失函数defJ(theta,X_b,y):p_predcit = self._sigmoid(X_b.dot(theta))tr男科护理y:r沈梦辰杜海涛eturn-np.sum(y*np.log(p_predcit) + (1-y)*np.log(1-p_predcit)) / len(y)except:returnfloat('inf')

#求sigmoid梯度的导数defdJ(theta,X_b,y):x = self._sigmoid(X_b.dot(theta))returnX_b.T.dot(x-y)/len(X_b)

#模仿梯度下降defgradient_descent(X_b,y,ini嗓子痒咳嗽怎样办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的风趣行为搜集大全tial_theta,eta,n_iters=1e4,epsilon=1e-8):theta = initial_thetai_iter = 0whilei_iter < n_iters:gradient = dJ(theta,X_b,y)last_theta = thetat鬼吹灯2heta = theta - eta * gradienti_iter += 1if(abs(J(theta,X_b,y) - J(last_theta,X_b,y)) < epsilon):breakreturntheta

X_b = np.hstack([np.ones((len(X_train),1)),X_train])initial_theta = np.zeros(X_b.s嗓子痒咳嗽怎样办,从原理到代码,轻松深化逻辑回归模型!-网友干的沙雕事,网民的风趣行为搜集大全hape[1]) #列向量self._theta = gradient_descent(X_b,y_train,initial_theta,eta,n_iters)self.intercept_= self._theta[0] #截距self.coef_= self._theta[1:] #维度returnself

defpredict_proba(self,X_predict):X_b = np.hsta88517888ck([np.ones((len(X_predict), 1)), X_predict])returnself._sigmoid(X_b.dot(self._theta))

defpredict(self,X_predict):proba = self.predict_proba(X_predict)returnnp.array(proba > 0.5,dtype='int')

小结

以上内容首要叙述了线性回归模型和逻辑回归模型,并做了相应的完成。其间线性回归是逻辑回归的根底,而逻辑回归经常被作为神经网络的神经元,因而逻辑回归又是神经网络的根底。咱们借逻辑回归模型介绍了机器学习中离不开的最优化办法,以及最常见的最优化办法——梯度下降。了解本节内容会对接下来第 5 章神经网络的学习有着很大的协助。本文摘自《深度学习与图画辨认:原理与实践》,经出书方授权发布。

作者介绍

  • 魏溪含

爱丁堡大学人工智能硕士,阿里巴巴达摩院算法专家,在核算机视觉、大数据范畴有8年以上的算法架构和研制经历。

在大数据范畴,曾带领团队对阿里巴巴个性化引荐体系进行晋级;核算机视觉360导航范畴,主导并霸占了光伏 EL 全自动瑕疵辨认的国际难题,并在行为辨认范畴带领团队参赛打破国际纪录等。

  • 涂铭

阿里巴巴数据架构师,对大数据、自然语言处理、图画辨认、Python、Java 相关技能有深化的研讨,积累了丰厚的实践经历。在工业范畴曾参加了燃煤优化、设备故障诊断项目,正泰光伏电池片和组件 EL 图画检测项目;在自然语言处理方面,担任导购机器人项目的架构师,主导开发机器人的语义了解、短文本类似度匹配、上下文了解,以及经过自然语言检索产品库,在项目中构建了 NoSQL+文本检索等大数据架构,也一起担任问答对的收拾和产品特点的提取,带领 NLP 团队构建语义解析层。

  • 张修鹏

结业于中南大学,阿里巴巴技能发展专家,长时间从事云核算、大数据、人工智能与物联网技能的商业化使用,在阿里巴巴初次将图画辨认技能引进工业,并推进图画辨认产品化、渠道化,擅于整合前沿技能处理工业问题,主导多个大数据和AI为中心的数字化转型项目成功施行,对技能和商业结合有着深入的了解。

9大技能论坛、60+主题共享,百余家企业、千余名开发者一起相约 2019 AI ProCon!技能驱动工业,聚集技能实践,倾听大牛共享,和万千开发者共生长。5折优惠票抢购中!

长园集团
标签: 未定义标签
admin 14文章 0评论 主页

  用户登录