假设输入空间x∈Rnx\in R^n,
对于分类问题,我们使用的假设空间为H={h=sign(wTx+b)|w∈Rn,b∈R}H=\{h=sign(w^Tx+b)| w\in R^n, b\in R\}
对于回归问题,我们使用的假设空间为H={h=wTx+b|w∈Rn,b∈R}H=\{h=w^Tx+b|w\in R^n, b\in R\}
其实际意义也比较简单:对于分类问题,用一个超平面将特征空间分成两个部分;对于回归问题,用一个超平面去拟合真实函数。
这类模型有:线性回归模型(linear regression)、逻辑回归模型(logistic regression)、感知器模型(perceptron)、支持向量机(SVM)等等。


下文中,training set为m个数据(x(i),y(i)),i=1,2...,m(x^{(i)},y^{(i)}), i=1,2...,m,其中w,x都是列向量。training set的矩阵形式是:

X=⎡⎣⎢⎢x(i)T...x(m)T⎤⎦⎥⎥,Y=⎡⎣⎢⎢y(i)T...y(m)T⎤⎦⎥⎥

X= \begin{bmatrix}x^{(i)^T} \\...\\x^{(m)^T} \\ \end{bmatrix}, Y=\begin{bmatrix}y^{(i)^T} \\...\\y^{(m)^T} \\ \end{bmatrix}

{下文我们将交替使用J和EinE_{in}来表示损失函数}

1. 线性回归

线性回归用于解决回归问题。其输出y通常为实数。
为了方便起见,令w0=b,x0=1w_0=b, x_0=1,此时w,x∈Rn+1w, x\in R^{n+1}

1.1 选择损失函数及学习策略

很明显地,使用平方损失函数,

J(w)=1m∑i=1m(wx(i)−y(i))2=1m||Xw−Y||2=1m(Xw−Y)T(Xw−Y)

J(w)=\frac 1m \sum_{i=1}^m(wx^{(i)}-y^{(i)})^2=\frac 1m ||Xw-Y||^2=\frac 1m(Xw-Y)^T(Xw-Y)我们的学习策略是:最小化J(w)。

1.2 使用的学习算法

1.2.1 梯度下降法

∇wJ(w)=2m∑i=1m(wx(i)−y(i))x(i)=2m(XTXw−XTY)

\nabla_w J(w)=\frac 2m \sum_{i=1}^m(wx^{(i)}-y^{(i)})x^{(i)}=\frac 2m(X^TXw-X^TY)那么使用梯度下降法的公式是:

wt+1=wt−η∇wJ(w)

w_{t+1}=w_t-\eta \nabla_w J(w)
由于此问题是一个凸函数,所以梯度下降法总是能找到最优解。

1.2.2 Normal equation解析解

令∇wJ(w)=0\nabla_w J(w)=0

XTXw=XTY

X^TXw=X^TY如果 XTXX^TX可逆,那么可以直接求得解析解;否则需要求解伪逆。总之,是可以解析求解的。

1.2.3两种方法的对比


通常情况下,如果数据量大于10000,那么选择梯度下降法比较好。

1.3 正则化

J(w)=1m[∑i=1m(wx(i)−y(i))2+λ∑j=1nw2j]=1m[(Xw−Y)T(Xw−Y)+λ∑j=1nw2j]

J(w)=\frac 1m [\sum_{i=1}^m(wx^{(i)}-y^{(i)})^2+\lambda \sum_{j=1}^nw_j^2]=\frac 1m[(Xw-Y)^T(Xw-Y)+\lambda \sum_{j=1}^nw_j^2]

(XTX−λ[000I])w=XTY

(X^TX-\lambda \begin{bmatrix}0&0\\0&I\\ \end{bmatrix})w=X^TY正则化的过程中有

w0=w0−η2m∑i=1m(wx(i)−y(i))x(i)0

w_0=w_0 -\eta \frac 2m \sum_{i=1}^m(wx^{(i)}-y^{(i)})x^{(i)}_0

wj=wj−η2m[∑i=1m(wx(i)−y(i))x(i)j+λwj]

w_j=w_j-\eta\frac 2m[ \sum_{i=1}^m(wx^{(i)}-y^{(i)})x^{(i)}_j+\lambda w_j]

2. 逻辑回归

线性回归用于解决分类问题。其输出y∈{0,+1}y\in \{0,+1\}。
为了方便起见,令w0=b,x0=1w_0=b, x_0=1,此时w,x∈Rn+1w, x\in R^{n+1}

2.1 引言

假设我有w,要解决分类问题可以有h(x)=sign(wTx)h(x)=sign(w^Tx)。很多情况下,我们并不想得到这种形式,而是想要得到:x属于某一类别的概率是多少。
所以,我们需要一个函数将wx映射为概率:

图示的s型曲线称为sigmoid函数。于是我们有了H={h(x)=11+exp(−wTx)|w∈Rn+1}H=\{ h(x)=\frac 1{1+exp(-w^Tx)} |w\in R^{n+1}\}
现在,y=0的概率是1-h(x),y=1的概率是h(x)。对于sigmoid函数,有

h(−x)=1−h(x)

h(-x)=1-h(x)
现在我们考虑:我们已经有了training set, 那么这个trainning set出现的概率是

P(x(1))P(y(1)|x(1))×...×P(x(m))P(y(m)|x(m))

P(x^{(1)})P(y^{(1)}|x^{(1)})\times ...\times P(x^{(m)})P(y^{(m)}|x^{(m)})
对于y=0,我们使用 1−h(x)1-h(x)来估计P(y|x);对于y=1,我们使用 h(x)h(x)来估计P(y|x)。也即

P(y|x)=yh(x)+(1−y)(1−h(x))

P(y|x)=yh(x)+(1-y)(1-h(x))
根据极大似然法,我们应该最大化这一概率,其中 P(x(i))P(x^{(i)})不能改变,所以应该最大化

∏i=1m[y(i)h(x(i))+(1−y(i))(1−h(x(i)))]

\prod_{i=1}^m [ y^{(i)}h(x^{(i)})+(1-y^{(i)})(1-h(x^{(i)}))]
取以2为低的对数,化乘法为加法:

∑i=1m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]

\sum_{i=1}^m [y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))]
最大化上述公式。

2.2 损失函数和学习策略

前面是介绍了逻辑回归损失函数的来历;现在我们可以直接从此数学定义开始,定义损失函数:

j(w)=−1m∑i=1m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]

j(w)=-\frac 1m \sum_{i=1}^m [y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))]我们的学习策略是:最小化损失函数。

2.3 学习算法——梯度下降

∇wj(w)=1m∑i=1m(h(x(i))−y(i))x(i)

\nabla_w j(w)=\frac 1m \sum_{i=1}^m(h(x^{(i)})-y^{(i)})x^{(i)}
此损失函数并非是凸函数,所以很可能找到局部最优解,而不是全局最优解。所以我们需要用多个初始值运行梯度下降算法。

2.4正则化

j(w)=1m{−∑i=1m[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))]+λ∑j=1nw2j}

j(w)=\frac 1m \{-\sum_{i=1}^m [y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))]+\lambda \sum_{j=1}^nw_j^2\}

w0=w0−η1m∑i=1m(h(x(i))−y(i))x(i)0

w_0=w_0 -\eta \frac 1m \sum_{i=1}^m(h(x^{(i)})-y^{(i)})x^{(i)}_0

wj=wj−η1m{∑i=1m(h(x(i))−y(i))x(i)j+2λwj}

w_j=w_j-\eta\frac 1m \{\sum_{i=1}^m(h(x^{(i)})-y^{(i)})x^{(i)}_j+2\lambda w_j\}

2.5多分类问题

假设y∈{1,2,3}y\in \{1,2,3\}

2.5.1 One VS ALL

对于每一种类别都分成两类:1/not 1;2/not; 3/not 3。分别学习h:

有k个分类,就会得到k个h;对于x,我们只需要看看,它属于哪个类别的概率大,就是哪一个类,也即

class=maxih(i)(x)

class = \max_ih^{(i)}(x)

2.5.2One Vs One

假设有K个类别,每个类别的数据所占比例都相同。如果K=100,那么数据严重不平衡,对于class i/not class i问题:直接预测为i,准确率也有99%。所以这种情况下,我们不能再使用One Vs All模型,而是使用One Vs One。
也即对于K个类别,对于任意两个类别,学习一个分类模型h(训练时,只使用这两个类别相关的数据),将会有(K2){K \choose 2}个h,其中h[k,l](x)h_{[k,l]}(x)代表x被分类为k或者l的情况。那么最后我们使用一个投票策略:对于所有的h计算出一个分类结果,出现次数最多的类别就是最终结果。

2.6 逻辑回归算法分析

对于分类算法,我们最终如何评价性能呢?Jtest/EtestJ_{test}/E_{test}使用什么样的损失函数?很明显地,应当使用0-1损失函数。但是计算的时候我们却使用了[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))][y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))]。

这里补充说明一下,在《机器学习一》中有这么一张图:

我们可以看到学习算法中的损失函数eˆrr\widehat err和评价算法性能用的err是不一样的。为什么呢? 理想情况下,让eˆrr=err\widehat err =err最好,但是很多损失函数是对计算不友好的,譬如0-1损失函数一阶不连续。所以,为了更好地计算,现实中我们常常使用不同于errerr的eˆrr\widehat err。

用最小化损失函数[y(i)logh(x(i))+(1−y(i))log(1−h(x(i)))][y^{(i)}logh(x^{(i)})+(1-y^{(i)})log(1-h(x^{(i)}))]学习出来的算法,使用0-1损失函数评估时,会得到怎么样的性能?

机器学习(四):w·x+b模型(1)相关推荐

  1. 机器学习 (十四)轻松理解模型评价指标

    篇首语 相信大家都知道下面的图片是啥意思,每个无论在啥公司.无论哪个行业都有自己的KPI评价指标,公司会根据公司情况设定公司战略KPI.部门KPI.以及每个人的指标,对于员工也是比较关心自己的KPI因 ...

  2. 机器学习四剑客1——Numpy

    求业之精,别无他法,日专而已矣! 一.概论 1.机器学习是什么 2.机器学习做什么 3.机器学习基本概念 二.机器学习第一步:数据分析 1.Python被大量应用在数据挖掘和深度学习领域: 2.其中使 ...

  3. ML之4PolyR:利用四次多项式回归4PolyR模型+两种正则化(Lasso/Ridge)在披萨数据集上拟合(train)、价格回归预测(test)

    ML之4PolyR:利用四次多项式回归4PolyR模型+两种正则化(Lasso/Ridge)在披萨数据集上拟合(train).价格回归预测(test) 目录 输出结果 设计思路 核心代码 输出结果 设 ...

  4. [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel

    [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel 楼主  发表于 2013-5-21 14:33:47 | 查看: 869| 回复: 1 SQL查询模型QSqlQuery ...

  5. 第四章USB数据流模型

    第四章USB数据流模型 本章介绍了数据如何在USB中传送,将涉及到系统中关于信号的发送和协议定义的一层. 对于USB系统中这一层中各个定义的详细情况可参见第六章和第七章.本章中介绍的数据传送格式,将在 ...

  6. 机器学习(第二章)—— 模型评估

    目录 一.评估指标的局限性 二.ROC曲线 三.余弦距离的应用 四.A/B测试的陷阱 五.模型的评估方法 六.超参数优化 七.过拟合与欠拟合 准确率的局限性 精确率与召回率的权衡 平方根误差的&quo ...

  7. 机器学习笔记(5)——模型评价指标

    机器学习笔记(5)--模型评价指标 本文部分图片来源网络或学术论文,文字部分来源网络与学术论文,仅供学习使用. 目录 机器学习笔记(5)--模型评价指标 1.精确率.召回率.准确率.错误率 混淆矩阵 ...

  8. 自己动手写word2vec (四):CBOW和skip-gram模型

    系列所有帖子 自己动手写word2vec (一):主要概念和流程 自己动手写word2vec (二):统计词频 自己动手写word2vec (三):构建Huffman树 自己动手写word2vec ( ...

  9. 手把手带你玩转Spark机器学习-使用Spark构建回归模型

    系列文章目录 手把手带你玩转Spark机器学习-专栏介绍 手把手带你玩转Spark机器学习-问题汇总 手把手带你玩转Spark机器学习-Spark的安装及使用 手把手带你玩转Spark机器学习-使用S ...

  10. 「超级干货大放送」机器学习十二种经典模型实例

    目录 实例一:线性回归波士顿房价 实例二:KNN实现电影分类 实例三:基于线性回归预测波士顿房价 ​ 实例四:sklearn完成逻辑回归鸢尾花分类 实例五:支持向量机完成逻辑回归鸢尾花分类 实例六:使 ...

最新文章

  1. @ImportResource SpringBoot使用xml配置Bean
  2. java导入自定义类_导入自定义Java类
  3. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用35
  4. UITableView的UITableViewStyleGrouped
  5. 从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍
  6. 轻松搭建一个Windows SVN服务器
  7. java实现——客户端登录
  8. 一文看懂JUC之AQS机制
  9. Netbackup Done status 6 解决方法
  10. 用计算机弹假面骑士build,假面骑士build中只有资深粉丝才知道的梗第一弹
  11. 数据库连接字符串的写法(参考)
  12. JavaScript继承理解:ES5继承方式+ES6Class继承对比
  13. 度量两个概率分布差异性/距离的指标总结_KL 散度(相对熵)交叉熵 JS散度 Wasserstein-1距离 Earth-Mover (EM)distance
  14. 源码编译安装screen
  15. Onvif协议学习:11、图像抓拍
  16. 初出茅庐的小李第55篇博客之ESP32点亮WS2812B彩灯
  17. BouncyCastle配置
  18. [MySQL学习]常用SQL语句大全总结
  19. 显示器html看电视声音,使用显示器的内置音响播放声音需要满足以下两种条件...
  20. DELL笔记本拆机添加内存条

热门文章

  1. Tanzu学习系列之TKGm 1.4 for vSphere 组件集成(二)
  2. PO模式实现Appium脚本封装
  3. windows命令行中 启动应用程序
  4. python实现从oracle读数据写入mysql(1)
  5. 竟可监控员工离职倾向!一系统引发大争议
  6. python编程读取写入excel_Python实现读取并写入Excel文件过程解析
  7. 键盘android,Android键盘系统浅析(上)
  8. 超多好礼等你来!绘超萌兔年AI头像,抢限定AI绘画红包封面!
  9. java值面向对象2
  10. 机器学习训练模型的大体流程