【机器学习】Regression & Classification

02 Regression & Classification

Regression

  • 股票价格预测:
    • f(一些信息) = 明天的道琼斯指数
  • 自动驾驶:
    • f(雷达输入) = 方向盘&油门
  • 推荐系统:
    • f(使用者A, 商品B) = 购买的可能性
  • 预测宝可梦的战斗力(Combat Power)
    • f(某一只宝可梦) = 进化后的CP值
    • f ( x ) = y f(x) = y f(x)=y
    • 其中x为一个向量 :
      • x c p = 进化前 c p 值 x_{cp} = 进化前cp值 xcp=进化前cp
      • x h p = 进化前生命值 x_{hp} = 进化前生命值 xhp=进化前生命值
      • x s = 宝可梦名字 x_{s} = 宝可梦名字 xs=宝可梦名字
      • x w = 宝可梦体重 x_{w} = 宝可梦体重 xw=宝可梦体重
      • x h = 宝可梦身高 x_{h} = 宝可梦身高 xh=宝可梦身高

在这里插入图片描述

1. 指定一个Model

y = b + w ∗ x c p y = b+w*x_{cp} y=b+wxcp
上面这个function是一个线性模型,Linear model
y = b + ∑ w i ∗ x i y = b + \sum w_i*x_i y=b+wixi
我们称 w i w_i wi 为weight, b b b为bias, x i x_i xi为feature
假设我们只用 x c p x_{cp} xcp作为输入

2. 训练模型

训练集: 10只宝可梦的进化前信息与进化后的cp值:在这里插入图片描述
定义一个function的好坏
Loss function:输出一个function的坏的程度
L ( f ) = L ( w , b ) L(f) = L(w,b) L(f)=L(w,b)
衡量一组b和w的好坏,在此:在这里插入图片描述
Σ ( 真实数值 − 预测数值 ) 2 \Sigma(真实数值-预测数值)^2 Σ(真实数值预测数值)2

3. 找到最好的function

找到一个w与b的参数,使得Loss function的值最小
Gradient Descent

  1. 随机选取一个 w 0 w^0 w0
  2. 计算 d L d w ∣ w = w 0 \frac{dL}{dw}|_{w=w^0} dwdLw=w0
  3. η \eta η称为学习率,在 w 0 w^0 w0应该更新 η d L d W ∣ w = w 0 \eta \frac{dL}{dW}|_{w=w^0} ηdWdLw=w0 w 1 = w 0 − η d L d W ∣ w = w 0 w^1 = w^0 - \eta \frac{dL}{dW}|_{w=w^0} w1=w0ηdWdLw=w0
  4. 重复上述步骤
    在这里插入图片描述

对于两个参数也是一样,只不过初始时随机指定两个数 w 0 , b 0 w^0, b^0 w0,b0,然后用偏微分代替导数

问题:很多时候我们的LossFunction是不规则的,有事会陷入局部最优而无法获得全局最优,这取决于LossFunction是否为convex

  • convex:如果一个函数没有local optimal,则称这个函数为convex的(对于任何的初始值,我们总可以找到全局最优!)

初始Model的选取十分有讲究:
在这里插入图片描述
我们选择一个function,在Training Data上表现很好的function可能Testing Data上的表现并不好(过拟合Overfitting
在这里插入图片描述
现实世界中Model并不如此简单:
在这里插入图片描述

我们发现不同的物种有不同的function,对于不同的物种我们选择对应的function

发现还是可以用一个Linear Model表示:
其中 δ ( x ) \delta(x) δ(x)取值为1或0
在这里插入图片描述
如此我们获得了更好的预测模型:
在这里插入图片描述

4. 避免过拟合

删除一些“关系不大”的参数

常常需要背景知识

正则化

使用正则化:为避免过拟合overfitting,我们期望参数值更接近0(更平滑,对于输入更不敏感!)

  • model: y = b + ∑ w i ∗ x i y = b + \sum w_i*x_i y=b+wixi
  • 对于一个输入的变化量 Δ x i \Delta x_i Δxi,如果有更平滑的model,即 w i w_i wi的取值更小,我们得到的 Δ y i \Delta y_i Δyi 受到的影响更小

在这里插入图片描述

  • 正则项并不需要加入 b b b的值

但是model也不能太smooth,否则training与testing的结果会更差,因此我们需要使用 λ \lambda λ来调整

Classification

  • 金融信誉评估
    • 输入收入、存款、学历等,输出金融信用分数
  • 医疗诊断
    • 输入当前症状,年龄,性别等,输出可能的病
  • 人脸识别
    • 输入人脸,输出人名
  • 宝可梦应用!
    • 输入宝可梦的参数,输出宝可梦属性
      在这里插入图片描述
      如何将一只宝可梦作为函数的输入?
  • 所有维度的参数作为一个向量

经过Regression的学习,我们甚至可以直接用Regression的方式进行这样的研究:(二分类)

  • 如果 f ( x ) > 0 f(x) > 0 f(x)>0,就是class 1
  • 如果 f ( x ) < 0 f(x) < 0 f(x)<0,就是class 2
    如下左图:在这里插入图片描述
    问题:对于Regression与classification问题,model好坏的评判标准不同。
  • Regression会惩罚那些过于“正确”的结果

应该怎么做?

  1. 提出一个Function,Model
    • 在我们的model f ( x ) f(x) f(x)中包含另一个函数 g ( x ) g(x) g(x) f ( x ) f(x) f(x)的取值取决于 g ( x ) g(x) g(x)的正负
      在这里插入图片描述
  2. 定义损失函数 Loss function
    • 我们显然不能使用Regression那样的Lossfunction,因为他会惩罚过于正确的分类结果
    • 我们需要让model分类错误的样本个数最小!在这里插入图片描述
  3. 得到正确的function
    • 例如可以使用Preceptron,SVM等(日后会讲)

现有两个盒子(Generative Model)
在这里插入图片描述
已知我们抽到了一个蓝色球,来自两个盒子的概率分别为多少?
根据贝叶斯定理:

  • P ( C 1 ∣ B ) = P ( C 1 , B ) P ( B ) = P ( B ∣ C 1 ) P ( C 1 ) P ( B ∣ C 1 ) P ( C 1 ) + P ( B ∣ C 2 ) P ( C 2 ) P(C_1|B) = \frac {P(C_1, B)}{P(B)} = \frac {P(B|C_1)P(C_1)}{P(B|C_1)P(C_1) + P(B|C_2)P(C_2)} P(C1B)=P(B)P(C1,B)=P(BC1)P(C1)+P(BC2)P(C2)P(BC1)P(C1)

  • P ( C 2 ∣ B ) = P ( C 2 , B ) P ( B ) = P ( B ∣ C 2 ) P ( C 2 ) P ( B ∣ C 1 ) P ( C 1 ) + P ( B ∣ C 2 ) P ( C 2 ) P(C_2|B) = \frac {P(C_2, B)}{P(B)} = \frac {P(B|C_2)P(C_2)}{P(B|C_1)P(C_1) + P(B|C_2)P(C_2)} P(C2B)=P(B)P(C2,B)=P(BC1)P(C1)+P(BC2)P(C2)P(BC2)P(C2)

这样一个分类问题就变为概率问题:
我们只要知道 P ( x ∣ C 1 ) P(x|C_1) P(xC1) P ( x ∣ C 2 ) P(x|C_2) P(xC2)的概率,几率最大的case,就是我们的分类结果!

已知79只水系和61只一般系宝可梦的数据,现有一个未知宝可梦海龟,该如何确定海龟属于哪一类?

  • 解决这个分类问题,只需要知道 P ( w a t e r ∣ 海龟 ) P(water|海龟) P(water海龟) P ( n o r m a l ∣ 海龟 ) P(normal|海龟) P(normal海龟)哪个更大即可!
  • 显然我们可以得到 P ( w a t e r ) P(water) P(water) P ( n o r m a l ) P(normal) P(normal)
  • 但是我们该如何计算 P ( 海龟 ∣ w a t e r ) P(海龟|water) P(海龟water) P ( 海龟 ∣ n o r m a l ) P(海龟|normal) P(海龟normal)
  • 我们假设79个水系神奇宝贝的分布来自Gaussian Distribution
  • 对于不同的均值 μ \mu μ与协方差矩阵 Σ \Sigma Σ,我们可以得到某个x被sample出的概率在这里插入图片描述
  • 最大似然估计:显然任何一个Gaussian分布都可以sample出这79个点,但几率并不一样大
    在这里插入图片描述
  • 从Guassian分布中sample出上面79个点的几率为: L ( μ , Σ ) = f μ , Σ ( x 1 ) ∗ f μ , Σ ( x … … 2 ) . . . . . . ∗ f μ , Σ ( x 79 ) L(\mu, \Sigma) = f_{\mu, \Sigma}(x^1) * f_{\mu, \Sigma}(x……2) ...... * f_{\mu, \Sigma}(x^{79}) L(μ,Σ)=fμ,Σ(x1)fμ,Σ(x……2)......fμ,Σ(x79)
  • 穷举不同的 μ , Σ \mu, \Sigma μ,Σ,得到可以让 L ( μ , Σ ) L(\mu, \Sigma) L(μ,Σ)最大的 μ ∗ , Σ ∗ \mu^*, \Sigma^* μ,Σ,我们就有了真正的 G ( μ c , Σ c ) G(\mu ^c, \Sigma ^c) G(μc,Σc)
    在这里插入图片描述- 于是我们可以计算: P ( 海龟 ∣ w a t e r ) P(海龟|water) P(海龟water) P ( 海龟 ∣ n o r m a l ) P(海龟|normal) P(海龟normal)

一般来说我们使用最大似然估计的Gaussian Function中 Σ \Sigma Σ取值相同,因此Loss Function有:
L ( μ 1 , μ 2 , Σ ) = [ f μ 1 , Σ ( x 1 ) ∗ f μ 1 , Σ ( x 2 ) ∗ . . . ∗ f μ 1 , Σ ( x 79 ) ] ∗ [ f μ 2 , Σ ( x 80 ) ∗ f μ 2 , Σ ( x 81 ) ∗ . . . ∗ f μ 2 , Σ ( x 140 ) ] L(\mu^1, \mu^2, \Sigma) = [ f_{\mu^1, \Sigma}(x^1)*f_{\mu^1, \Sigma}(x^2)*...*f_{\mu^1, \Sigma}(x^{79}) ] * [ f_{\mu^2, \Sigma}(x^{80})*f_{\mu^2, \Sigma}(x^{81})*...*f_{\mu^2, \Sigma}(x^{140})] L(μ1,μ2,Σ)=[fμ1,Σ(x1)fμ1,Σ(x2)...fμ1,Σ(x79)][fμ2,Σ(x80)fμ2,Σ(x81)...fμ2,Σ(x140)]
在这里插入图片描述

如何选择Probability Distribution?

  1. 在本例中我们使用Gaussian Distribution
  2. 二分类问题中可能会使用Bernoulli Distribution
  3. 如果输入的各个特征独立我们可以选用Naive Bayes Distribution

后验概率 Posterior Probability

在这里插入图片描述
一般我们会假设分布的 Σ \Sigma Σ是共用的,经过推导得:
在这里插入图片描述
发现: z = w T ∗ x + b z = w^T * x + b z=wTx+b
因此后验概率: P ( C 1 ∣ x ) = σ ( w T ∗ x + b ) P(C_1|x) = \sigma(w^T * x + b) P(C1x)=σ(wTx+b)

Logistic Regression

上节中我们发现
在这里插入图片描述
并不需要先根据分类结果 L ( μ , Σ ) L(\mu, \Sigma) L(μ,Σ)模拟出一个 G a u s s i a n D i s t r i b u t i o n Gaussian Distribution GaussianDistribution再计算,可以直接通过w与b得到一个后验概率
在这里插入图片描述
比较Logistic Regression与Linear Regression:
在这里插入图片描述
黑色为交叉熵,红色为平方:
在这里插入图片描述

  • 距离目标很近时:Square Error与Cross Entropy均有很低的微分值
  • 距离目标很远时:Cross entroy的微分值很大,而Square Error的微分值也很低!
  • 因此:如果使用square error并制定了一个很远的随机起点,就会导致参数更新很慢甚至不更新的情况
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值