"> "> Yufei Luo's Blog - But I was so much older then, I am younger than that now.

核函数

定义

\(\mathcal{H}\)为特征空间(希尔伯特空间,更详细的解释可以阅读参考中2、3的内容),如果存在一个从输入空间\(\mathcal{X}\)到特征空间\(\mathcal{H}\)的映射\(\phi(\boldsymbol{x}):\mathcal{X}\rightarrow \mathcal{H}\),使得对于所有的\(\boldsymbol{x},\boldsymbol{z}\in \mathcal{X}\),函数\(\kappa (\boldsymbol{x},\boldsymbol{z})\)满足条件: \[ \kappa(\boldsymbol{x},\boldsymbol{z})=\phi(\boldsymbol{x})\cdot \phi(\boldsymbol{z}) \] 则称\(\kappa (\boldsymbol{x},\boldsymbol{z})\)核函数(Kernel Function),其中\(\phi(\boldsymbol{x})\)映射函数\(\phi(\boldsymbol{x})\cdot \phi(\boldsymbol{z})\)代表两个向量之间的内积。核函数\(\kappa (\boldsymbol{x},\boldsymbol{z})\)为对称函数,交换\(\boldsymbol{x},\boldsymbol{z}\)的顺序不会影响计算结果。

阅读全文 »

定义

支持向量机(Support Vector Machine,SVM)是一种二分类模型,属于线性模型的一种,它的学习思想是在空间内找到一个超平面\(\boldsymbol{x}\boldsymbol{w}^T+b=0\)(其中\(\boldsymbol{x}=(x_1,x_2,\dots,x_n)\)代表模型的输入向量,\(\boldsymbol{w}=(w_1,w_2,\dots,w_n)\)\(b\)为模型参数),能够使得两类样本与超平面的间距最大化。落在超平面两侧的样本,分别对应于\(y=+1\)\(y=-1\)两种不同的分类。也就是说,在学得超平面的表达式之后,支持向量机模型的分类函数可以写为: \[ y= \begin{cases} 1,~\boldsymbol{x}\boldsymbol{w}^T+b>0 \\ -1,~\boldsymbol{x}\boldsymbol{w}^T+b<0 \\ \end{cases} \]

阅读全文 »

定义

在传统的DNN、CNN等前向反馈神经网络模型中,数据从输入层传到若干隐藏层最后再流向输出层,每层之间的节点是无连接的。这些模型在处理图像、表格等数据上面表现突出,但是在面对序列型数据如文本、语音、股票等上下文相关的数据时却无能为力。

例如我们要翻译下面两句话中的Apple这个单词:

第一句话:I like eating apple!(我喜欢吃苹果!)

第二句话:The Apple is a great company!(苹果真是一家很棒的公司!)

阅读全文 »

概述

计算机视觉中关于图像识别有四大类任务:

  1. 分类-Classification:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。
  2. 定位-Location:解决“在哪里?”的问题,即定位出这个目标的的位置。
  3. 检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。
  4. 分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或场景”的问题。
img

目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。所以目标检测是一个分类、回归问题的叠加。

阅读全文 »

概念

卷积神经网络(Convolutional Neural Network,CNN)最早由纽约大学的Yann Lecun提出,他构造的LeNet神经网络中使用了多层的卷积操作。下图所示为LeNet5的结构:

这里写图片描述

相比于全连接神经网络,卷积层的本质区别在于层与层之间使用了局部连接权值共享的方式。

阅读全文 »

原理

线性判别分析(Linear Discrimination Analysis, LDA)是一种监督学习算法,属于线性模型的一种,这一算法可以用于对样本进行分类,也可以用于对样本进行降维,但是目前比较多的应用是降维。下文中将使用两种不同的思路推导其原理,并介绍在Sklearn中它的使用方法。

推导1:贝叶斯定理+高斯分布假设

假设\(f_{k}(x)\)代表样本\(X=x\)满足类别\(G=k\)的条件概率密度;令\(\pi _k\)代表\(x\)属于第\(k\)个类别的先验概率,则它满足\(\sum_{k=1}^{K}\pi _k=1\)。通过使用贝叶斯定理可以得到: \[ Pr(G=k|X=x)=\frac{f_k(x)\pi_k}{\sum_{\ell=1}^{K}f_{\ell}(x)\pi_\ell} \] 如果我们假设每个类别的概率密度函数都是如下的多变量高斯分布,即: \[ f_k(x)=\frac{1}{(2\pi)^{p/2}|\Sigma_{k}|^{1/2}}e^{-\frac{1}{2}(x-\mu_k)^T\Sigma_k^{-1}(x-\mu_k)} \]

阅读全文 »

原理

主成分分析(Principle Components Analysis, PCA)属于无监督学习算法,它的想法是用一个\(q\)维的数据去尽可能地近似表达原本\(p(p>q)\)维的数据。

推导1:最小重建误差

我们将原始数据记作\(\boldsymbol{x}_1,\boldsymbol{x}_2,\dots,\boldsymbol{x}_N\),为一系列的\(p\)维行向量。假设现在构造了一个用来近似表示\(\boldsymbol{x}_i\)的模型:\(f(\boldsymbol{\lambda})=\boldsymbol{\mu} + \boldsymbol{\lambda}\boldsymbol{V}_{q}^T\),其中\(\boldsymbol{\mu}\)是一个\(p\)维空间中的行向量;\(\boldsymbol{V}_q=\{\boldsymbol{v}_1,\dots,\boldsymbol{v}_q\}\)一个\(p\times q\)的矩阵,\(\{\boldsymbol{v}_i\}\)两两正交的单位向量;函数的输入参数\(\boldsymbol{\lambda}\)即为压缩后的\(q\)维行向量(\(q\le p\))。

\(f(\boldsymbol{\lambda})\)的目的是尽量地将压缩后的\(q\)维向量还原为\(p\)维向量,并且使得重构误差尽可能地小,用数学公式可以表达为:

阅读全文 »

定义

线性模型

假设\(\boldsymbol{x}=(x_1,x_2,\dots,x_n)\)为输入向量,\(\boldsymbol{w}=(w_1,w_2,\dots,w_n)\)\(b\)为模型的参数,线性模型的定义如下: \[ f(\boldsymbol{x})=b+\sum_{i=1}^{n}w_ix_i \] 上述的线性模型表达式也可以记作矩阵运算的形式:\(\boldsymbol{f}(X)=X\boldsymbol{\beta}\)。其中,\(X=\begin{bmatrix} \boldsymbol{x}_1'\\ \boldsymbol{x}_2'\\ \vdots \\ \boldsymbol{x}_m' \end{bmatrix}\)\(\boldsymbol{x}_i'=[\boldsymbol{x}_i,1]\)\(\boldsymbol{\beta}=[\boldsymbol{w},b]^T\)\(\boldsymbol{f}(X)=(f(\boldsymbol{x}_1'),f(\boldsymbol{x}_2'),\dots,f(\boldsymbol{x}_m'))^T\),

对于变量\(x_i\)的来源,包括但不限于:

  • 连续型变量
  • 离散型变量的哑编码(dummy variable)
  • 连续型变量的函数变换,如\(\log x_i\)\(e^{x_i}\)\(x_i^2\)\(\sqrt{x_i}\)
  • 关于其它变量的函数变换,例如\(x_k=x_i\cdot x_j^2\)
阅读全文 »

爬虫步骤

爬虫其实很简单,可以大致分为三个步骤:

  • 发起请求:我们需要先明确如何发起 HTTP 请求,获取到数据。
  • 解析数据:获取到的数据乱七八糟的,我们需要提取出我们想要的数据。
  • 保存数据:将我们想要的数据,保存下载。

发起请求,我们用requests即可;解析数据其实是爬虫中最重要的环节,需要从网页的HTML文本中找到有用的信息,这一步有很多工具可以使用,比如xpath、Beautiful Soup、正则表达式等;保存数据,就是常规的文本保存。

阅读全文 »

HTML简介

什么是HTML

HTML 是用来描述网页的一种语言。

  • HTML 指的是超文本标记语言: HyperText Markup Language。它不是一种编程语言,而是一种标记语言,标记语言是一套标记标签 (markup tag)
  • HTML使用标记标签来描述网页
  • HTML文档包含了HTML 标签文本内容,HTML文档也叫做 web 页面
阅读全文 »