Press "Enter" to skip to content

机器学习——k-近邻算法、K-均值算法、PCA、异常检测算法、上限分析

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

一、K-近邻算法(KNN)概念

 

K Nearest Neighbor算法⼜叫 KNN 算法,这个算法是机器学习⾥⾯⼀个⽐较经典的算法

 

如果 ⼀个样本 在特征空间中的 k个最相似(即特征空间中最邻近)的样本 中的 ⼤多数属于某⼀个类别 ,则 该样本也属于这个类别 。

 

距离公式(欧式距离):

 

d = ∑ i = 1 n ( x 1 i − x 2 i ) 2 d = \sqrt{\sum_{i=1}^n(x_{1i}- x_{2i})^2} ∑ i = 1 n ​ ( x 1 i ​ − x 2 i ​ ) 2 ​

 

from sklearn.neighbors import KNeighborsClassifier
estimator = KNeighborsClassifier(n_neighbors=1)
# 使⽤fit⽅法进⾏训练
estimator.fit(x, y)
estimator.predict([[1]])

 

二、K-均值算法(K Means)

 

K-均值算法是一种 聚类算法 ,同时也是 非监督学习 的算法。它首先 随机生成几个聚类中心 ,然后在 每次递归 时 实现簇分配 (通过聚类中心与点的最近距离) 和移动聚类中心 (该簇所有点的平均值)

 

对于 开始随机生成的聚类中心 而言,我们一般会 随机选择样本 里面的 几个数据 来 当作聚类中心。

 

我们还可能遇到 局部最优 的情况,解决的方式是 多运行几次K-均值算法 并 记录每次 的 cost函数值 ,最终选择 最小的cost值的那组θ

 

如何正确的选择聚类的数量K?

 

我们可以通过 肘部法则 来 手动 的选择 聚类数量K ,不过它 并不是每次都可以成功的运行 ,所以最终我们大多数还是通过 经验和其实际需求来选择K的大小

 

三、主成分分析(Principal Component Analysis)

 

PCA主要完成的工作是它会 找到一个低维度 ,然后再将 数据投影到该维度上面 ,以便 最小化所有样本 到 该低维度的投影误差的平方 ,最终达到降维的效果。

 

而 降维 可以使提高算法的 运算速度 和到达 压缩数据 的目的

 

不过在进行 PCA 之前一般是要 先 进行 均值归一化和特征规范化

 

若要使用 PCA 进行 降维 也是在 训练集上运行 , 不可 在 交叉验证集或测试集上运行

 

为了 选择 压缩后的 维度K ,我们应该要求 方差保留的百分比大于等于0.99

 

一般我们使用 正则化 来解决 过拟合情况 ,而 不用PCA ,因为它 省略掉了一些关键的信息 ,如y

 

四、异常检测算法(Anomaly detection)

 

异常检测算法是指通过 对数据建立概率模型 来 识别数据中的“异常点”

 

若 异常样本多 则选择 异常检测算法 ;若 异常样本 和 正常样本 都 很多 则选择 监督学习算法

 

五、上限分析-ceiling analysis

 

上限分析一般存在于 流水线 ,它的目的是 为了分析出该流水线中哪一个模块更值得我们花更多的精力

 

首先关注这个机器学习流程中的第一个模块文字检测,然后人为地告诉算法每一个测试样本中什幺地方出现了文字,即100%正确地检测出图片中的文字信息。然后下来的几个模块也就是如法炮制。 所以进行上限分析的一个好处是知道了如果对每一个模块进行改善 它们各自的上升空间是多大。

 

例如上图,我们应该把更多的精力放在 文本检测 和和 字母识别 上面,而不应该是放在字母分割上面

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。