白话机器学习笔记(二)学习分类

发布时间 2023-07-19 18:58:27作者: paranoid。

image-20230719111307639

分类用图形来解释,把他想象为有大小有方向带箭头的向量。

设权重向量为\(w\),虚线为使权重向量称为法线向量的直线。

直线的表达式为:\(w\cdot x=0\) (两个向量的内积)

也可写为:\(w\cdot x=\sum\limits_{i=1}^nw_ix_i=w_1x_1+w_2x_2=0\)

\(w\cdot x=|w|\cdot|x|\cdot cos\theta\) 要使内积0,\(\theta=90\degree\)\(\theta=270\degree\)

感知机

感知机是接受多个输入后将每个值与各自的权重相乘,最后输出总和的模型。是神经网络和深度学习的基础模型。人们常用这样的图来表示它。

image-20230719114303128

训练数据的准备

image-20230719114444309

\(f_w(x)\):根据参数向量\(x\)来判断图像是横向还是纵向的函数,即返回1或者-1的函数,这个函数被称为判别函数。

\(\begin{equation} f_w(x)= \begin{cases} 1& {(w\cdot x\ge0)}\\ -1&{(w\cdot x<0)} \end{cases} \end{equation}\)

根据内积正负来分割区域

权重向量的更新表达式

\(w:=\begin{equation} \begin{cases}w+y^{(i)}x^{(i)}&(f_w(x^{(i)})\not=y^{(i)})\\w&(f_w(x^{(i)})=y^{(i)}) \end{cases}\end{equation}\)

分类正确不动,分类失败更新权重向量,\(y^{(i)}\)为1或-1,做向量的加法和减法去旋转直线。

线性可分

感知机只能解决线性可分问题

无法解决下图情况

image-20230719121624546

之前提到的感知机也被称为简单感知机或单层感知机,实际上多层感知机就是神经网络。

逻辑回归

sigmoid函数

\(f_\theta(x)=\frac{1}{1+exp(-\theta^Tx)}\) (\(exp(x)=e^x\))

图形如下:

image-20230719122033385

\(\theta^Tx=0\)\(f_\theta(x)=0.5\)\(0<f_\theta(x)<1\)是sigmoid函数的两个特征。

决策边界

把位置数据\(x\)是横向图像的概率作为\(f_\theta(x)\),表达式如下

\(P(y=1|x)=f_\theta(x)\)

这是在给出\(x\)的数据时\(y=1\),即图像为横向的概率。

\(y=\begin{cases}1&(f_\theta(x)\ge0.5)\\0&(f_\theta(x)<0.5) \end{cases}\)

可以改写为:

\(y=\begin{cases}1&(\boldsymbol{\theta}^T\boldsymbol{x}\ge0)\\0&(\boldsymbol{\theta}^T\boldsymbol{x}<0)\end{cases}\)

image-20230719124539740

image-20230719124550170

我们将\(\boldsymbol{\theta}^T\boldsymbol{x}=0\)这条直线作为边界线,把数据分类为横向和纵向,这种用于数据分类的直线称为决策边界

为了求正确的参数\(\theta\)而定义目标函数,进行微分,然后求参数的更新表达式。这种算法就称为逻辑回归

似然函数

开始求参数的更新表达式。

\(P(y=1|x)\)是图像为横向的概率,\(P(y=0|x)\)是图像为纵向的概率。

我们期待的概率是这样的

image-20230719125101271

假定所有的训练数据都是互不影响、独立发生的,这种情况下整体的概率就可以用下面的联合概率来表示。

\(L(\theta)=P(y^{(1)}=0|x^{(1)})P(y^{(2)}=0|x^{(2)})\cdots P(y^{(6)}=1|x^{(6)})\)

将其一般化,写法如下:

\(L(\theta)=\prod\limits_{i=1}^nP(y^{(i)}=1|x^{(i)})^{y^{(i)}}P(y^{(i)}=0|x^{(i)})^{1-y^{(i)}}\)

考虑使目标函数最大化的参数\(\theta\),可以认为似然函数\(L(\theta)\)中,使其值最大的参数\(\theta\)能够最近似地说明训练数据。

对数似然函数

取似然函数的对数

\(logL(\theta)=log\prod\limits_{i=1}^nP(y^{(i)}=1|x^{(i)})^{y^{(i)}}P(y^{(i)}=0|x^{(i)})^{1-y^{(i)}}\)

log是单调递增函数,如图

image-20230719155041679

\(L(\theta)\)最大化等价于\(logL(\theta)\)最大化

\(logL(\theta)=log\prod\limits_{i=1}^nP(y^{(i)}=1|x^{(i)})^{y^{(i)}}P(y^{(i)}=0|x^{(i)})^{1-y^{(i)}}\)函数变形如下

\[\begin{aligned} logL(\theta)&=log\prod\limits_{i=1}^nP(y^{(i)}=1|x^{(i)})^{y^{(i)}}P(y^{(i)}=0|x^{(i)})^{1-y^{(i)}}\\&= \sum\limits_{i=1}^n(logP(y^{(i)}=1|x^{(i)})^{y^{(i)}}+logP(y^{(i)}=0|x^{(i)})^{1-y^{(i)}})\\&= \sum\limits_{i=1}^n(y^{(i)}logP(y^{(i)}=1|x^{(i)})+({1-y^{(i)}})logP(y^{(i)}=0|x^{(i)}))\\&= \sum\limits_{i=1}^n(y^{(i)}logP(y^{(i)}=1|x^{(i)})+({1-y^{(i)}})log(1-P(y^{(i)}=1|x^{(i)})))\\&= \sum\limits_{i=1}^n(y^{(i)}logf_\theta(x^{i}) +({1-y^{(i)}})log(1-f_\theta(x^{(i)}))) \end{aligned} \]

接下来对各个参数\(\theta_j\)求微分

\[\begin{aligned} \frac{\partial logL(\theta)}{\partial\theta_j}&= \frac{\partial}{\partial\theta_j}\sum\limits_{i=1}^n(y^{(i)}logP(y^{(i)}=1|x^{(i)})+({1-y^{(i)}})log(1-f_\theta(x^{(i)}))) \end{aligned} \]

\(f_\theta(x)=\frac{1}{1+exp(-\theta^Tx)}\)

过程省略得

\[\frac{\partial logL(\theta)}{\partial\theta_j}= \sum\limits_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))x_j^{(i)} \]

最大化为目标,与微分结果符号相同得方向移动,更新表达式如下

\[\theta_j:=\theta_j+\eta\sum\limits_{i=1}^n(y^{(i)}-f_\theta(x^{(i)}))x_j^{(i)} \]

也可以调整为下面这样

\[\theta_j:=\theta_j-\eta\sum\limits_{i=1}^n(f_\theta(x^{(i)})-y^{(i)})x_j^{(i)} \]

线性不可分

将逻辑回归应用于线性不可分问题

image-20230719164128363

不能用直接分类,但是用曲线可以分类

向训练数据中加入\(x_1^2\)

\[\boldsymbol{\theta}= \begin{bmatrix} \theta_0\\\theta_1\\\theta_2\\\theta_3 \end{bmatrix} , \boldsymbol{x}= \begin{bmatrix} 1\\x_1\\x_2\\x_1^2 \end{bmatrix} \]

\[\boldsymbol{\theta}^T\boldsymbol{x}= \theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1^2 \]

\[\boldsymbol{\theta}= \begin{bmatrix} \theta_0\\\theta_1\\\theta_2\\\theta_3 \end{bmatrix} = \begin{bmatrix} 0\\0\\1\\-1 \end{bmatrix} \]

\(\boldsymbol{\theta}^T\boldsymbol{x}=x_2-x_1^2\ge0\)如下图

image-20230719165445489

现在决策边界是曲线了,参数\(\theta\)可以再调整。如果再增加\(x_2^2\)就会有圆形得决策边界。

这就是逻辑回归,还有SVM(支持向量机得分类算法)也有很名。