前言
今天看了篇机器学习常用算法的博文, 然后把一些(现学的)做成了笔记,可能有点乱。
Logistic Regression
逻辑回归看字面上是回归(Regression),但是实际是解决的是分类(classification)问题。回归问题预测的是某一个(连续)的值,例如预测明天的圣女果的价格。分类问题预测的是某一个(离散)的的值,例如预测是否有恶性肿瘤,输出结果是:有或者没有。
假设一个问题
我们想知道本地城市人们订阅A杂志的概率,影响因素有年龄、性别等。在这里,我们只关注年龄的影响,事实上也只有年龄比较好线性回归。
我们可以看到一个y(概率)的变动是一个x(年龄)乘以likelihood(可能性)。所以我们可以简单地进行线性回归模型。
即:
image通过将数据导入,我们可以算出模型为:
subscribe = -1.700+0.064*age
image这时候我们可以传入一个age,开始预测
传入age = 35
p=-1.700+0.064*35 =0.54
看起来很正常
我们传入age = 25
p = -1.700 +0.064*25=-0.09
等下,概率还有负的?
这时候就需要逻辑回归出场了。
当预测目标是概率这样的,值域需要满足大于等于0,小于等于1的,这个时候单纯的线性模型是做不到的,因为在定义域不在某个范围之内时,值域也超出了规定区间。
我们需要用到这样的模型。
image这样的模型如何得到?
对于大于0的部分可以用 绝对值,平方值,这里用 指数函数,一定大于0
对于小于等于1的部分可以用 除法,分子是自己,分母是自身加上1,那一定是小于1的了
image再做一下变形,就得到了逻辑回归模型
image导入数据计算就可以得到相应的系数了
image最后得到逻辑回归模型
imagesigmoid函数
其实上面我们一直就在讲sigmoid函数,将线性回归的结果映射到(0,1),从而可以预测概率,且概率不会大于1或者小于0.
再假设一个问题
image我们通过肿瘤大小来预测是否是恶性肿瘤,数据是上面这样的。绿色线是阙值。红色的x是数据点,也就是小于中间绿线y的,不是恶性肿瘤。大于的,是恶性肿瘤。
这时候出现了问题,出现了个超大的肿瘤,阈值就很难设定.加入还是取平均大小为阈值。绿线该怎么移动?
image我们利用线性回归的办法来拟合然后设置阈值的办法容易受到离群值的影响,sigmoid函数可以有效的帮助我们解决这一个问题,因为sigmoid的结果不是实际值,而是p(恶性肿瘤)的概率。
于是我们得选择一个阙值:
阙值是按实际情况取的,也有时候是按经验取的,不是简单是0.5.例如验证码识别时,完全可以用0.9的阙值,不通过这个阙值还可以再跑一次程序。判断得病的阙值也不能直接0.5,假如一个人得病概率是0.4999.模型直接判断为不得病,那很容易误诊。这时候我们就得把阙值调小一些,例如0.3.当大于0.3,我们的模型就会报警。如果没得病,病人最多也只是去做个检查。
杂七杂八的笔记
级数:数列的每个值之和
sigmoid函数:在特征相差比较复杂或者相差不是特别大的时候效果好。但是计算量大,反向传播求误差梯度时,求导涉及除法反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。
参考:
1.【轻松看懂机器学习十大常用算法】https://www.jianshu.com/p/55a67c12d3e9
2.【Logistic Regression - Introduction】https://www.youtube.com/watch?v=gNhogKJ_q7U
3.【逻辑回归】https://blog.csdn.net/weixin_39445556/article/details/83930186
网友评论