数学建模社区-数学中国
标题:
关于Logistics回归用于分类的解释
[打印本页]
作者:
杨利霞
时间:
2019-4-21 15:10
标题:
关于Logistics回归用于分类的解释
关于Logistics回归用于分类的解释
; A5 E( ^: H" y; K$ P) \$ X
logistics回归让人最搞不懂的是,明明名字里面带了个回归两个字,为什么这是一种分类算法呢?
3 V" N; p6 _; X7 ~ \
; A m& G1 a3 v3 R+ P
说到回归大家想到的都是根据一些点得出一条直线或者曲线。的确logistics回归也是得出一条直线,然后如果这个点在这条线的一边比如说上面属于一个类别,另一个点处于这条线的另一边比如说下边则属于另一个类别。
8 m' }* \6 K. T# @8 h6 b
7 R2 i4 S3 h* e; w, d
这条直线是怎么得出的呢?
; c, l1 e( M& F- S' E: _
7 `& Q3 S1 @1 M* [% S) _3 n/ G
首先假设所有的输入为(x0,x1....xn),输入前面的系数为(w0,w1...wn),输出为y
' |; V$ v* Y# x7 t! ]6 n. b8 Q
3 s. E' K1 L" A2 c- ]8 I
我们可以得出y=w0*x0+w1*x1...wn*xn
" [+ U; b, r5 Y$ c" T* D
" o% K; T: \0 ^" N5 O5 I
然后将系数(w0,w1..wn)取随机值。然后开始训练网络。训练的算法叫做梯度上升算法
4 u* U* o7 L4 V: g
9 S8 s% S# \: d j- k. `/ s
根据y=w0*x0+w1*x1...wn*xn,我们可以对所有输入(x0,x1...xn)求导即是求梯度。
6 @/ u* g# M6 i; D! a. f3 l+ I
0 M8 q( n' [7 a# k* ]% W7 ~3 {
' f& M) D( h, o
/ |1 {# C0 ]; [1 c3 m: F) A2 E
7 ]! G0 ?/ G5 j7 l% j# W; Q; V) V' O
这个公式什么意思呢?学过微积分的同学都知道,问题是像我这种没学好的就放放吧。大家只要知道能通过将矩阵转一下就能得到,转一下的意思在下面
+ N$ X- \/ T- T
, ?; m F! \/ c; _$ F8 @: z
假设dataMatIn=array([[3,3],[4,4]])
1 A( F9 A0 B3 [5 M% P
; y% k: V6 i$ ?2 |: @3 n
那么dataMatIn的梯度就是dataMatIn.transpose() => array([[3,4],[3,4]])
{5 E6 N+ h7 b6 \7 A
- s$ N- i) ~2 v6 J# E' X* z
然后就完成了。
7 N4 c2 U- ~' v$ i6 E/ {
% N; O- ` j" ~: ]5 x' W" p) p
继续讲如何训练的,我们还需要计算期望结果和输出的差error以及假设一个步长a,步长a是根据经验来决定的,步长太短很可能训练了很久还没找到最适合的值,步长太长就能难准确地到达合适的值。
+ ]+ a, W$ y3 A! R
- R, ~ V5 z2 u ?) n+ s/ D! _
然后我们的新的w=w+a*array(x0,x1...xn)*error
1 x) v: m4 O$ _' h( X* L+ r
; _+ v, A: e" F9 a( c
一般设置循环多少次然后停止或者当error小于多少值得时候算法停止
- c7 J' {' i h: b3 l& v9 g
8 o& M6 `# F4 c8 h' I. |
最后我们还要将y输入进阶跃函数来完成分类。不过由于阶跃函数在零点没有值所以有各种各样的麻烦,所以换成sigmoid函数,当<0.5时等于0,当 >0.5时等于1
H6 C9 M% Q2 ~% n: V9 ?
% {5 N" N n8 r' H
# E5 O" s L2 C6 \
6 m5 s3 ]3 O9 J) V, k
数学建模解题思路与方法.pptx
2019-4-21 15:11 上传
点击文件名下载附件
下载积分: 体力 -2 点
117.69 KB, 下载次数: 3, 下载积分: 体力 -2 点
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5