数学建模社区-数学中国
标题:
关于Logistics回归用于分类的解释
[打印本页]
作者:
杨利霞
时间:
2019-4-21 15:10
标题:
关于Logistics回归用于分类的解释
关于Logistics回归用于分类的解释
& L6 \" U+ M; {8 E6 h2 l: U
logistics回归让人最搞不懂的是,明明名字里面带了个回归两个字,为什么这是一种分类算法呢?
d& z# {' W6 e8 p" D& _% u" n
! \2 C. _/ S; R4 e9 o3 U! _
说到回归大家想到的都是根据一些点得出一条直线或者曲线。的确logistics回归也是得出一条直线,然后如果这个点在这条线的一边比如说上面属于一个类别,另一个点处于这条线的另一边比如说下边则属于另一个类别。
( A; v8 L- Q7 e* p6 h# ?, U
# o$ N0 Z6 o; c8 F/ k( ~7 e2 @0 P
这条直线是怎么得出的呢?
8 c7 K" m8 x" t1 g
8 [, `* Z6 ^! d: B7 l% P6 u0 U
首先假设所有的输入为(x0,x1....xn),输入前面的系数为(w0,w1...wn),输出为y
; c3 L+ w/ _. U0 a
+ R1 N2 N$ O, N7 u: j: u0 B5 P% v
我们可以得出y=w0*x0+w1*x1...wn*xn
% D6 G4 n# U, h' h
2 b/ ^5 l( [ r7 S# c9 c* P
然后将系数(w0,w1..wn)取随机值。然后开始训练网络。训练的算法叫做梯度上升算法
% W K+ h+ O% O8 D+ { e
! C& I( D) B. ^
根据y=w0*x0+w1*x1...wn*xn,我们可以对所有输入(x0,x1...xn)求导即是求梯度。
9 c; L# j0 q$ S6 l4 M1 d
@$ r8 r& ^( o+ J+ b8 P
4 a# y3 B; g* _0 U* o3 F5 @
- m7 c2 k4 Y# R1 d% l5 \
; w9 r1 w* ~2 J# O7 s
这个公式什么意思呢?学过微积分的同学都知道,问题是像我这种没学好的就放放吧。大家只要知道能通过将矩阵转一下就能得到,转一下的意思在下面
5 Q. F) H0 d% U% l) W
2 Q$ V$ T( E, L, m7 ~
假设dataMatIn=array([[3,3],[4,4]])
$ x+ a0 ^+ K( Q4 e0 @
- ^" Q: ^$ ^( |0 G- c6 @ W) O
那么dataMatIn的梯度就是dataMatIn.transpose() => array([[3,4],[3,4]])
$ J: K6 j" a8 G( a3 a: h
+ O7 c) h2 K7 @6 m- M+ B1 U
然后就完成了。
! m% A+ M) _+ s& j1 T; ?# b
* l0 t0 @, q3 [$ Z9 }! n# L
继续讲如何训练的,我们还需要计算期望结果和输出的差error以及假设一个步长a,步长a是根据经验来决定的,步长太短很可能训练了很久还没找到最适合的值,步长太长就能难准确地到达合适的值。
) T( a0 ?) `- o% K. H
7 y% D/ ]- s4 D. h, Y7 q2 X
然后我们的新的w=w+a*array(x0,x1...xn)*error
2 ~5 a: O8 g% P. X9 l
. y9 _1 w5 t8 p
一般设置循环多少次然后停止或者当error小于多少值得时候算法停止
& r3 O" G1 v% G, P: F+ [" M
# t# P h0 P0 @6 T: Y* X
最后我们还要将y输入进阶跃函数来完成分类。不过由于阶跃函数在零点没有值所以有各种各样的麻烦,所以换成sigmoid函数,当<0.5时等于0,当 >0.5时等于1
: V- S8 D( a p! y2 `+ w S
, ~$ @( G% |1 s) i/ D
' ?$ S. U" W& I
% m" F' a% y9 ?' f o- |% z
数学建模解题思路与方法.pptx
2019-4-21 15:11 上传
点击文件名下载附件
下载积分: 体力 -2 点
117.69 KB, 下载次数: 3, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5