机器学习基础笔记(2):最简单的线性分类器

监督学习多用来解决分类问题,输入的数据由特征和标签两部分构成。我们由浅入深地介绍一些经典的有监督的机器学习算法。

这里介绍一些比较简单容易理解的处理线性分类问题的算法。

线性可分&线性不可分

首先,什么是线性分类问题?线性分类问题是指,根据标签确定的数据在其空间中的分布,可以使用一条直线(或者平面,超平面)进行分割。如下图就是一个线性分类问题。这样的问题也叫做线性可分的。

当然,也存在着许多线性不可分的情况,例如下图所示

解决线性不可分问题往往相对复杂,我们从简单的线性可分问题开始探讨。

最简单的线性分类器——决策树桩

线性分类器,简单来说就是一些可以用来解决线性可分问题的机器学习算法,这些算法生成的模型往往都是一个线性函数,因此不一定能很好的解决线性不可分的问题。

决策树桩,可以说是最简单的线性分类器了,它的分类原理很简单:

1、决定一个阈值

2、大于这个阈值的是第一类,小于这个阈值的是第二类。(等于阈值的情况任意取舍即可)

决策树桩能解决的问题很有限,但是也并不是全无用途。例如我们对如下数据进行分类

数据:5个拉拉队员的数据

拉拉队员 身高 体重 性别
1 170 55
2 160 45
3 180 65
4 165 50
5 170 50

如果说我们想根据拉拉队员的身高体重队其性别进行分类,那么很明显,体重大于50的都是男队员,小于或等于50的都是女队员。因此决策树桩是完全可以解决这个问题的,那么剩下的工作就是如何让机器根据这些数据自己学习到合适的阈值。设计出来的算法就是决策树桩的学习算法了。

为此我们将问题更加细化一下,我们使用体重作为特征(X),性别作为标签进行分类(Y = 1 判断性别为男,Y = 0判断为女)

决策树桩的模型是一个一维的线性模型,因此其模型函数可以看做是 f(x) = (x - t), 其中t是阈值,我们规定,当f(x)>0时, 预测Y = 1,否则,预测Y = 0。为了找到一个合适的t使用最简单的线性搜索就可以解决。算法如下:

input: 特征x,真实标签Y,学习步长L

L = 1; minErr = 99999;

for t = min(x) to max(x) by L do

  numErr = numberOfErrors(t)

  if numErr <= minErr

    minErr = numErr

    tbest = t

  end if

end for

return tbest

在这个算法中,我们从x的最小值开始搜索,直到x的最大值。每次更新t时给t增加L这么大。numberOfErrors 函数用来统计我们在t作为阈值的情况下,分类的错误数目,这样搜索了一遍后,就能找到一个错误最少的tbest作为我们决策树桩的阈值。

其中学习步长L的作用十分重要,如果L过大的话,可能会不小心错过最优解,但是L过小的话,又会导致算法运行时间过长。因此调整一个合适的L值是十分必要的。

时间: 2024-10-15 02:17:12

机器学习基础笔记(2):最简单的线性分类器的相关文章

机器学习 —— 基础整理(六):线性判别函数——感知器、松弛算法、Ho-Kashyap算法

本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 (一)线性判别函数与广义线性判别函数 一.线性判别函数 这篇总结继续关注分类问题.假设判别函数(Discriminant function)的参数形式已知,用训练的方法直接根据样本估计判别函数的参数.线性判别函数的形式为: $$g(\textbf x)=\textbf w^{\top}\textbf x+w_0$$ $\textbf x\in \mathbb R^d$ 是

SVM入门(三)线性分类器Part 2

上回说到对于文本分类这样的不适定问题(有一个以上解的问题称为不适定问题),需要有一个指标来衡量解决方案(即我们通过训练建立的分类模型)的好坏,而分类间隔是一个比较好的指标.    在进行文本分类的时候,我们可以让计算机这样来看待我们提供给它的训练样本,每一个样本由一个向量(就是那些文本特征所组成的向量)和一个标记(标示出这个样本属于哪个类别)组成.如下:Di=(xi,yi).xi就是文本向量(维数很高),yi就是分类标记.    在二元的线性分类中,这个表示分类的标记只有两个值,1和-1(用来表

机器学习&amp;数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

http://www.cnblogs.com/tornadomeet/p/3395593.html 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大.

机器学习实战笔记1(机器学习基础)

1:如何选择合适的算法 2:python简介 (1)   python的优势:相对于matlab,matlab单个软件授权就要花费数千美元,也没有一个有影响力的大型开源项目.相对于c++/c/java,完成简单的操作就需要编写大量的代码:而如今我们应该花费更多的时间去处理数据内在的含义,而无需花费太多精力解决计算机如何得到数据结果(python简洁) (2)   python具有numpy科学函数库,它是一个使运算更容易.执行更迅速的库:另外还有matplotlib绘图工具. 3:python语

【机器学习基础】线性可分支持向量机

引言 接下里的一系列有关机器学习的博文,我将具体的介绍常用的算法,并且希望在这个过程中尽可能地结合实际应用更加深入的理解其精髓,希望所付出的努力能得到应有的回报. 接下来的有关机器学习基础博文主要根据机器学习技法课程的学习,围绕特征转换(feature transforms)这个主要工具,从以下三个方向进行探讨: 如果现在有很多特征转换可以使用的时候,我们该如何运用这些特征转换,如何控制特征转换中的复杂度的问题,从这个角度刺激了支持向量机(Support Vector Machine)算法的发展

机器学习实战笔记-1基础

机器学习基础 什么是机器学习 机器学习能让我们从数据集中受到启发,换句话说,我们会利用计算机来彰显数据背后的真实含义.简单的说机器学习就是把无序数据转换成有用的信息. 关键术语 特征(属性):对一类物体我们关心的性质,比如鸟的体重.翼展.脚蹼.后背颜色等 训练集:已经有分类的大量数据,是用来训练机器学习算法的数据样本集合. 训练样本:实例数据 目标变量:机器学习的预测结果 训练数据:用来训练算法 测试数据:用来评估算法 监督学习: 无监督学习: 机器学习主要任务 机器学习的主要任务时分类和回归.

C#基础笔记---浅谈XML读取以及简单的ORM实现

背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方案之一.下面简单谈谈XML的读取.  一. xml.linq读取xml 1.新建一个data.XML文件 1 <Customers> 2 <Customer> 3 <Name>Frank</Name> 4 <City>成都</City>

机器学习基础4--评估线性分类

如线性回归一样,我们也分成了训练集和测试集. 用训练集进行分类器的学习,用测试集来评估分类错误. 分类错误: 测试集 -> 隐藏类型标签 -> 放到分类器进行处理 -> 得出结果 -> 与定义好的类型标签进行比较 错误率: 分类错误数/总句子数 正确率: 分类正确数/总句子数 那么,什么样的正确率才是好的? 至少要比随机猜测效果要好. 如果有k个分类,那么正确率至少要大于等于1/k 同时要关注是否有意义: 2010年,全球有90%的邮件是垃圾邮件.而只要说所有邮件都是垃圾邮件,就有

解读机器学习基础概念:VC维的来龙去脉

原作者:vincentyao  原文链接: http://dataunion.org/14581.html 目录: 说说历史 Hoeffding不等式 Connection to Learning 学习可行的两个核心条件 Effective Number of Hypotheses Growth Function Break Point与Shatter VC Bound VC dimension 深度学习与VC维 小结 参考文献 VC维在机器学习领域是一个很基础的概念,它给诸多机器学习方法的可学