BruceFan's Blog

Stay hungry, stay foolish

0%

支持向量机是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,支持向量机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题。
支持向量机学习方法包含构建由简至繁的模型:

  • 当训练数据线性可分时,通过硬间隔最大化(hard margin maximization),学习一个线性的分类器,即线性可分支持向量机。
  • 当训练数据近似线性可分时,通过软间隔最大化(soft margin maximization),也学习一个线性的分类器,即线性支持向量机。
  • 当训练数据线性不可分时,通过使用核技巧(kernel trick)及软间隔最大化,学习非线性支持向量机。
阅读全文 »

分类决策树模型是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成,结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。
用决策树分类,从根结点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归地对实例进行测试并分配,直至达到叶结点。最后将实例分到叶结点的类中。决策树学习的目的是为了产生一个泛化能力强,即处理未见示例能力强的决策树,其基本流程遵循简单且直观的分而治之(divide-and-conquer)策略。

阅读全文 »

当构建神经网络时,我们经常想把计算分配到各个layer,一些可学习参数(learnable parameter)在学习的过程中会被优化。在PyTorch中nn包提供了计算图(computational graph)的高级抽象,nn包定义了一系列Module,和神经网络的layer大致相同,Module接收输入Tensor,计算输出Tensor,同时也保存中间状态,如包含可学习参数的Tensor。nn包也定义了一系列有用的损失函数。

阅读全文 »

之前听过前向传播和反向传播,也看到项目中有这两个步骤,但是不知道具体是干什么的,在看PyTorch官方教程的时候看到一个用numpy实现的2层神经网络,里面实现了前向传播和反向传播,这里记录一下,同时也记录一下我的PyTorch学习过程。

阅读全文 »

基于贝叶斯决策理论的分类方法

朴素贝叶斯是贝叶斯决策理论的一部分,所以在学习朴素贝叶斯之前先了解一下贝叶斯决策理论。
假设我们有一个数据集,由两类数据组成:

阅读全文 »

我们需要一个函数能接受所有的输入然后预测出类别,例如在两个类的情况下,这个函数输出0或1。单位阶跃函数具有这种性质,然而它的问题在于在跳跃点上从0瞬间跳跃到1,这个瞬间跳跃过程有时很难处理。幸好另一个函数也有类似性质,且数学上更易处理,这就是sigmoid函数。

阅读全文 »

最近一直在做机器学习相关的工作,但是对机器学习的基础还没有什么太好的掌握,所以打算从头开始学习一些基本的算法,太深入的数学原理先不深究,需要用到时再补吧(说得跟真的一样)。
$k$-近邻算法,它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每个数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据的分类标签。一般来说,我们只选择样本数据集中前$k$个最相似的数据,这就是$k$-近邻算法中$k$的出处,通常$k$是不大于20的整数。最后,选择$k$个最相似数据中出现次数最多的分类,作为新数据的分类。

阅读全文 »

这篇文章用python实现一下区块链的基本概念,主要目的是凑热闹学习区块链相关知识,没有太大实际用途。

创建区块链

区块链就是许多区块的链表,区块链里的每个链表都有自己的签名,包含前一个区块的数字签名和一些数据(例如交易)。

阅读全文 »

监督学习和无监督学习

简单来说:是否有监督(supervised),就看输入数据是否有标签(label)。输入数据有标签,则为有监督学习,没标签则为无监督学习。

阅读全文 »