第一章 基本概念
1.1 什么是模式识别
1 什么是模式识别
模式识别应用实例:CV(字符识别、交通标志、动作识别)、人机交互(语音识别)、医学、网络、金融、机器人、无人车……
2 模式识别基本概念
1)根据任务,模式识别可以划分为“分类”和“回归”两种形式
- 分类
- 输出量是离散的类别表达,即输出待识别模式所属的类别
- 二类/多类分类
- 回归
- 输出量是连续的信号表达(回归值)
- 输出量维度:单个/多个维度
- 回归是分类的基础:离散的类别值是由回归值做判别决策得到的,先通过回归器得到回归值,根据回归值进行分类
2)模式识别本质上是一种推理(inference)过程。根据已有知识的表达,针对待识别模式,判别决策其所属的类别或者预测其对应的回归值。
3)什么是模式
样本的一种抽象
1.2 模式识别数学表达
1 模式识别数学解释
1)模式识别可以看作一种函数映射f(x),将待识别模式x从输入空间映射到输出空间
- f(x):
- 模型,关于已有知识的表达
- 形式:可解析表达的(可以用数学公式表达)、难以解析表达的
- 输出:确定值、概率值
- 不能解析表达的也是模型:深度网络基本很难用公式完整表达
- 输入空间
- 输入x是样本特征的集合
- 输出空间
- 二类分类下输出空间是一维
2)模型的概念
- 模型:关于已有知识的一种表达方式,即函数f(x)
- 模型的组成
- 用于回归
- 特征提取(feature extraction):从原始输入数据提取更有效的信息。
- 回归器(regressor):将特征映射到回归值
- 用于分类
- 用于回归
- 判别函数
- 二类分类:sign
- 多类分类:max
- 决策边界
- 用于分类
- 线、面、超平面
3)特征与特征空间
- 特征
- 特征个数:不是越多越好,过多可能会过拟合
- 特征向量:多个特征构成的(列)向量
- 鲁棒性:针对不同的观测条件,仍能够有效表达类别之间的差异性
1.3 特征向量的相关性:识别模式之间是否相似
- 特征向量点积
- 代数定义
- 点积结果是一个标量表达。
- 点积具备对称性。
- 点积是一个线性变换。
- 几何定义
- 点积可以表征两个特征向量的共线性,即方向上的相似程度。
- 点积为0,说明两个向量是正交的(orthogonal)
- 代数定义
- 特征向量投影
- 投影:向量x到y的投影:将向量x垂直投射到向量y方向上的长度(标量)。
- 投影的含义:向量x分解到向量y方向上的程度。能够分解的越多,说明两个向量方向上越相似。
- 当θ= 0°时,完全等同
- 当θ = 90°时,分解量为0
- 向量投影不具备对称性。
- 投影向量:
- 投影:向量x到y的投影:将向量x垂直投射到向量y方向上的长度(标量)。
- 点积与投影的区别
- 点积具有对称性(x·y=y·x),投影不具有对称性
- 点积考虑了2个向量的模长,投影只考虑了一个向量的模长。
- 他们的本质区别,是在计算向量差异性的时候,衡量的方式不同
- 卷积与点积:卷积运算本质上就是在滤波器和输入数据的局部区域间做点积
- 残差向量
- 欧式距离
1.4 机器学习基本概念
1 机器学习流程概述
- 训练样本
- 模型的参数和结构
- 线性模型
- 非线性模型
- 线性模型
- 样本量与模型参数量
- 目标函数
- 机器学习算法为什么要设计目标函数?是因为参数可能没有准确的解。要通过最大化或最小化目标函数得到参数的近似解
- 对于over-determined的情况,需要额外添加一个标准,通过优化该标准来确定一个近似解。该标准就叫目标函数(Objective function),也称作代价函数(cost function)或损失函数(loss function)
- 目标函数以待学习的模型参数作为自变量、以训练样本作为给定量
- 对于under-determined的情况,还需要在目标函数中加入能够体现对于参数解的约束条件,据此从无数个解中选出最优的一个解
- 优化算法
- 优化算法:最小化或最大化目标函数的技术。通过优化算法,最终得到模型参数{ 𝜃1, … , 𝜃𝑀 }的最优解
- 优化算法:最小化或最大化目标函数的技术。通过优化算法,最终得到模型参数{ 𝜃1, … , 𝜃𝑀 }的最优解
- 模式识别与机器学习:模式识别相当于机器学习好的系统,如何做决策推理的问题。机器学习解决给定一堆数据,如何设计、学习一个模型,并能够用于预测推理。
2 机器学习的方式
-
监督式学习
-
无监督式学习
-
半监督式学习
-
强化学习
-
补充:聚类技术用于图像分割的原理
- 将图像中属于同一类的像素归为一组,进而提取不同目标的边缘
1.5 模型泛化能力:学习算法对新模式的决策能力
-
训练集&测试集
- 训练集(training set):模型训练所用的样本数据。集合中的每个样本称作训练样本。
- 测试集(test set):测试模型性能所用的样本数据。集合中的每个样本称作测试样本。 用来评估模最终模型的泛化能力。但不能作为调参、选择特征等算法相关的选择的依据
- 验证集:模型训练过程中单独留出的样本集,它可以用于调整模型的超参数和用于对模型的能力进行初步评估。
- 测试样本也是假设从样本真实分布中独立同分布(iid)采样得到的。
- 测试集和训练集是互斥的,但假设是同分布的
-
训练误差&测试误差
- 误差(error):模型(机器)给出的预测/决策输出与真值输出之间的差异。
- 训练误差(training error):模型在训练集上的误差。
- 测试误差(test error):模型在测试集上的误差。它反映了模型的泛化能力,也称作泛化误差
-
超参数:需要调参
- 提高模型的泛化能力和平衡模型的复杂度
- 上图“ 2范数正则项的”作用是:提高泛化能力,防止过拟合;前后两个1/2作用——方便求导计算
-
泛化能力(Generalization)
- 训练样本存在的问题:
- 训练样本稀疏:给定的训练样本数量是有限的(即有限采样),很难完整表达样本真实分布。
- 训练样本采样过程可能不均匀:有些区域采样密一些,有些区域采样稀疏一些。
- 一些训练样本可能带有噪声。
- 泛化能力:训练得到的模型不仅要对训练样本具有决策能力,也要对新的(训练过程中未看见)的模式具有决策能力。
- 训练样本存在的问题:
-
泛化能力低的表现:过拟合
- 过拟合(over-fitting):
- 模型训练阶段表现很好,但是在测试阶段表现很差。
- 模型过于拟合训练数据
- 过拟合(over-fitting):
-
如何提高泛化能力:不要过度训练
- 选择复杂度适合的模型(tradeoff):模型选择(选择合适的多项式阶数M,M是超参数1 决定了模型复杂度)
- 正则化(regularization) :在目标函数中加入关于参数的正则项,通过调节正则系数,降低过拟合程度
1.6 评估方法与性能指标
1 评估方法
- 留出法
- 随机划分为训练集、测试集
- 取统计值:平均值、方差、最大值等等
- K折交叉验证
- 随机分割为k个子集,单个子集作为测试集,其余k-1为训练集
- 重复k次,使得每个子集都被测试一次,取均值
- 留一验证:计算开销大;样本利用率高,结果可重复(确定性),适用于小样本
- 每次取一个样本做测试集
- 每个样本测试一次
- 等同于k折交叉验证
- K折交叉验证代码实现
def k_split(data,iris_type,num):
import random
testSet = []
testType = []
first_cur = []
second_cur = []
third_cur = []
for i in range(len(iris_type)):
if iris_type[i] == 0:
first_cur.append(i)
elif iris_type[i] == 1:
second_cur.append(i)
else:
third_cur.append(i)
match_size = int(len(first_cur)/num)
size = len(first_cur)-1
train_data = []
train_type = []
for i in range(num):
k = match_size
train_data = []
train_type = []
for j in range(match_size):
cur = random.randint(0, size)
train_data.append(data[first_cur[cur]])
train_type.append(iris_type[first_cur[cur]])
first_cur.remove(first_cur[cur])
cur = random.randint(0, size)
train_data.append(data[second_cur[cur]])
train_type.append(iris_type[second_cur[cur]])
second_cur.remove(second_cur[cur])
cur = random.randint(0, size)
train_data.append(data[third_cur[cur]])
train_type.append(iris_type[third_cur[cur]])
third_cur.remove(third_cur[cur])
size = size-1
testSet.append(train_data)
testType.append(train_type)
return np.asarray(testSet),np.asarray(testType)
2 性能指标
- 准确度accuracy:将阳性和阴性综合起来度量识别正确的程度。
- ( TP +TN)/(ALL)
- 如果阳性和阴性样本数量比例失衡,该指标很难度量识别性能。例子:阳性/阴性=5/95,模型把所有样本都判断为阴性。
- 精度(精确度)precision:预测为阳性样本的准确程度。在信息检索领域,也称作查准率。
- 召回率(Recall):也称作敏感度(sensitivity),全部阳性样本中被预测为阳性的比例。在信息检索领域也称作查全率。
- F-score:综合精度、召回率
- 精度高、同时召回率也高,说明模型性能越好。但是,在有些情况下,精度和召回率是矛盾的。例子:阳性/阴性=50/50,模型只识别出来一个样本为阳性,其余被识别为阴性。此时,precision=1/(1+0)=100%,recall=1/(1+49)=2%.
- 混淆矩阵(Confusion Matrix)
- 矩阵的列代表预测值,行代表真值。
- 矩阵中每个元素的值是根据每个测试样本的预测值和真值得到的计数统计值。
- 对角线元素的值越大,表示模型性能越好。
- 曲线度量
- 上述性能指标都是基于分类器输出是一个确定的离散标签。因此,在指标空间,性能评估只是一个点。
- 有些分类器在输出端会以数值形式表达:概率值、score值。因此,可以设置若干个关于输出值的阈值,不同的阈值可以代表不同的应用任务,得到多个评估值,从而可以在指标空间画出一条曲线,从而得到评估指标的期望表征。
- PR曲线(Precision-Recall Curve)
- 绘制方法:根据模型的预测数值,对样本进行从高到低排序,排在前面的样本是正例的可能性更高。按此顺序逐个样本作为正例进行预测(或设置阈值截断正例和负例),则每次可以计算一个召回率和精度。将这些值连成(拟合)一条曲线。
- ROC曲线(Receiver-operating-characteristic curve)
- PR曲线和ROC曲线的比较
- AUC
- 例题:计算precision racall
第二章 基于距离的分类器
2.1 MED分类器
基本概念
- 基于距离分类:把测试样本到每个类之间的距离作为决策模型,将测试样本判定为与其距离最近的类。
- 类的原型: 用来代表这个类的一个模式或者一组量,便于计算该类和测试样本之间的距离。
- 常见的几种距离度量
- 欧式距离:sqrt(∑(xi-zi)**2) = sqrt((X-Z).T * (X-Z))
- 曼哈顿距离:∑|xi-zi| = |X-Z|
- 加权欧式距离:sqrt(∑wi*(xi-zi)**2) = sqrt((X-Z).T * Iw * (X-Z))
MED分类器(最小欧式距离分类器(Minimum Euclidean Distance Classifier))
- 类的原型是均值,衡量的距离为欧式距离
- 决策边界(二类分类)
- 存在的问题:没有考虑特征变化的不同及特征之间的相关性(即若协方差方阵对角线元素不相等则每维特征的变化不同,若非对角线元素不为0则特征之间存在相关性)
- 解决方法:去除特征变化的不同及特征之间的相关性。
- 代码实现
def MED_classification(data,iris_type,t,f,flag):
data_linear,iris_type_linear=getIrisLinear(data,iris_type,flag)
train_data,train_type,test_data,test_type = hold_out_way(data_linear,iris_type_linear)
c1 = []
c2 = []
n1=0
n2=0
for i in range(len(train_data)): #均值
if train_type[i] == 1:
n1+=1
c1.append(train_data[i])
else:
n2+=1
c2.append(train_data[i])
c1 = np.asarray(c1)
c2 = np.asarray(c2)
z1 = c1.sum(axis=0)/n1
z2 = c2.sum(axis=0)/n2
test_result = []
for i in range(len(test_data)):
result = np.dot(z2-z1,test_data[i]-(z1+z2)/2)
test_result.append(np.sign(result))
test_result = np.array(test_result)
TP = 0
FN = 0
TN = 0
FP = 0
for i in range(len(test_result)):
if(test_result[i]>=0 and test_type[i]==t):
TP+=1
elif(test_result[i]>=0 and test_type[i]==f):
FN+=1
elif(test_result[i]<0 and test_type[i]==t):
FP+=1
elif(test_result[i]<0 and test_type[i]==f):
TN+=1
Recall = TP/(TP+FN)
Precision = TP/(TP+FP)
print("Recall= %f"% Recall)
print("Specify= %f"% (TN/(TN+FP)))
print("Precision= %f"% Precision)
print("F1 Score= %f"% (2*Recall*Precision/(Recall+Precision)))
#绘图
xx = [[0, 1, 2], [1, 2, 3], [0, 2, 3], [0, 1, 3]]
iris_name =['setosa','vesicolor','virginica']
iris_color = ['r','g','b']
iris_icon = ['o','x','^']
fig = plt.figure(figsize=(20, 20))
feature = ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
for i in range(4):
ax = fig.add_subplot(221 + i, projection="3d")
X = np.arange(test_data.min(axis=0)[xx[i][0]],test_data.max(axis=0)[xx[i][0]],1)
Y = np.arange(test_data.min(axis=0)[xx[i][1]],test_data.max(axis=0)[xx[i][1]],1)
X,Y = np.meshgrid(X,Y)
m1 = [z1[xx[i][0]],z1[xx[i][1]],z1[xx[i][2]]]
m2 = [z2[xx[i][0]], z2[xx[i][1]], z2[xx[i][2]]]
m1 = np.array(m1)
m2 = np.array(m2)
m = m2-m1
#将公式进行化简
Z = (np.dot(m,(m1+m2)/2)-m[0]*X-m[1]*Y)/m[2]
ax.scatter(test_data[test_result >= 0, xx[i][0]], test_data[test_result>=0, xx[i][1]], test_data[test_result >= 0, xx[i][2]],
c=iris_color[t], marker=iris_icon[t], label=iris_name[t])
ax.scatter(test_data[test_result < 0, xx[i][0]], test_data[test_result < 0, xx[i][1]],
test_data[test_result < 0, xx[i][2]],
c=iris_color[f], marker=iris_icon[f], label=iris_name[f])
ax.set_zlabel(feature[xx[i][2]])
ax.set_xlabel(feature[xx[i][0]])
ax.set_ylabel(feature[xx[i][1]])
ax.plot_surface(X,Y,Z,alpha=0.4)
plt.legend(loc=0)
plt.show()
MICD分类器(最小类内部距离分类器)
- 类的原型是均值,衡量的距离为马氏距离
- 在MED分类器的基础上经过特征白化而得
- 存在的问题: 当两个类均值一样时,偏向于方差大的类。事实上在此种情况,决策真值应该是倾向于方差小(分布紧致)的类
2.2特征白化(去除特征相关性)
- 目的:将原始特征映射到一个新的特征空间,使得在新空间中特征的协方差矩阵为单位矩阵,从而去除特征变化的不同及特征之间的相关性
- 步骤:分为两步,先去除特征之间的相关性(解耦, Decoupling) ,然后再对特征进行尺度变换(白化, Whitening),使每维特征的方差相等。
- 解耦:即实现协方差矩阵对角化,去除特征之间的相关性
求解 W1∑xW1.T=∧(对角阵)中 W1 ,经过一系列的推演可得W1=∑x的正交单位化的特征向量组成的矩阵
转换前后欧式距离保持一致,故说明W1 只是起了旋转的作用 - 白化:即将对角矩阵尺度变化成单位矩阵,使所有特征具有相同的方差
求解 W2∧W2.T=I(单位矩阵)中 W2,经过一系列的推演可得 W2 = ∧的-1/2次方
最终求得映射矩阵W=W2*W1
- 解耦:即实现协方差矩阵对角化,去除特征之间的相关性
- code
def to_whiten(data):
Ex = np.cov(data,rowvar=False)#这个一定要加……因为我们计算的是特征的协方差
a,w1 = np.linalg.eig(Ex)
w1 = np.real(w1)
module = []
for i in range(w1.shape[1]):
sum = 0
for j in range(w1.shape[0]):
sum += w1[i][j]**2
module.append(sum**0.5)
module = np.asarray(module,dtype="float64")
w1 = w1/module
a = np.real(a)
a=a**(-0.5)
w2 = np.diag(a)
w = np.dot(w2,w1.transpose())
for i in range(w.shape[0]):
for j in range(w.shape[1]):
if np.isnan(w[i][j]):
w[i][j]=0
#print(w)
return np.dot(data,w)
def show_whiten(data,iris_type):
whiten_array = to_whiten(data)
show_out_3D(whiten_array,iris_type)
def show_out_3D(data,iris_type):
xx = [[0, 1, 2], [1, 2, 3], [0, 2, 3], [0, 1, 3]]
fig = plt.figure(figsize=(20, 20))
feature = ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
for i in range(4):
ax = fig.add_subplot(221 + i, projection="3d")
ax.scatter(data[iris_type == 0, xx[i][0]], data[iris_type == 0, xx[i][1]], data[iris_type == 0, xx[i][2]],
c='r', marker='o', label='setosa')
ax.scatter(data[iris_type == 1, xx[i][0]], data[iris_type == 1, xx[i][1]], data[iris_type == 1, xx[i][2]],
c='g', marker='x',
label='vesicolor')
ax.scatter(data[iris_type == 2, xx[i][0]], data[iris_type == 2, xx[i][1]], data[iris_type == 2, xx[i][2]],
c='b', marker='^',
label='virginica')
yy = [feature[xx[i][2]],feature[xx[i][0]],feature[xx[i][1]]]
ax.set_zlabel(yy[0])
ax.set_xlabel(yy[1])
ax.set_ylabel(yy[2])
plt.legend(loc=0)
plt.show()
- 附注
- 马氏距离使非奇异线性变换不变的
- 马氏距离具有平移不变性、旋转不变性、尺度缩放不变性、不受量纲影响的特性
- 欧式距离具有平移不变性、旋转不变性
- 基于距离的决策仅考虑了每个类各自观测到的训练样本的分布情况,没有考虑类的分布等先验知识
第三章 贝叶斯决策与学习、
3.1 贝叶斯决策与MAP分类器
基础知识
- 先验概率、后验概率
- 先验概率:根据以往的经验和分析得到的概率,不依靠观测数据。
- 表示方式有:常数表达:例如,𝑝 𝐶𝑖 = 0.2;参数化解析表达:高斯分布;非参数化表达:直方图、核密度、蒙特卡洛
- 后验概率:P(Ci|x):类别输出C、输入模式x,用于分类决策(找后验概率大的那个类)
- 先验概率:根据以往的经验和分析得到的概率,不依靠观测数据。
MAP分类器:最大后验概率(Maximum posterior probability,MAP)分类器
-
将测试样本决策分类给后验概率最大的那个类
-
判别公式、决策边界(二类分类; 单维空间:通常有两条决策边界,高维空间:复杂的非线性边界)
-
决策误差(概率误差=未选择的类对应所对应的后验概率)
- 给定一个测试样本𝑥,概率误差等于未选择的类所对应的后验概率。
- 给定所有测试样本(𝑁为样本个数),分类决策产生的平均概率误差为: 样本的概率误差的均值
- 给定一个测试样本𝑥,概率误差等于未选择的类所对应的后验概率。
-
决策目标即为最小化概率误差,即分类误差最小化
3.2 MAP分类器:高斯观测概率
- 观测似然概率为一维高斯分布
- 决策边界:
- 当𝜎𝑖 = 𝜎𝑗 = σ 时,决策边界是线性的,只有一条;如果𝜇𝑖 < 𝜇𝑗,且𝑃 𝐶𝑖 < 𝑃 𝐶𝑗 ,则𝛿 < 0;说明:在方差相同的情况下,MAP决策边界偏向先验可能性较小的类,即分类器决策偏向先验概率高的类
- 当𝜎𝑖 ≠ 𝜎𝑗时,决策边界有两条(非线性边界),该决策方程是关于𝒙的二次型函数且若𝜎𝑖 > 𝜎𝑗及先验概率相等时,可知𝛿 > 0,分类器倾向选择𝐶𝑗类,即方差较小(紧致)的类
- MAP分类器偏向于先验较大可能性、分布较为紧致的类
- 决策边界:
- 观测概率:高维高斯分布
- 决策边界:超二次型
3.3 决策风险与贝叶斯分类器
- 决策风险的概念:贝叶斯决策不能排除出现错误判断的情况,由此会带来决策风险。
- 贝叶斯分类器:在MAP分类器的基础上,加入决策风险因素,得到贝叶斯分类器。贝叶斯分类器选择决策风险最小的类。
- 判别公式
- 期望损失
- 判别公式
- 朴素贝叶斯分类器: 特征之间是相互独立的
- 特征维度太高,通过即假设特征之间符合独立同分布以达到简化计算的目的
3.4最大似然估计
- 监督式学习:给定标签的训练样本
- 参数化方法:最大似然估计、贝叶斯估计
- 非参数化方法:概率密度函数形式未知,基于概率密度估 计技术,估计非参数化的概率密度表达
- 最大似然估计
- 先验概率估计
- 给定所有类的𝑁个训练样本,假设随机抽取其中一个样本属于𝐶1类的概率为𝑃,则选取到𝑁1个属于𝐶1类样本的概率为先验概率的似然函数(即目标函数)为最大化似然函数,采用对参数P求偏导。先验概率的最大似然估计就是该类训练样本出现的频率
- 观测概率估计
- 如果观测似然概率服从高斯分布,待学习的参数包含该高斯分布的均值𝝁和协方差𝚺(观测似然概率是关于单个类的条件概率)为最大化似然函数,采用对两个参数𝝁和𝚺分别求导。高斯分布均值的最答似然估计等于样本的均值,高斯分布协方差估计等于所有训练模式的协方差
3.5 最大似然的估计偏差
- 无偏估计:如果一个参数的估计量的数学期望是该参数的真值,则该 估计量称作无偏估计(unbiased estimates)
- 高斯分布均值的最大似然估计是无偏估计
- 高斯分布协方差的最大似然估计是有偏估计
- 协方差的最大似然估计偏差
- 协方差估计的修正
3.6&3.7 贝叶斯估计
- 贝叶斯估计:给定参数𝜃分布的先验概率以及训练样本,估计参数θ分布的后验概率
- 参数的后验概率
- 高斯观测似然
- 贝叶斯估计:不断学习能力
- 它允许最初的、基于少量训练样本的、不太准的估计。
- 随着训练样本的不断增加,可以串行的不断修正参数的估计值,从而达到该参数的期望真值。
- 观测似然概率的估计
3.8 KNN估计
-
贝叶斯估计等是假设概率分布为高斯分布,但如果分布未知,就需要使用无参数估计技术来实现概率密度估计。
-
常用的无参数估计技术:
- KNN估计
- 直方图估计
- 核密度估计
-
基本理论
- 一个模式𝒙 落入区域𝑅的概率
- 𝑘个样本落在区域𝑅
- 𝑝(𝒙)的近似估计
- N非常大
- 重新找回𝑃的定义,并假设在极小的区域𝑅内概率密度𝑝(𝒙)相同。 给定区域𝑅的体积记作𝑉。可以得到𝑝(𝒙)的近似估计
- N非常大
- 一个模式𝒙 落入区域𝑅的概率
-
KNN估计
- 给定x,找到其对应的区域R使其包含k个训练样本,以此计算p(x)
- 概率密度估计表达(dk(x)为 k个样本与x距离):P(x)≈k/(2Ndk(x))
- 优缺点
3.9直方图与核密度估计
直方图估计
- :
- 区域R的确定
直接将特征空间分为m个格子(bins),每个格子即为一个区域R,即区域的位置固定。平均分格子大小,所以每个格子的体积(带宽)设为V= h,即区域的大小固定。相邻格子不重叠。落到每个格子里的训练样本个数不固定,即k值不需要给定。 - 优缺点
- 优点:
- 固定区域R:减少由于噪声污染造成的估计误差。
- 不需要存储训练样本。
- 缺点:
- 固定区域R的位置:如果模式x落在相邻格子的交界区域,意味着当前格子不是以模式x为中心,导致统计和概率估计不准确。
- 固定区域R的大小:缺乏概率估计的自适应能力,导致过于尖锐或平滑。
- 优点:
核密度估计
- 原理:基于无参数概率密度估计的基本原理
- 区域R的确定
以任意待估计模式x为中心、固定带宽h,以此确定一个区域R。 - 概率密度估计
- 核函数可以是高斯分布、均匀分布、三角分布等
- 核函数可以是高斯分布、均匀分布、三角分布等
- 优缺点
- 优点
- 以待估计模式x为中心、自适应确定区域R的位置(类似KNN)。
- 使用所有训练样本,而不是基于第k 个近邻点来估计概率密度,从而克服KNN估计存在的噪声影响。
- 如果核函数是连续,则估计的概率密度函数也是连续的。
- 缺点
- 与直方图估计相比,核密度估计不提前根据训练样本估计每个格子的统计值,所以它必须要存储所有训练样本。
- 优点