• 【机器学习】第二次作业


    第一章 模式识别基本概念

    1.1 什么是模式识别

    【课前预习】
      本节内容比较简单,主要是引入关于模式识别的基本概念,介绍模式识别相关应用领域。需要掌握的重点概念有:模式识别的基本定义——根据任务内容,划分为“分类”和“回归”,本质上是一种推理过程。
    【课后复习】

    • 模式识别的应用实例
      • 由课上所给的实例可以看出,模式识别的任务类型大致分为分类与回归,其中分类又包括二类分类多类分类
      • 同时也可以看出,模式识别涵盖了包括金融、医学、人机交互、机器人等多个领域的内容
    • 模式识别的基本定义
      • 划分为“分类”和“回归”两种形式
        • 分类(Classification)
          • 输出:离散的类别表达
          • 包括:二类分类和多类分类
        • 回归(Regression)
          • 输出:连续的信号表达(回归值)
          • 输出量维度:单个维度/多个维度
        • 回归是分类的基础——离散的类别值是由回归值做判别决策得到的
      • 基本定义:根据已有知识的表达,针对待识别模式,判别决策其所属的类别或预测其对应的回归值。本质上是一个推理(inference)过程

    1.2 模式识别数学表达

    【课前预习】
      本节主要也是概念的引入,介绍了模型的数学表达,及所涉及相关概念,主要包括

    • 输入空间&输出空间
    • 用于回归和分类的模型的具体组成。需要注意用于分类的模型的具体组成,其中判别函数由于基本已知且固定,所以不作为模型的一部分
    • 特征和特征空间,特征的数学表达涉及线性代数的内容,要理解和掌握特征向量的长度和方向的概念及其数学表达

    【课后复习】

    • 模式识别数学解释
      • 可以看作一种函数映射f(x)
        • f(x)形式:可解析表达的/难以解析表达的
        • 输出:确定值/概率值
      • 输入空间&输出空间
        • 输入空间:原始输入数据x所在的空间。维度:输入数据的维度
        • 输出空间:输出的类别/回归值y所在的空间。维度:1维/类别的个数(>2)、回归值的维度
    • 模型(model)的概念
      • 定义:关于已有知识的一种表达方式,即函数f(x)
      • 组成:
        • 用于回归的模型组成
          • 特征提取(feature extraction):从原始输入数据提取更有效的信息
          • 回归器(regressor):将特征映射到回归值,是传统意义上的模型
        • 用于分类的模型组成
          • 广义:特征提取+回归器+判别函数
          • 狭义:特征提取+回归器
          • 分类器(classifier):回归器+判别函数
          • 判别函数:使用一些特定的非线性函数来实现,记作函数g
            • 函数形式:
              • 二类分类:sign函数(判断回归值大于0还是小于0)
              • 多类分类:max函数(取最大的回归值所在的维度对应的类别)
            • 由于判别函数通常固定且已知,所以不作为模型的一部分
          • 判别公式&决策边界
    • 特征:可以用于区分不同类别模式的、可测量的量。输入数据可以看作一种原始特征表达。
      • 具有辨别能力——提升不同类别之间的识别性能;基于统计学规律、而非个例
      • 鲁棒性——针对不同的观测条件,仍能够有效表达类别之间的差异性
    • 特征向量(feature vector):多个特征构成的(列)向量
      • 长度(模)( Vert x Vert=sqrt{x^Tx}=sqrt{sum_{j=1}^{p}x_{j}^2})
      • 方向(单位向量)(frac{x}{ Vert x Vert})
      • (Rightarrow)特征向量=模长(标量)×方向(单位向量)
    • 特征空间
      • 每个坐标轴代表一维特征
      • 空间中的每个代表一个模式(样本)
      • 从坐标原点到任意一点(模式)之间的向量即为该模式的特征向量

    1.3 特征向量的相关性

    【课前预习】
      本节主要介绍了表征特征向量相关性的方法及其数学定义,包括了点积投影残差向量欧式距离
      应该掌握相关概念及数学公式,并理解四种方法表征向量相关程度时所考虑的重点,如:点积和投影主要是说明向量方向上的相似程度,而残差向量和欧式距离则综合考虑了方向和模长,并用以表征相似程度。
    【课后复习】

    • 度量特征向量两两之间的相关性是识别模式之间是否相似基础
    • 特征向量点积(dot product)
      • 代数定义:(xcdot y=x^{T}y=y^{T}x=sum_{j=1}^p x_{j}y_{j})——结果是一个标量表达
      • 具备对称性,是一个线性变换
      • 几何定义(xcdot y= Vert x Vert Vert y Vertcos hetaspacespace)(Rightarrowspace)点积表征两个特征向量的共线性,即方向上的相似程度
        • (xcdot y=0 ightarrow两个向量是正交的(orthogonal))
        • (Rightarrow cos heta=frac{x^T y}{ Vert x Vert Vert y Vert})——两个向量的夹角:反映两个向量在方向上的差异性
    • 特征向量投影(projection)
      • 定义
        • 向量x到y的投影:将向量x垂直投射到向量y方向上的长度(标量)
        • (x_0= Vert x Vert cos heta)
        • 投影向量:(x_0=frac{ Vert x Vert cos heta}{ Vert y Vert} y)
      • 含义:向量x分解到向量y方向上的程度
        • 能分解的越多(Rightarrow)两个向量方向上越相似
        • ( heta=0^{omicron}Rightarrowspace)完全等同;( heta=90^{omicron}Rightarrowspace)分解量为0
      • 特点:向量投影不具备对称性
    • 点积与投影
      • 关系:(xcdot y=x_0 Vert y Vert),即:向量x和y的点积=向量x( ightarrow)y的投影×向量y的模长
      • (if Vert y Vert=1Rightarrow x^Ty= Vert x Vertcos hetaRightarrow x_0= Vert x Vert cos heta frac{y}{ Vert y Vert}=(x^Ty)y)
    • 残差向量(residual vector)
      • 向量x分解到向量y方向上得到的投影向量与原向量x的误差,即:(r_x=x-x_0=x-frac{ Vert x Vert cos heta}{ Vert y Vert}y)
    • 欧式距离
      • 综合考虑方向和模长,表征两个向量之间的相似程度:(d(x,y)=(x-y)^T(x-y)=sum_{j=1}^p(x_j-y_j)^2)

    1.4 机器学习的基本概念

    【课前预习】
      本节主要介绍了机器学习的基本概念及机器学习方式的分类,主要包括:

    • 训练样本、模型的参数和结构、目标函数与优化算法等相关概念
    • 监督式学习、无监督式学习、半监督式学习和强化学习的基本概念及其典型应用
        其中,需要重点理解并掌握的是不同机器学习方式的区别,并其相应的应用实例
      【课后复习】
    • 机器学习技术
      • 机器学习拿什么学?——训练样本
        • 一组训练样本(数据),记作(left{ x_n ight}_{n=1,...,N})
          • (x_nin R^p)——输入特征空间中的一个向量,通常是高维度(即p很大)
          • 假设所有训练样本均满足iid
        • 训练样本(leftrightarrow)尚未加工的原始知识
        • 模型(leftrightarrow)经过学习(即加工整理归纳等)后的真正知识表达
      • 机器学习学什么?——模型的参数和结构
        • 模型的参数和结构 (y=f(x| heta))
          • 参数:( heta=left{ heta_1,..., heta_M ight})
          • 结构:函数f的形式
          • 模型结构(Rightarrow)模型有哪些参数
        • 模型的结构是设计人员事先给定的
          • 线性模型——模型结构是线性的(直线、面、超平面)
            • (y=oldsymbol omega^Toldsymbol x+omega_0),其中,(omega,omega_0)为模型参数
            • 适用于线性可分/线性表达的数据
          • 非线性模型——模型结构是非线性的(曲线、曲面、超曲面)
            • (y=g(oldsymbol x))
            • 适用于线性不可分/线性不可表达的数据,如:多项式、神经网络、决策树……
      • 机器学习怎么学?
        • 样本量(N)vs模型参数量(M)
          • (N=MRightarrow)参数有唯一的解
          • (Ngg M(Over-determined)Rightarrow)没有准确的解
          • (Nll M(Under-determined)Rightarrow)无数个解/无解
        • 目标函数
          • Over-determined
            • 目标函数(代价函数/损失函数)——添加的额外的标准,通过优化它来确定一个近似解
            • (L(oldsymbol heta|left{ oldsymbol x_i ight})),其中,自变量:待学习的参数模型;给定量:训练样本
          • Under-determined
            • 在目标函数中加入能够体现对于参数解的约束条件(以便从无数个解中选出最优的一个解)
            • 优化算法——最小化或最大化目标函数的技术
            • (Rightarrow oldsymbol heta^*=arg mathop{min}limits_{ heta}L(oldsymbol heta|{x_n})),其中,$ oldsymbol heta^*(为参数模型)left{ heta_1,..., heta_M ight}$的最优解
      • 机器学习与模式识别
        • 模式识别阶段——测试阶段
        • 机器学习阶段——训练阶段
    • 机器学习的方式分类
      • 真值(标签)&标注
        • 真值:针对每个训练样本(x_n),其对应的真实正确的输出值,记作(t_n)
          • 通常是一个向量。对于二类分类,真值是一个标量
          • 对于分类任务,真值又称为标签
        • 标注:给每个训练样本标出真值的过程
          • 标注的样本(labeled samples):有提供真值的样本
          • 未标注的样本(unlabeled samples):没有提供真值的样本
      • 监督式学习 Supervised Learning——最常见的学习方式
        • 给定(left{ x_1,x_2,...,x_N ight})(left{ t_1,t_2,...t_N ight}),求解(left{ heta_1, heta_2,..., heta_N ight})
        • 通常使用最小化训练误差作为目标函数进行优化:(minsum_{n=1}^N{ Vert t_n-y_n Vert}_2^2)
      • 无监督式学习 Unsupervised Learning
        • 给定(left{ x_1,x_2,...,x_N ight}),求解(left{ heta_1, heta_2,..., heta_N ight})
        • 难度远高于监督式算法
        • 根据样本之间的相似程度来进行决策
        • 典型应用:聚类 Clustering、图像分割Image Segmentation
      • 半监督式学习
        • 给定(left{ x_1,x_2,...,x_N ight})(left{ t_1,t_2,...t_{N'} ight})(其中N>N'),求解(left{ heta_1, heta_2,..., heta_M ight})
        • 等价于有约束条件的无监督式学习(标注过的训练样本用作约束条件)
        • 典型应用:网络流数据
      • 强化学习 Reinforcement Learning
        • 机器自行探索决策、真值滞后反馈的过程。通过最大化回报的期望值,解出策略的参数
        • 典型应用:Alpha Go

    1.5 模型的泛化能力

    【课前预习】
      本节主要介绍了如何判断模型学的怎么样,通过泛化能力的介绍,了解到判断模型对新模式的决策能力以判断模型的学习效果。介绍了训练集和测试集的概念,并引入测试误差与训练误差,其中,测试误差即反映了模型的泛化能力。
      同时介绍了过拟合的概念,并介绍了提高泛化能力的两种方法:模型选择正则化
    【课后复习】

    • 泛化能力:学习算法新模式决策能力
    • 训练集&测试集
      • 训练集:模型训练所用的样本数据,集合中每个样本称为训练样本
      • 测试集:测试模型性能所用的样本数据,集合中每个样本称为测试样本
      • 两者关系:互斥,但假设均为iid
    • 训练误差&测试误差
      • 训练误差:模型在训练集上的误差
      • 测试误差:模型在测试集上的误差——反映了模型的泛化能力,也称作泛化误差
    • 过拟合:模型在训练阶段表现很好,但是在测试阶段表现很差——模型过于拟合训练数据
    • 如何提高泛化能力
      • 思路:不要过度训练
      • 方法:
        • 概念介绍——多项式拟合&超参数
          • 多项式拟合
            求解参数w的最优值:(y(x,omega)=omega_0+omega_1x+omega_2x^2+...+omega_Mx^M=sum_{m=1}^Momega_mx^m)
            目标函数:(E(w)=frac{1}{2}sum_{n=1}^N[y(x_n,w)-t_n]^2)
          • 超参数
            • 超参数1:M,即多项式的阶数,决定了模型的复杂度
            • 超参数2:N,训练样本个数
        • 模型选择——选择复杂度合适的模型,即选择合适的多项式阶数M
        • 正则化——在目标函数中加入正则项
          • 超参数:正则系数(lambda)( ilde{E}(w)=frac{1}{2}sum_{n=1}^N[y(x_n,w)-t_n]^2+frac{lambda}{2}{ Vert x Vert}_2^2)
          • 通过调节正则系数,降低过拟合程度
        • 调参——调节超参数
          • 涉及到泛化能力、可调整的超参数主要有M,(lambda)
          • 选取合适的超参数:从训练集中划分出一个验证集,基于验证集调整选择超参数

    1.6 评估方法与性能指标

    【课前预习】
      本节主要介绍了如何量化评估模型性能,总共介绍了

    • 三种评估方法:留出法、K折交叉验证、留一验证
    • 五种离散评估标签:Accuracy、Precision、Recall、F-Score、混淆矩阵
    • 三种曲线度量指标:ROC曲线、PR曲线、AUC曲线下方面积
        应理解并掌握三种方法的区别和联系,对于给定的数据,能够计算离散评估标签或绘制曲线度量指标,同时也应该了解不同评估方式的优劣和侧重点

    【课后复习】

    • 评估方法
      • 留出法——将数据集随机分为训练集和测试集
        • 训练集:训练模型
        • 测试集:评估模型的量化指标,取统计值——以克服单次随机划分带来的偏差
        • 将上述随机划分进行若干次,取量化指标的平均值(以及方差、最大值等)作为最终的性能量化评估结果
      • K折交叉验证——将数据集分割成K个子集
        • 从其中选取单个子集作为测试集,其他子集作为训练集
        • 交叉验证重复K次,将K次的评估值取均值,作为最终的量化评估结果
        • K过大容易造成耗时过长,过小的话得到的结果难以到达要求
      • 留一验证——每次只取数据集中的一个样本做测试集,剩余的做训练集
        • 每个样本测试一次,取所有评估值的平均值作为最终评估结果
        • 等同于K折交叉验证,K为数据集样本总数时
    • 性能指标度量
      • 基本概念
        • 回归:测试误差
        • 二类分类:真阳性(TP),假阳性(FP),真阴性(TN),假阴性(FN)
        • 多类分类:依次以单个类作为正类,其余为负类
      • 离散标签
        • 准确度 (Accuracy=frac{TP+TN}{TP+TN+FP+FN})
          • 将阳性和阴性综合起来度量识别正确的程度
          • 如果阳性和阴性样本数量比例失衡,该指标很难度量识别性能
        • 精度 (Precision=frac{TP}{TP+FP})
          • 预测为阳性样本的准确程度——也称查准率(在信息检索领域)
        • 召回率 (Recall=frac{TP}{TP+FN})
          • 全部阳性样本中被预测为阳性的比例——也称敏感率查全率(在信息检索领域)
          • 和精度的关系:
            • 精度高、召回率也高,说明模型性能越好
            • 但有些情况下,它们是矛盾的
        • F-Score:(F=frac{(a^2+1)*precision*recall}{a^2*precision+recall})
          • 通过加权平均,综合precision和recall
          • a=1时,得到F1-score:(F_1=frac{2*precision*recall}{precision+recall})
        • 混淆矩阵 Confusion Matrix
          • 列——预测值; 行——真值
          • 对角线元素的值越大,表示模型性能越好
      • 曲线度量
        • PR曲线 Precision-Recall Curve
          • 横轴——recall ; 纵轴——precision
          • 理想性能:右上角(1,1)处
          • PR曲线越往右上凸,说明模型的性能越好
        • ROC曲线 Receiver-operating-characteristic curve
          • 横轴——False positive rate(FPR)
            • (FPR=1-specificity=frac{FP}{FP+TN})
            • 度量所有阴性样本中被错误识别为阳性的比率
          • 纵轴——True positive rate(TPR),即recall
          • 理想性能:左上角(0,1)处
          • ROC曲线越往左上凸,性能越好
          • 对角线:随机识别的ROC曲线
        • PR曲线与ROC曲线比较
          • ROC曲线:对各类别之间样本分布比例不敏感
          • PR曲线:对各类别之间样本分分布比例敏感
        • 曲线下方面积AUC Area under the Curve
          • 将曲线度量所表达的信息浓缩到一个标量表达
          • AUC=1:完美分类器;0.5<AUC<1:优于随机猜测;
            AUC=0.5:跟随机猜测一样,模型没有预测价值;AUC<0.5:比随机猜测还差

    第二章 基于距离的分类器

    2.1 MED分类器

    【课前预习】
      本节主要介绍了MED分类器,包括:

    • 基于距离分类的相关概念,重点理解类的原型和不同距离度量
    • 并以MED分类器为例,介绍了其基本概念和决策边界方程。同时也指出了MED分类器存在的问题:没有考虑特征变化的不同及特征之间的相关性

    【课后复习】

    • 基于距离分类的基本概念
      • 定义:把测试样本到每个类之间的距离作为决策模型,将其判定为与其距离最近的类
      • 是初级的模式识别技术,是其它识别决策技术的基础
      • 判别公式:(yin C_i,if d(y,C_i)leq d(y,C_i),forall j e i),其中,y:测试样本;(C_i,C_j):类别;d:距离
      • 基本问题
        • 类的原型问题:如何计算单个向量到多个向量的距离
        • 距离度量问题:计算测试样本到类的何种距离
      • 类的原型 Prototype
        • 概念:用来代表这个类的一个模型或者一组量,便于计算该类和测试样本之间的距离
        • 数学表示:(d(y,C_i)=d(y,oldsymbol z_i)),其中,(oldsymbol z_i)表示类(C_i)的原型
        • 种类
          • 均值:该类中所有训练样本的均值

            • 数学表示:(oldsymbol z_i=oldsymbol mu_i=frac{sum_{xin C_i}oldsymbol x}{N_i})

            • 一阶统计

            • 是对类中所有训练样本代表误差最小的一种表达方式

              证明:

          • 最近邻:选取与测试样本距离最近的一个训练样本,类的原型取决于测试样本

            • 对类的表达误差较大
            • 对噪声和异常样本比较敏感
      • 距离度量
        • 距离度量标准
          • 同一性:(d(x,z)=0,iff x=z)
          • 非负性:(d(x,z)ge 0)
          • 对称性:(d(x,z)=d(z,x))
          • 三角不等式:(d(x,z)leq d(x,y)+d(y,z))
        • 常见的距离度量
          • 欧式距离 Euclidean distance:(d_E(oldsymbol x,oldsymbol z)=sqrt{sum_{j=1}^p(oldsymbol x_j-oldsymbol z_j)^2}=sqrt{(x-z)^T(x-z)})
          • 曼哈顿距离 Manhattan distance:(d(oldsymbol x,oldsymbol z)=|oldsymbol x-oldsymbol z|=sum_{j=1}^p|x_j-z_j|)
          • 加权欧式距离:对每维特征分别设置不同的权重:(d_w(oldsymbol x,oldsymbol z)=sqrt{sum_{j=1}^pw_j(x_j-z_j)^2}=sqrt{(oldsymbol x-oldsymbol z)^TI_w(oldsymbol x-oldsymbol z)}),其中(I_w)表示对角元素为(w_j)的对角矩阵
    • MED分类器
      • 概念:最小欧式距离分类器 Minimum Euclidean Distance Classifier
        • 距离衡量:欧式距离
        • 类的原型:均值
        • 数学表达:(yin C_1,if d(oldsymbol y,C_1)<d(oldsymbol y,C_2)),即((oldsymbol y-oldsymbol mu_1)^T(oldsymbol y-oldsymbol mu_1)<(oldsymbol y-oldsymbol mu_2)^T(oldsymbol y-oldsymbol mu_2))
      • 决策边界
        • 2个类:((oldsymbol x-oldsymbol mu_1)^T(oldsymbol x-oldsymbol mu_1)-(oldsymbol x-oldsymbol mu_2)^T(oldsymbol x-oldsymbol mu_2)=0),即((oldsymbol mu_2-oldsymbol mu_1)^T(oldsymbol x-frac{oldsymbol mu_1+oldsymbol mu_2}{2})=0)
        • 高维空间中,该决策边界是一个超平面,且该平面垂直且二分连接两个类原型的线
      • 存在问题:没有考虑特征变化的不同特征之间的相关性
      • 解决方法:去除特征变化的不同及特征之间的相关性

    2.2 特征白化

    【课前预习】
      本节主要介绍了去除特征相关性的方法——特征正交白化。
      特征正交白化主要包括两个步骤——特征解耦和特征白化,其中特征解耦是求解(W_1),以实现协方差矩阵(sum_x)的对角化,注意特征解耦只起到旋转的作用,转换前后欧式距离不变。而特征白化则改变了欧式距离,转换后的欧式距离称为马氏距离
      本节的计算和推导中涉及到许多线性代数的内容,需要进行回顾和复习以更好的理解本节内容。
    【课后复习】

    • 特征白化
      • 目的:将原始特征映射到一个新的特征空间,使得在新空间中特征的协方差矩阵为单位矩阵,从而去除特征变化的不同及特征之间的相关性

      • 步骤
        • 解耦 Decoupling:去除特征之间的相关性
        • 白化 Whitening:对特征进行尺度变换,使每维特征的方差相等
    • 特征解耦任务
      • 实现:求解转换矩阵(W_1),实现协方差矩阵(sum_{x})的对角化
      • 步骤:
        • 求解协方差矩阵(sum_x)的特征值和特征向量
          • 特征值和特征向量相关知识点复习
            • 实例:
            • 注意事项:
        • 由特征向量构建转换矩阵(W_1)
          • (W_1)(sum_x)的正交单位化的特征向量组成的矩阵
          • 特性:
            • 将原始特征投影到协方差矩阵对应的特征向量上,每一个特征向量构成一个坐标轴
            • 新特征的协方差是对角阵,对角线上的元素由原协方差矩阵的特征值构成
            • 转换前后欧式距离保持一致,说明(W_1)只是起到了旋转的作用
              证明:欧式距离不变
      • 具体求解过程:

    • 特征白化任务
      • 具体求解:
      • W转换后的欧式距离——马氏距离 Mahalanobis Distance
        • 数学表达:((oldsymbol x_1-oldsymbol x_2)^Tsum_x^{-1}(oldsymbol x_1-oldsymbol x_2))
        • 证明:

    2.3 MICD分类器

    【课前预习】
      本节主要介绍了MICD分类器,它是基于马式距离的分类器,原型依旧采用类的均值表示,给出了它的判别公式及决策边界的不同情况。
      它可以解决欧式距离存在的没有考虑特征变化的不同及特征之间的相关性的问题,但同时也存在另一个问题,即它会选择方差较大的类。
    【课后复习】

    • 概念:最小类内距离分类器 Minimum Intra-class Distance Classifier,基于马式距离的分类器
      • 类的原型:均值
      • 距离度量:马氏距离
      • 判别公式:(oldsymbol xin C_1,ifspace d_M(oldsymbol x,C_1)<d_M(oldsymbol x,C_2)),即 (ifspace (oldsymbol x-oldsymbol mu_1)^Tsum_1^{-1}(oldsymbol x-oldsymbol mu_1)<(oldsymbol x-oldsymbol mu_2)^Tsum_2^{-1}(oldsymbol x-oldsymbol mu_2))
    • 属性:
      • (sum=I)时,等于欧式距离
      • (sum)为对角矩阵时,等距面是一个超椭圆面
      • (sum)是任意值时,等距面是一个有方向的超椭圆面
    • 决策边界
      • 对于二类分类:位于到两个类的距离相等的面上
      • (sum_1=sum_2)时:为经过(frac{mu_1+mu_2}{2})的超平面
      • (sum_1=c_1I,sum_2=c_2I)时,决策边界为超球面
      • (sum_1=csum_2)时,决策边界为超椭球面
      • (sum_1、sum_2)是任意值时,决策边界为一个超抛物面超双曲面
    • 存在问题:会选择方差较大的类

    第三章 贝叶斯决策与学习

    3.1 贝叶斯决策与MAP分类器

    【课前预习】
      本节主要介绍了贝叶斯决策,提出了通过概率决策的观点。贝叶斯决策强调概率的“主观性”,即条件概率。样本固定,模型参数视为关键。认为不同的观察者获得的信息是不一样的。认为事情发生概率的客观性仅仅是因为观察者不知道事件的结果。随机性的根源不在于事件,而在于观察者对事件的知识状态
      并介绍了MAP分类器,即最大后验概率分类器,该分类器将测试样本决策分类给后验概率最大的那个类。并介绍了该分类器的误差来源,及决策目标,即最小化概率误差。
    【课后复习】

    • 基于距离的决策存在的问题:
      • 仅考虑每个类别各自观测到的训练样本的分布情况(例如:均值(MED分类器)、协方差(MICD分类器))
      • 没有考虑类的分布等先验知识(例如:类别之间样本数量的比例,类别之间的相互关系)
    • 概率的观点
      • 随机性:每个样本是一次随机采样,样本个体具有随机性
        • 机器学习的任务:反复观测采样,找出数据蕴含的概率分布规律
        • 推理决策:根据学习出来的概率分布规律来做决定
      • 每维特征构成一个随机变量,其概率分布由两个元素组成
        • 该特征的取值空间(离散或连续)
        • 在该特征维度上,样本处于各个取值状态的可能性
    • 后验概率:用于分类决策
      • 从概率的观点,给定一个测试模式x,决策其属于哪个类别需要依赖条件概率:(p(old C|old x))
        • 输入模式x:随机变量(单维特征)或向量(高维特征)
        • 类别输出C:随机变量,取值是所有类别标签{(C_i)}
      • 针对每个类别(C_i),该条件概率可以写作:(p(C_i|x))
        • 该条件概率也称作后验概率,表达给定模式x属于类(C_i)可能性
        • 决策方式:找到后验概率最大的那个类
    • 如何得到后验概率——贝叶斯规则 Bayes rule
      • 已知先验概率和观测概率,模式x属于类(C_i)后验概率的计算公式为:(p(C_i|old x)=frac{p(old x|C_i)p(C_i)}{p(old x)})
      • 其中,(p(C_i))为类(C_i)的先验概率,(p(old x|C_i))为观测似然概率,(p(old x)=sum_jp(old x|c_j)p(c_j)=sum_jp(old x,C_j))为所有类别样本x的边缘概率
      • 加入先验后,相较于观测,后验概率产生了迁移
    • MAP分类器
      • 最大后验概率分类器:将测试样本决策分类给后验概率最大的那个类
      • 判别公式:
      • 决策边界
        • 对于二类分类:(p(old x|C_1)p(C_1)-p(old x|C_2)p(C_2)=0)
        • 单维空间:通常有两条决策边界;
        • 高维空间:复杂的非线性边界
    • MAP分类器决策误差
      • 决策误差:可以用概率误差表达,等于未选择的类所对应的后验概率:(p(error|x)=egin{cases}p(C_2|x),if decide xin C_1\p(C_1|x),if decide xin C_2 end{cases})
      • 给定所有测试样本(N为样本个数),分类决策产生的平均概率误差为:样本的概率误差的均值
      • MAP分类器决策目标:最小化概率误差,即分类误差最小化

    3.2 MAP分类器:高斯观测概率

    【课前预习】
      本节介绍了先验概率和观测概率的表达方式,主要介绍了高斯分布的表达。并将其表达带入MAP分类器的判别公式。本节有大量的公式推导,需要对概率论的内容进行一些回顾和复习,以更好的理解该节的内容。
      同时对MAP和MICD、MED分类器进行了比较,可以看出MAP分类器可以较好的解决MICD分类器存在的偏向方差较大的类的问题。
    【课后复习】

    • 先验和观测概率的表达方式
      • 常数表达
      • 参数化解析表达:高斯分布……
      • 非参数化表达:直方图、核密度、蒙特卡洛……——很难用方程形式表达
    • 观测概率
      • 单维高斯分布
        • 分布函数:(p(x|C_k)=frac{1}{sqrt {2pi}sigma_k}e^{-frac{1}{2}(frac{x-mu_k}{sigma_k})^2},k=1,2,...,K),其中:(mu_k,sigma_k)分别代表k的均值和标准差,K代表类别个数
        • 带入MAP分类器的判别公式:
        • 得到决策边界:
          • (sigma_i=sigma_j=sigma)时,决策边界是线性的:
            • 如果(mu_i<mu_j),且(P(C_i)<P(C_j)),则(delta <0),说明:在方差相同的情况下,MAP决策边界偏向先验可能性较小的类,即分类器决策偏向先验概率高的类
            • 其他情况下,也能得到相同的结论
          • (sigma_i e sigma_j)时,决策边界有两条(非线性边界)
          • $Rightarrow $MAP分类器可以解决MICD分类器存在的问题
      • 高维高斯分布
        • 假设观测概率是多维高斯分布,概率密度函数为:(p(old x|C_i)=frac{1}{(2pi)^{p/2}|sum_i|^{1/2}}e^{-frac{1}{2}(old x-old mu_i)^Tsum_i^{-1}(old x-old mu_i)})
        • 带入MAP分类器可以得到判别函数:
        • 决策边界是一个超二次型,但始终是偏移MICD决策边界如下距离:

    3.3 决策风险与贝叶斯分类器

    【课前预习】
      本节主要介绍了决策风险,及用于表征当前决策动作相对于其他候选类别的风险程度的概念——损失。通过在MAP分类器的基础上加入决策风险因素得到了贝叶斯分类器,即贝叶斯分类器事选择决策风险最小的类。同时介绍了贝叶斯分类器的判别公式等,并对朴素贝叶斯进行了一些说明。最后介绍了如何处理边界附近的样本,引入拒绝的概念。
    【课后复习】

    • 决策风险:贝叶斯决策不能排除出现错误判断的情况,由此会带来决策风险。且不同错误决策会产生程度完全不一样的风险
    • 损失:表征当前决策动作相对于其他候选类别的风险程度
      • 假设分类器把测试样本x决策为(C_i)类,这个决策动作记作(alpha_i)
      • 假设该测试样本x的真值是属于(C_j)类,决策动作(alpha_i)对应的损失可以表达为:(lambda(alpha_i|C_j)),简写为(lambda_{ij})
    • 损失的评估:针对所有决策动作和候选类别,可以用一个矩阵来表示对应的损失值
    • 决策风险的评估:给定一个测试样本x,分类器决策其属于(C_i)类的动作(alpha_i)对应的决策风险可以定义为相对于所有候选类别的期望损失,记作(R(alpha_i|old x)=sum_jlambda_{ij}p(C_j|old x))
    • 贝叶斯分类器:在MAP分类器基础上,加入决策风险因素,得到贝叶斯分类器 Bayes classifier。给定一个测试样本x,贝叶斯分类器选择决策风险最小的类。
      • 判别公式:
      • 贝叶斯决策的期望损失
        • 对于单个测试样本,贝叶斯决策损失就是决策风险(R(alpha_i|x))
        • 对于所有测试样本(N为样本个数),贝叶斯决策的期望损失是所有样本的决策损失之和:(R(left {x ight})=sum_iR(alpha_i|left{x ight})=sum_isum_klambda_{ik}sum_{xin R_i}P(C_k|x))
      • 贝叶斯分类器的决策目标
        • 决策目标:最小化期望损失
        • 实现方式:对每个测试样本选择风险最小的类
    • 朴素贝叶斯分类器
      • 背景:如果特征是多维,学习特征之间的相关性会很困难
      • 分类器公式:
    • 对于决策边界附近的样本的处理方式
      • 拒绝选项:在两个类别的决策边界附近,导致属于该类的决策有很大的不确定性。为了避免出现错误决策,分类器可以选择拒绝。
      • 如何拒绝:

    3.4 最大似然估计

    【课前预习】
      本节主要介绍了参数估计方法中的最大似然估计。介绍了相关的目标函数、所需背景知识等,并进行了公式的推导。
    【课后复习】

    • 根据概率分布的表达形式,监督式学习方法有以下两种:
      • 参数化方法:给定概率分布的解析表达,学习这些解析表达函数中的参数。该类方法也称为参数估计
      • 非参数化方法:概率密度函数形式未知,基于概率密度估计技术,估计非参数化的概率密度表达。
    • 参数估计方法
      • 最大似然估计 Maximum Likelihood Estimation
      • 贝叶斯估计 Bayesian Estimation
    • 最大似然估计
      • 定义:
      • 先验概率估计
        • 目标函数:给定所有类的N个训练样本,假设随机抽取其中一个样本属于(C_1)类的概率为P,则选取到(N_1)个属于(C_1)类样本的概率为先验概率的似然函数(即目标函数):(P(N_1|N,P)=C_N^{N_1}P^{N_1}(1-P)^{N-N_1}=frac{N!}{N_1!(N-N_1)!}P^{N_1}(1-p)^{N-N_1})
        • 相关背景知识:Bernouli分布
        • 先验概率估计:
      • 观测概率估计:高斯分布(待学习参数:(均值mu和协方差sum)
        • 目标函数:
        • 参数估计:


    3.5 最大似然的估计偏差

    【课前预习】
      本节主要介绍了无偏估计,并对上述几个估计值进行了判断,其中高斯分布均值的最大似然估计是无偏估计。而协方差的最大似然估计是有偏估计,并对偏差进行了求解和修正。
    【课后复习】

    • 无偏估计
      • 定义:如果一个参数的估计量数学期望是该参数的真值,则该估计量称作无偏估计
      • 含义:只要训练样本个数足够多,该估计值就是参数的真实值
      • 相关背景知识:数学期望和方差/协方差
    • 判断是否为无偏估计
      • 高斯分布均值的最大似然估计
        • 均值的最大似然估计是无偏估计
      • 高斯分布协方差的最大似然估计

        • 协方差的最大似然估计是有偏估计
        • 偏差多少:

          估计偏差是一个较小的数。当N足够大时,最大似然估计可以看做是一个较好的估计
        • 修正:在实际计算中,可以通过将训练样本的协方差乘以N/(N-1)来进行修正

    3.6 贝叶斯估计(1)

    【课前预习】
      本节主要介绍了贝叶斯估计的相关概念,并以高斯均值的先验概率和后验概率的估计为例,说明了贝叶斯估计具备不断的学习能力,可以通过增加训练样本,实现串行的不断修正参数的估计值,从而达到该参数的期望真值。
    【课后复习】

    • 概念
      • 概率分布中待学习的参数( heta)也可以当做随机变量
      • 贝叶斯估计:给定参数( heta)分布的先验概率以及训练样本,估计参数( heta)分布的后验概率
      • 先验概率:
      • 后验概率:
    • 贝叶斯估计
      • MAP分类器中观测似然概率的参数估计:
      • 高斯均值
        • 先验概率:
        • 后验概率:

          通过分析可知,当(N_i)足够大时,样本均值m就是参数( heta)的无偏估计
        • 参数先验对后验的影响:
      • 具备不断学习的能力
        • 允许最初的、基于少量训练样本的、不太准的估计
        • 随着训练样本的不断增加,可以串行的不断修正参数的估计值,从而达到该参数的期望真值

    3.7 贝叶斯估计(2)

    【课前预习】
      本节介绍了将参数后验概率用于MAP分类的方法。并比较了贝叶斯估计和最大似然估计的异同。最大似然估计将观测似然的参数看做是确定值,而贝叶斯估计则将其作为一个隐随机变量,有多种取值的可能性。最后对贝叶斯估计进行了总结,其目的是估计观测似然概率。给定了观测似然分布的形式、参数的先验概率、训练样本。需要先估计参数的后验概率,然后估计观测似然关于参数的边缘概率。
    【课后复习】

    • 先导知识:贝叶斯规则
    • 观测似然概率的估计:可以看做是关于x的高斯分布——(p(x|D_i)=mathcal N(mu_ heta,sigma^2+sigma_ heta^2))
    • 贝叶斯估计与最大似然估计比较
      • 贝叶斯估计
        • 把参数看做参数空间的一个概率分布
        • 依赖训练样本来估计参数的后验概率,从而得到观测似然关于参数的边缘概率:(p(x|D_i)=mathcal N(mu_ heta,sigma^2+sigma_ heta^2))
        • 随着训练样本个数的逐渐增大,(mu_ heta)趋近于真实值
        • 在已知的方差(sigma)上加入(sigma_ heta),代表对于未知均值(mu)的不确定性
        • 样本个数逐渐增大时,贝叶斯估计越来越能代表真实的观测似然分布
      • 最大似然估计
        • 把观测似然的参数( heta)看做是确定值,即参数空间的一个固定的点
        • 不需要估计关于( heta)的边缘概率
        • 有明确的目标函数,通过优化技术来求取( heta_{ML})
    • 贝叶斯估计流程步骤

    3.8 无参数概率密度估计

    【课前预习】
      前面几小节基于已知概率分布形式的估计,本节主要介绍了当概率分布形式未知时,如何通过无参数技术实现概率密度估计。并介绍了几种常用的无参数技术:K近邻法、直方图技术、核密度估计。本节主要介绍了概率密度估计的基本概念,及K近邻法,它可以自适应的确定x相关的区域R的范围。但不是连续函数,不是真正的概率密度表达。
    【课后复习】

    • 概率密度估计基本理论
      • 无参数估计的任务:估计概率p(x),即估计以x为中心、在极小的区域(R=(x,x+delta x))内的概率密度函数
      • 对于任意一个模式x,其落入区域R的概率P可以表达为:(P=int_{x'in R}p(x')\,dx'),如果R足够小,P是p(x)的平滑版本,可以用来估计p(x)
      • k个样本落在区域R的概率密度(用二项分布表示):(p(k)=C_N^kP^k(1-P)^{N-k}),可知,当N很大时,k的分布非常尖锐且集中在均值(mu_k)[(E[p(k)]=mu_k=NP)]附近。
      • p(x)的近似估计:(P=int_{x'in R}p(x')\,dx'approx p(x)VRightarrow p(x)approx frac{k}{NV})
      • 确定区域R和体积V:把V当做训练样本的函数,k是训练样本个数N的函数
        • 概率密度在x附近很高(Rightarrow)较多训练样本落在x附近(Rightarrow)V较小
        • 概率密度在x附近很低(Rightarrow)较少训练样本落在x附近(Rightarrow)V较大
    • KNN估计
      • 优点:可以自适应的确定x相关的区域R的范围
      • 缺点:
        • KNN概率密度估计不是连续函数
        • 不是真正的概率密度表达,概率密度函数积分是∞而不是1
      • 存在问题
        • 在推理测试阶段,仍然需要存储所有训练样本,因为针对任意一个模式x,需要以其为中心,在训练样本中寻找k个相邻点来估计该模式的概率
        • 由于区域R是由第k个近邻点确定的,易受噪声影响

    3.9 直方图与核密度估计

    【课前预习】
      本节主要介绍了直方图估计和核密度估计。分别介绍了两种方法的基本原理、优缺点、带宽选择等。并对二者进行了比较,核密度估计比直方图估计更加平滑。
    【课后复习】

    • 直方图估计
      • 原理
        • 区域R的确定:
        • 统计学习:
          • 由于每个区域R所囊括的训练样本个数不相同,所以需要根据每个训练样本的特征值,将其统计到相应的格子
          • 假设训练样本个数为N,落在每个格子(记作(b_m))的样本个数为(k_m),则每个格子统计值为(frac{k_m}{N})
        • 概率密度估计
          • 给定任意模式x,先判断它属于哪个格子,其概率密度即为该格子的统计值、带宽
          • (p(x)=frac{f_m}{Nh},ifspace xin b_m)
          • 可见,直方图得到的概率密度也是不连续的
      • 优点
        • 固定区域R:减少由于噪声污染造成的估计误差
        • 不需要存储训练样本
      • 缺点
        • 固定区域R的位置:如果模式落在相邻格子的交界区域,意味着当前格子不是以模式x为中心,导致统计和概率估计不准确
        • 固定区域R的大小:缺乏概率估计的自适应能力,导致过于尖锐或平滑
      • 改进
        • 统计阶段:双线性插值
          • 针对区域R的位置固定,自适应能力不强的问题
        • 带宽选择:
          • 带宽h过小,概率密度函数过于尖锐
          • 带宽h过大,概率密度函数过于平滑
    • 核密度估计(也称为Parzen Windows)
      • 原理
        • R的确定:以任意待估计模式x为中心、固定带宽h,依次确定一个区域R
        • 统计学习:
        • 概率密度估计:
        • 核函数:
      • 优点
        • 以待估计模式x为中心、自适应确定区域R的位置(类似KNN)
        • 使用所有训练样本,而不是基于第k个近邻点来估计概率密度,从而可负KNN估计存在的噪声影响
        • 如果核函数连续,则估计的概率密度函数也是连续的
      • 缺点:与直方图估计相比,核密度估计不提前根据训练样本估计每个格子的统计值,所以它必须要存储所有训练样本
      • 带宽选取原则:泛化能力
        • 带宽h决定了估计概率的平滑程度
        • 因为给定的训练样本数量有限,所以要根据这些训练样本估计出来的概率分布既能符合这些训练样本,同时也要有一定预测能力
    • 两者相比:核密度估计比直方图估计更加平滑

    第四章 线性判据与回归

    4.1 线性判据基本概念

    【课前预习】
      本节首先介绍了生成模型和判别模型,及两个模型的优势与劣势,并介绍了最简单的判别模型——线性判据。简述了其定义及数学表达,要注意的是(w)(w_0)的代数意义与几何意义。
    【课后复习】

    • 生成模型
      • 概念:给定训练样本{(x_n)},直接在输入空间内学习其概率密度函数(p(x))
      • 作用:通常用于估计每个类别的观测似然概率(p(x|C_i))
      • 优势:
        • 可以根据(p(x))采样新的样本数据
        • 可以检测出较低概率的数据,实现离群点检测
      • 劣势:
        • 如果是高纬度的x,需要大量训练样本才能准确的估计(p(x));否则,会出现维度灾难
    • 判别模型
      • 概念:给定训练样本{(x_n)},直接在输入空间内估计后验概率(p(C_i|x))
      • 作用:在分类任务中,后验概率分布(p(C_i|x))相当于直接从输入样本x映射到类别输出(C_i)的判别函数(f(x)),即判别模型。
      • 优势:快速直接、省去了耗时的高维观测似然概率估计(在分类任务中,观测概率分布所包含的大量复杂内容有时对于后验概率的影响比较有限)
    • 最简单的判别模型——线性判据
      • 定义:如果判别模型f(x)是线性函数,则f(x)为线性判据
        • 可以用于二类分类,决策边界是线性的
        • 也可以用于多类分类,相邻两类之间的决策边界也是线性的
      • 优势
        • 计算量少:在学习和分类过程中,线性判据方法都比基于学习概率分布的方法计算量少
        • 适用于训练样本较少的情况
      • 数学表达:

        • (w)
          • 方向:垂直于决策边界上的任何向量,即w是H的法向量。
          • 作用:决定了决策边界H的方向
        • (w_0)
          • 作用:决定了决策边界的偏移量,使其能够满足两个类输出值分别为正负
        • 任意样本到决策边界的距离(r=frac{f(x)}{ Vert w Vert})
          • 该距离r的绝对值可以作为confidence score:值越大,这个点属于正类或者负类的程度越大
          • (f(x))是样本x到决策面H的**代数距离度量
        • 任意样本到坐标原点的距离
          • (r_0=frac{f(x_0)}{ Vert w Vert}=frac{w_0}{ Vert w Vert})
          • 可见,(w_0)决定决策边界相对于坐标原点的位置

    4.2 线性判据学习概述

    【课前预习】
      本节解答了如何学习线性判据的问题。介绍了学习和识别的过程,并讲述了如何通过设计目标函数和加入约束条件的方式得到最优解。
    【课后复习】

    • 学习和识别过程
      • 监督式学习过程,设计目标函数,学习(w)(w_0)
      • 识别过程:
      • 参数空间:由各个参数维度构成的空间,参数的每个可能解相当于是参数空间的一个向量
      • 解域:在参数空间内,参数的所有可能解所处的范围
    • 求解最优解
      • 目标函数:
        • 设计:
        • 求解:最小化/最大化目标函数
      • 加入约束条件——提高泛化能力
        • 缩小解域范围,沿着每个样本向量(x_i)方向的收缩距离为:(frac{b}{ Vert x_i Vert})

    4.3 并行感知机算法

    【课前预习】
      根据目标函数的不同,我们可以设计不同的线性判据算法。本节介绍了一种具体的学习算法——并行感知机算法。介绍了算法的基本流程和求解最优解方法。主要介绍了梯度下降法迭代求解参数。
    【课后复习】

    • 预处理
      • 目的:根据标记过的训练样本{((x_n,t_n))},学习模型参数:(w,w_0)
      • 步骤:
      • 几何解释:通过在特征空间上增加一个维度,使得决策边界可以通过原点(w_0)项)
    • 最优解
      • 目标函数
        • 思想:被错误分类的样本最少。针对所有被错误分类的训练样本(即输出值小于0的训练样本),其输出值取反求和
        • (J(a)=-sum_{y in Y}a^Ty,Y={y|a^Tyleq 0}),该目标函数是关于a的一次线性函数
      • 最小化该目标函数:取关于a的偏导。由于偏导不含a,所以不能通过简单的设为0来求解a
        • 梯度下降法:使用当前梯度值迭代更新参数
          • 更新的方向:
          • 更新的大小:
        • 参数更新过程:
    • 算法流程:

    4.4 串行感知机算法

    【课前预习】
      本节介绍了如何处理训练样本串行给出的情况,介绍了串行感知机算法。主要介绍了其基本原理和优化的约束方式。同时也给出了收敛的概念。
    【课后复习】

    • 适用于训练样本一个一个串行给出的情况
    • 目标函数:
      • 思想:当前样本被错误分类的程度最小
      • 目标函数:
        • 如果当前训练样本被错误分类,最小化其输出值取反:(J(a)=-a^Ty_n,ifspace a^Ty_nleq 0)
        • 求解:
    • 算法流程:
    • 收敛性:
      • 概念:如果训练样本是线性可分的,感知机(并行和串行)算法理论上收敛于一个解
      • 只是保证算法会停止,但是最终结果不一定是全局最优
      • 步长与收敛性:
    • 提高感知机泛化能力——加入Margin约束
      • 将错误分类的标准改为:(a^Tyleq b,where space b>0)
      • 目标函数求解:

    4.5 Fisher线性判据

    【课前预习】
      本节主要介绍了如何更好的学习w,使类别有效分开的方法。基本原理是通过合适的投影轴,使分类效果达到最佳。并给出了具体的函数表达。
    【课后复习】

    • 设计动机:怎样学习w,使得二类可以有效分开。
    • 基本原理:
    • 目标函数:
      • 表征量的数学表达
        • 类间样本的差异程度:用两类样本分布的均值之差度量
        • 类内样本的离散程度:用每类样本分布的协方差矩阵表征
      • 目标函数:
      • 最优参数解:
        • (w=S_w^{-1}(mu_1-mu_2))
        • (w_0=-w^Tmu)
    • Fisher线性判据:(f_{FLD}(x)=w^Tx+w_0=(mu_1-mu_2)^TS_w^{-1}(x-mu))
    • 决策边界:

    4.6支持向量机基本概念

    【课前预习】
      本节主要介绍了支持向量机的基本概念。理解支持向量机的基本概念需要理解间隔的数学定义,支持向量机就是最大化总间隔的算法。
    【课后复习】

    • 设计思想:给定一组训练样本,使得两个类中与决策边界最近的训练样本到决策边界之间的间隔最大
    • 间隔的数学定义:
    • 支持向量的概念:
    • 分类器表达:(t_n(w^Tx_n+w_0)-1ge 0,forall n),当(x_n)是支持向量时,等式成立
    • 目标函数:
      • SVM目标:最大化总间隔
      • 分析:
        • 是条件优化问题
        • 目标函数自变量为(w),是关于它的二次型函数
        • 约束条件是关于(w)的仿射函数(线性函数)

    4.7 拉格朗日乘数法

    • 条件优化问题
    • 等式约束
      • 定义一个拉格朗日函数(L(x,lambda)=f(x)+lambda g(x)),其满足驻点条件和约束条件
      • 将等式约束问题转换为等价的不带约束的优化问题
    • 不等式约束
      • 情况1:极值点落在可行域内
        • 相当于在拉格朗日函数中设置(lambda =0)
        • 从而满足驻点条件且(lambda =0)
      • 情况2:极值点落在可行域边界
        • 相当于存在一个(lambda >0)
        • 满足驻点条件:
      • 综合两种情况
        • 始终存在一个(lambda ge 0)
        • 满足驻点条件:
      • KKT条件

    4.8 拉格朗日对偶问题

    • 主问题:带约束的原问题等价于如下(关于x的)无约束问题
    • 拉格朗日对偶函数
      • 对偶函数是主问题的最优值下届
      • 对偶问题
    • 对偶函数的凹凸性
      • 对偶函数是凹函数
      • 凸优化
    • 对偶问题与主问题的差异
      • 弱对偶性与强对偶性
      • 如果强对偶性成立,则对偶问题获得主问题的最优下届

    4.9 支持向量机学习算法

    • 目标函数如何求解:使用拉格朗日对偶法
    • 构建拉格朗日函数
    • 构建对偶函数
      • 针对(w)(w_0)求解最小化
      • 对偶函数的约束条件
    • 对偶问题的求解
      • 标准的关于(lambda)的二次规划问题
      • 可以调用Matlab提供的quadprog函数求解
    • 求解支持向量
    • 参数最优解
      • (w)
      • (w_0)
    • 决策过程
  • 相关阅读:
    使用java调用fastDFS客户端进行静态资源文件上传
    FastDFS概念、原理及CentOS7下安装实战
    Centos7安装Nginx实战
    Maven install [WARNING] The artifact aspectj:aspectjrt:jar:1.5.4 has been relocated to org.aspectj:aspectjrt:jar:1.5.4
    IOS照片颠倒分析及PHP服务端的处理
    web开发实战--弹出式富文本编辑器的实现思路和踩过的坑
    小木的智慧屋--微信公众号的推广案例分析(1)
    web开发实战--图片裁剪和上传
    springmvc学习笔记--ueditor和springmvc的集成
    网页闯关游戏(riddle webgame)--H5刮刮卡的原理和实践
  • 原文地址:https://www.cnblogs.com/YvonneLhy/p/12809634.html
Copyright © 2020-2023  润新知