ML:逻辑回归算法

​ 我们常说机器学习对数据处理的时候会有两种情况,一个是连续值的回归,一个是离散值的分类。前面已经说过线性回归,就是对一堆连续数据的拟合使得能够预测数据的走向。那么分类问题的数据就是一堆离散值,这里以线性二分类为例,还是看一组数据:
在这里插入图片描述

​ 这是一组根据两次考试成绩判断是否入学的数据,横轴是第一次考试的值,纵轴是第二次考试的成绩,分别设为特征值 x 1 , x 2 x_1, x_2 x1,x2,那么评判标准是否入学则设为 l a b e l label label y y y,当特征值在红色区域时 y = 0 y=0 y=0当特征值在蓝色区域时 y = 1 y=1 y=1.

​ 首先呢还是要先建立模型:

f ( θ ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 = θ T x f(\theta)=\theta_0x_0+\theta_1x_1+\theta_2x_2=\theta^Tx f(θ)=θ0x0+θ1x1+θ2x2=θTx

​ 其中我们还是定义 x 0 = 1 x_0=1 x0=1

​ 定义完模型函数那么问题来了,我们根据这个模型的得出来的值肯定无法直接用于分类,所以我们引入了 s i g m o i d sigmoid sigmoid函数:

f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+ex1

​ 那给个函数公式肯定看的很懵,所以结合图像:

在这里插入图片描述

​ 一个非常优美的 s s s型曲线函数,我们把从模型函数得到的值映射到 s i g m o i d sigmoid sigmoid函数中会得到一个区域在 ( 0 , 1 ) (0, 1) (0,1)之间的值,作为我们的概率值,概率越接近1就说明是 y = 1 y=1 y=1的这个分类,越接近0就说明是 y = 0 y=0 y=0这个分类。

h θ ( x ) = s i g m o i d ( f ( x ) ) = 1 1 + e − θ T x h_\theta(x)=sigmoid(f(x))=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=sigmoid(f(x))=1+eθTx1

​ 分类公式: y = 1 y=1 y=1 P ( y = 1 ∣ x ; θ ) = h θ ( x ) P(y=1|x;\theta)=h_\theta(x) P(y=1x;θ)=hθ(x)

y = 0 y=0 y=0 P ( y = 0 ∣ x ; θ ) = 1 − h θ ( x ) P(y=0|x;\theta)=1-h_\theta(x) P(y=0x;θ)=1hθ(x)

​ 整合到一起: P ( y ∣ x ; θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) 1 − y P(y|x;\theta)=(h_\theta(x))^y(1-h_\theta(x))^{1-y} P(yx;θ)=(hθ(x))y(1hθ(x))1y

​ 接下来就是构建误差函数了,我们先想想,假设有这样一组数据经过我们的模型得出一个预测值概率,如果这个预测值概率越接近1,就是说这组数据是越靠近 y = 1 y=1 y=1这个类,那么1与这个预测概率的对比误差就很小,如果这个预测值概率越接近0,就是说这组数据是越靠近 y = 0 y=0 y=0这个类,但是我们总不能说概率小的值就是 y = 0 y=0 y=0这个类,所以我们用1减去这个预测概率值,那相对应的0这个类别的概率就会是一个大概率,可问题来了,这个大概率值与0作比较得到的误差又很大,我们总不能说越是贴近0类别的概率越大误差就越大吧,所以我们引入了交叉熵作为误差:

L o s s ( θ ) = l o g ( P ( y i ∣ x i ; θ ) ) = ∑ i = 1 m ( y i l o g ( h θ ( x i ) ) + ( 1 − y i ) l o g ( 1 − h θ ( x i ) ) ) Loss(\theta)=log(P(y_i|x_i;\theta))=\sum_{i=1}^{m} (y_ilog(h_\theta(x_i))+(1-y_i)log(1-h_\theta(x_i))) Loss(θ)=log(P(yixi;θ))=i=1m(yilog(hθ(xi))+(1yi)log(1hθ(xi)))

在这里插入图片描述

​ 我们把预测概率值映射到横轴,把 L o s s Loss Loss值映射到 y y y轴,可以看出当概率越接近1, l o g log log值的绝对值越小,概率值越接近0, l o g log log值得绝对值就越大,因为我们得到的是负值,所以还需要在前方加上一个符号使其变为正值。

​ 接下来就是利用误差函数对 θ \theta θ值进行求偏导,再根据设置的学习率对参数进行更新,这里就不赘述了。

​ 那么有二分类就会有多分类算法,这时 s i g m o i d sigmoid sigmoid函数就满足不了我们了,那么我们就会用多分类的 s o f t m a x softmax softmax算法:

h θ ( x ( i ) ) = [ p ( y i = 1 ∣ x ( i ) ; θ ) p ( y i = 2 ∣ x ( i ) ; θ ) . . . p ( y i = 3 ∣ x ( i ) ; θ ) ] = 1 ∑ i = 1 k e θ j T x ( i ) [ e θ 1 T x ( i ) e θ 2 T x ( i ) . . . e θ k T x ( i ) ] h_\theta(x^{(i)})=\left[ \begin{matrix} p(y^{i}=1|x^{(i)};\theta)\\ p(y^{i}=2|x^{(i)};\theta)\\ ...\\ p(y^{i}=3|x^{(i)};\theta)\end{matrix}\right]=\frac{1}{\sum_{i=1}^ke^{\theta_j^Tx^{(i)}}} \left[ \begin{matrix} e^{\theta^T_1x^{(i)}}\\ e^{\theta^T_2x^{(i)}}\\ ...\\e^{\theta^T_kx^{(i)}} \end{matrix}\right] hθ(x(i))=p(yi=1x(i);θ)p(yi=2x(i);θ)...p(yi=3x(i);θ)=i=1keθjTx(i)1eθ1Tx(i)eθ2Tx(i)...eθkTx(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值