预测算法模型系列(七)

二元逻辑回归算法

项目做完了好一阵了,腾出点时间把算法简单整理一下,供大家参考。这里暂时只对预测结果是0、1两种情况的算法计算,如果预测结果是0、1、2.。。。或者A、B、C。。。等多个结果的话,再说,哈哈。

言归正传,我们前面准备好了数据,就是为了提供给算法进行计算,那么我们就努力去寻找自变量和因变量的关系吧。自变量可以多个,但是因变量只能是一个(也可能有多个的情况,这里不讨论,再开文章分析),所以很简单,就是一个多个因素影响一个结果的问题啦。

从数学角度考虑,凡事都能加减乘除计算,你可能觉得汉字不能加减乘除、图片不能加减乘除。。。但是我们在数据清洗的时候将文本、图片、音频等等进行数字化,就解决了不能直接计算的问题啦,例如汉字我们可以转成ASCII码,图片音频压缩取MD5再转ASCII码等等。

参考:定性变量和定量变量之间的转化

这样我们把自变量都做成可以计算的类型了,那就尝试找一找有没有一组权重数据,能让这些自变量计算后的值与因变量的值很贴合,这就是我们逻辑回归的最基本目标。

\begin{bmatrix} a1 & a2 & a3...\\ b1 & b2 & b3...\\ ... \end{bmatrix} \times \begin{bmatrix} \textbf{w1} & \textbf{w2} & \textbf{w3...} \end{bmatrix}= \begin{bmatrix} y1\\ y2\\ ... \end{bmatrix}

为了这个目标我们要有一个办法,去将计算的结果限定在[0,1]之间,因为我们二元逻辑回归预测的就是0、1呀,自变量和权重一顿计算,结果算出来的是几百几千,根本和0、1搭不上边,那不行呀。

自变量a和权重w经过加减乘除计算后得到一个值x,我们可以写一个sigmoid方法,计算e的x次幂,计算公式为: y=\frac{1}{1+\epsilon ^{-x}}   这个函数的图像如下:

它就像一个倒下的S形状,两端极限值分别是0和1,我们就能将x转化成0、1之间的一个数p,然后我们可以设定一个判断值,来对p值进行判断分类,比如p>=0.5的话就把p当作1,如果p<0.5的话就把p当作0。经过这么转化,我们就能计算出每一组样本数据的预测值p,用这些预测值和每一组样本数据实际的结果对比,来判断这个权重带来的准确率如何。

一般默认权重组为[0.5, 0.5, 0.5...],第一次计算后我们调整每一个权重的值再次计算,权重值的调整根据预测值和真实结果之间的差值,再结合每一个自变量的值以及调整步长来重新计算得到,这这样每个自变量的权重都是不同的,都是跟自变量本身数据相关的。我们保留准确率最高的那组权重,作为最优权重进行下一次重复计算,这个重复计算过程一般几十万次,甚至几百万次都有可能。

例如:w1 = (y1-p1)*a1+s 自变量a1的新权重w1是实际结果减去计算后预测结果的差,乘以自变量a1的值再加上步长s得到的。

有两个参数需要调整:

一个是权重调整的步长,这个步长不能太大也不能太小,否则要不然就是陷入局部最优,要不然就无限制计算耗费太长时间,无休止。

二是循环次数,与步长一样太大太小都不合适,太小得不到准确率高的权重,太大计算耗费时间太久。

以下三个图能看出步长的调整对准确率的影响:

最高准确率、最小损失值、最小交叉熵

在循环计算的过程中我们需要不断判断最优权重,判断方法有上述几种方式,用哪种都行,或者还有其他方法。当我们选定判定方法就能得到对应的一组最优权重,例如有10个自变量的样本数据计算得到的最优权重如下:

[-2.606363636363636E-5, -5.768181818181818E-6, -1.1963636363636364E-5, -2.1363636363636364E-7, -9.598254545454533E-5, -4.816923181818179E-5, -1.390003636363636E-4, -2.1069031818181827E-4, -3.5435222727272667E-6, -0.003507481818181818]

后续我们就可以用这个权重进行预测啦,给一组以前样本里没有的数据,计算后就能得到一个预测值0或者1,这个预测值的准确性可能会比95%低一点点,但不会低太多。

预测算法模型系列(八)

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值