欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第三章

程序员文章站 2022-05-07 07:58:31
...

第三章 线性模型

3.1 基本形式

给定由d个属性描述的示例x=(x1;..xd),其中xi是在第i个属性上的取值。线性模型试图学得一个通过属性的线性组合来进行预测的函数,即

f(x)=w1x1+w2x2+...+wdxd+b

一般用向量形式写成

f(x)=w^T+b

其中向量w和b,由算法学得,然后模型就得以确定。

3.2 线性回归

一元多项式回归主要应用最小二乘法,通过均方误差最小化来进行模型求解。在线性回归中,试图找到一条直线,使得所有样本到直线的欧氏距离之和最小。

一元多项式线性回归

主要使用polyfit函数进行拟合,使用polyval函数产生图像。

使用polyfit函数拟合

polyfit函数是matlab中用于进行曲线拟合的一个函数。其数学基础是最小二乘法曲线拟合原理。曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值。

调用方法:polyfit(x,y,n)。用多项式求过已知点的表达式,其中x为源数据点对应的横坐标,可为行向量、矩阵,y为源数据点对应的纵坐标,可为行向量、矩阵,n为你要拟合的阶数,一阶直线拟合,二阶抛物线拟合,并非阶次越高越好,看拟合情况而定。

使用polyval函数获得预测值

polyval作用是用多项式系数和x向量求y向量,使用方法是返回n次多项式p在x处的值。

具体代码如下:

%使用polyfit和polyval函数进行线性拟合回归。
clear;
clf;
clc;
%使用如下测试数据
x=1:1:5;
y=[10 15 35 40 50];

plot(x,y,'k*');
axis([0 6 0 60]);
hold on;
p1=polyfit(x,y,1); %线性,维度为1
plot(x,polyval(p1,x));

结果如下
第三章

其他维度同理,修改维度参数可以得到其他维度的拟合图像。
对于一些非线性的情况,比如指数尺度,可以通过ln(x)等方法获得对应的线性回归模型。

3.3 对数几率回归

面对分类任务,只需找一个单调可微函数将分类任务的真实标记y与线性回归模型联系的预测值起来即可。
线性模型产生的预测值是实值,需要将实值转化为0/1值,最理想的是单位阶跃函数。
单位阶跃函数不连续,可以使用对数几率函数代替它。
第三章

第三章

3.4 线性判别法

LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。

第三章

上图中国提供了两种投影方式,哪一种能更好的满足我们的标准呢?从直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,我们的数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。

3.5 多分类学习

多分类学习的基本思路是拆解法,即将多分类任务拆解为若干个二分类任务求解。
主要有三种拆分策略:
1.一对一(OvO)
OvO将这N个类别两两配对,产生N(N-1)/2个二分类任务。
通常来说开销较大,当类别很多时,效率得到提升。
第三章

2.一对其余(OvR)
每次将一个类别作为正类,其余类别作为负类。此时共有(N个分类器)。在测试的时候若仅有一个分类器预测为正类,则对应的类别标记为最终的分类结果。

3.多对多(MvM)
是指每次将一个类作为正类,其他类作为反类。

ECOC

ECOC(Error Correcting Output Codes,纠错输出码)作为输出表示,用于多分类学习任务。主要思想是,通过事先分别为kk类类别定义一串编码序列(code word)。在分类的时候,只需比较待分类样本与各串编码的差异程度(distance measure)。如下图,在Dietterich一文中,一般对于ECOC的大部分应用,其Code Word的每一位都有实际的含义,假设有一预分类样本为110001,则由Hamming distance距离可得,Class 4的距离最小,因此将其划分为Class 4。ECOC还有一个显著的优点就是能够纠错,若最小Hamming distance为d,则ECOC最少能纠正⌊d−12⌋⌊d−12⌋位的错误(即仍然将其划分为实际正确的类)。