特征选择

K近邻法(KNN)原理小结

不想你离开。 提交于 2020-04-01 06:10:06
K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用。比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出了。这里就运用了KNN的思想。KNN方法既可以做分类,也可以做回归,这点和决策树算法相同。     KNN做回归和分类的主要区别在于最后做预测时候的决策方式不同。KNN做分类预测时,一般是选择多数表决法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。而KNN做回归时,一般是选择平均法,即最近的K个样本的样本输出的平均值作为回归预测值。由于两者区别不大,虽然本文主要是讲解KNN的分类方法,但思想对KNN的回归方法也适用。由于scikit-learn里只使用了蛮力实现(brute-force),KD树实现(KDTree)和球树(BallTree)实现,本文只讨论这几种算法的实现原理。其余的实现方法比如BBF树,MVP树等,在这里不做讨论。 1. KNN算法三要素     KNN算法我们主要要考虑三个重要的要素,对于固定的训练集,只要这三点确定了,算法的预测方式也就决定了。这三个最终的要素是k值的选取,距离度量的方式和分类决策规则。     对于分类决策规则,一般都是使用前面提到的多数表决法。所以我们重点是关注与k值的选择和距离的度量方式。     对于k值的选择

关于数据

a 夏天 提交于 2020-03-25 21:01:28
数据是一切的根本。 一.获取数据 1.可以使用爬虫scrapy获取数据,但是更一般的是自家数据库中的数据 2.可以获得公用数据集: http://www.kaggle.com/datasets 等网站 3.可以自己创建虚拟数据 4.注意:1)数据量尽可能多、利于训练,(2)数据内容尽可能有效,能对预测产生作用(有用的特征),(3)数据尽可能要均匀(分类),即全面 5.注意:无论是数据获取还是处理,都要注意多做备份,有能力每步都要备份,数据的价值难以想象。 二.原始数据 1.数据的本质是信息的具体化,原始数据有很多种:数字、文字、图片....我们可以从这些数据中看出里面所包含的信息。 2.计算机接收进行处理的是数字,根据经验,把原始数据转换为数字是比较容易的(比如把图片转化为矩阵的形式), 3.我们得到的原始数据可能有这样那样的问题,所以要进行下一步的数据清洗 ------原始数据是杂乱的,含有不完整、重复、错误的数据,因此要先进行数据清洗------- 三.数据清洗(Data cleaning) 1.数据清洗是为了对数据进行重新审查和校验,目的在于删除重复信息、纠正存在的错误,并提供数据一致性 2.不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类 (1)缺失数据(数据为空Null):如果缺失数据的记录占比较小,可以直接剔除(主要包括删除样本或删除特征两种

机器学习中的特征选择filter

我怕爱的太早我们不能终老 提交于 2020-03-20 12:23:49
来源地址: https://www.cnblogs.com/bjwu/p/9103002.html Filter-移除低均方差的特征 代码: from sklearn.feature_selection import VarianceThreshold X = [[0, 0, 1], [0, 1, 0], [1, 0, 0], [0, 1, 1], [0, 1, 0], [0, 1, 1]] sel = VarianceThreshold(threshold=(0.2) sel.fit_transform(X) 返回值过滤了方差小于0.2的特征, 均 方差信息为: Filter-单变量特征选择 SelectKBest 移除那些除了评分最高的 K 个特征之外的所有特征 代码: from sklearn.datasets import load_iris from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import chi2 iris = load_iris() X, y = iris.data, iris.target X.shape X_new = SelectKBest(chi2, k=2).fit_transform(X, y) X_new.shape   

3.机器学习之决策树详解

半腔热情 提交于 2020-03-16 13:47:41
本篇博客主要介绍机器学习中的决策树模型。决策树算法在机器学习中算是很经典的一个算法系列。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。决策树模型是一类算法的集合,在数据挖掘十大算法中,具体的决策树算法占有两席位置,即C4.5和CART算法。 决策树分类的思想类似于找对象。现想象一个女孩的母亲要给这个女孩介绍男朋友,于是有了下面的对话: 女儿:多大年纪了? 母亲:26。 女儿:长的帅不帅? 母亲:挺帅的。女儿:收入高不? 母亲:不算很高,中等情况。 女儿:是公务员不? 母亲:是,在税务局上班呢。 女儿:那好,我去见见。 这个女孩的决策过程就是典型的分类树决策。相当于通过年龄、长相、收入和是否公务员对将男人分为两个类别:见和不见。假设这个女孩对男人的要求是:30岁以下、长相中等以上并且是高收入者或中等以上收入的公务员,那么这个可以用下图表示女孩的决策逻辑:  决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。 决策树是在已知各种情况发生概率((各个样本数据出现中

FaceNet

萝らか妹 提交于 2020-03-12 04:52:58
论文:FaceNet: A Unified Embedding for Face Recognition and Clustering 0 摘要 FaceNet,直接把输入图像变成欧式空间中的特征向量,两个特征向量间的欧式距离就可以用来衡量两者之间的相似度。可以用在人脸验证、识别和聚类任务中。 本文提出了三元组的概念,构建anchor - matching sample -unmatching sample进行模型的训练。 FaceNet在LFW和YTF数据集上取得了很好的效果,远超当时的其他算法。 1 简介 本文提出的思想是,直接通过CNN学习一副输入人脸图像的欧式空间特征,那么两幅图像特征向量间的欧式距离越小,表示两幅图像是同一个人的可能性越大。一旦有了这个人脸图像特征提取模型,那么人脸验证就变成了两幅图像相似度和指定阈值比较的问题;人脸识别就变成了特征向量集的KNN分类问题;人脸聚类就可以通过对人脸特征集进行kmeans聚类完成。 前面的算法都是用已知身份的人脸图像集训练一个分类模型,然后取中间某个层的输出作为人脸的特征表示。这种方法的弊端是:不够直接和效率低下。不够直接是指希望学习的指定层的特征可以很好的泛化到未知人脸上,效率低是指一般学习的特征维度很高(大于1000维)。有的方法对提取的特征进行PCA降维处理,但这只是一个线性变换,可以通过一个网络层很简单的实现出来。

核函数及SVM核函数的选择

元气小坏坏 提交于 2020-03-07 02:12:59
核函数: 当数据非线性可分时,可将数据从低维空间映射到高维空间,使数据在高维空间线性可分,之后在优化时需要计算内积,复杂度很高。而核函数准确地说是一种核技巧,能够简便的计算内积,从而能够简便地解决非线性问题。 SVM核函数的选择: 吴恩达老师老师的建议: 1、当样本特征数目远远大于样本数量时,特征维度已经够高,这个时候往往数据线性可分,可考虑使用线性核函数。 2、当样本数量一般,样本特征维度也不高时,可以考虑高斯核 3、当样本数量较多,样本特征较少时,可考虑人工增加一些特征,使样本线性可分,然后再考虑使用线性核函数的SVM或者LR. 来源: CSDN 作者: 鸡汤本汤 链接: https://blog.csdn.net/YangTinTin/article/details/104704991

特征词选择算法对文本分类准确率的影响(四)

醉酒当歌 提交于 2020-03-01 01:14:52
本小节,我们仅考虑一种特征词选择框架IG(infomation Gain)。 采用两种概率建模 第一种我们称之为经典的概率建模。也就是被公认采纳的那一种。 也就是说该种方法认为 每个类别的概率可以根据训练语料中两个类别的文章数目来估计,由于我的实验中两类数目相等所以各为二分之一。 文章是连接词语与类别的桥梁。因此在计算 TF(t,C)的时候,有可以根据文档是由多变量伯努利分布生成(一),还是多项式分布生成(二)。有两种概率计算方式。在(一)的情况下,仅考虑一个词在文章中是否出现,出现则为1,否则则为0。在(二)的情况下不仅要考虑一个词在文章中是否出现,而且要考虑其出现的次数。 下面给出情况一和情况二下的实验结果: 情况一: 情况二 对比后发现,取得最高准确率的值和维度都是一样的。不仅如此, 其实在两种情况下计算的各个文档规模,在各个特征维度上的5次交叉验证的平均准确率也是惊人的一致 (大家不要怀疑我伪造数据哈,没有这个必要) 两种方法计算的平均准确率如下(图片只显示了部分,最后我会将准确率数据打包上传) 来源: https://www.cnblogs.com/finallyliuyu/archive/2010/08/30/1812924.html

特征词选择算法对文本分类准确率的影响(五)

南笙酒味 提交于 2020-03-01 01:13:25
上一节(也就是在四中)我们谈了在经典概率框架下,采用两种方法估算p(t|ci),得出的结论是这两种方法对最后准确率没有显著影响。下面我们在给出一个菜鸟的naiva概率框架。 该框架 用概率归一化词袋子中所有词在训练文档集中出现的情 况。即 p(t) 由词袋子模型中的统计信息直接归一化计算,并假设 P(C1)=P(c2)=1/2 P(C|t) 也直接计算。 比如词袋子中有三个词 {[家务: class1:(1,3)(2,1) class2:(4,1)][俄罗斯: class2:(2,3),(4,1),(5,1)][健康: class1:(2,4),(3,2)]} 那么p(t=家务)=(3+1+1)/[(3+1+1)+(3+1+1)+(2+4)] 注意:(四)中的经典概率模型求p(t)是通过p(t|c)计算的,它认为只有p(t|c)可以通过当前语料库直接得出,其他的概率都要通过此概率推导得出. 在我们的假设中p(c|t)也直接计算。再举个例子p(class=class1|t=“家务”)=(3+1)/(3+1+1) 那么我这个菜鸟这么假设的概率模型合理吗? 会不会导致准确率降低。那么请实验结果来说话吧。 同样我们根据是否计算词在文章中出现的重数,又分为两个情况。 情况一不考率重数;情况二,考虑重数。(上边为情况一的实验结果,下边为情况二的结果) 种概率框架下,从最后的实验结果(平均准确率

机器学习 特征工程 Python sklearn

天涯浪子 提交于 2020-02-22 19:42:16
机器学习 特征工程 Python sklearn 本博客代码: Github_GDUT-Rp 1 特征工程 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。 特征处理是特征工程的核心部分,sklearn提供了较为完整的特征处理方法,包括数据预处理,特征选择,降维等。首次接触到sklearn,通常会被其丰富且方便的算法模型库吸引,但是这里的介绍的特征处理库也十分强大! 2 数据预处理 通过特征提取,我们能得到未经处理的特征,这时的特征可能有以下问题: 不属于同一量纲:即特征的规格不一样,不能够放在一起比较。无量纲化可以解决这一问题。 信息冗余:对于某些定量特征,其包含的有效信息为区间划分,例如学习成绩,若只关心“及格”或“不及格”,那么需要将定量的考分,转化为“1”和“0”表示及格和未分类。二值化可以解决这一问题。 定性特征不能直接使用:某些机器学习算法和模型只能接受定量特征的输入,那么需要将定性特征转换为定量特征。最简单的方式是为每一种定性值,但是这种方式过于灵活,增加了调参的工作。通常使用哑编码的方式将定性特征为定量特征:假设有N种定性值,则将这一个特征扩展为N种特征,当原始特征值为第i种定性值时,第i个扩展特征赋值为1,其他扩展特征赋值为0.哑编码的方式相比直接指定的方式,不用增加调参的工作,对于线性模型来说,使用哑编码后的特征可达到非线性的效果。 存在缺失值

05_特征选择

狂风中的少年 提交于 2020-02-18 15:16:46
特征选择是选择相关特征的子集用于机器学习模型构建的过程,数据越多,结果就越好,这并不总是事实。包含不相关的特征(对预测没有帮助的特征)和冗余的特征(与他人无关的特征)只会使学习过程不堪重负,容易导致过度拟合。 特征选择的好处: 不同的特征子集为不同的算法提供了最佳性能。所以它和机器学习模型训练不是一个单独的过程。因此,如果我们要为线性模型选择特征,最好使用针对这些模型的选择程序,如回归系数重要性或Lasso。如果我们要为树选择特性,最好使用树派生的重要性。 简化模型使得容易解释 减少训练时间,减少计算消耗 减少数据收集的时间 避免维度过高 提升泛化性能,降低过拟合的风险 1.Filter Method 过滤方法根据性能度量选择特征,而不考虑以后使用的ML算法。单变量滤波器根据一定的准则对单个特征进行评价和排序,而多变量滤波器则对整个特征空间进行评价。 特性: 基于模型选择变量,使用尽量少的计算资源,会使模型性能下降的特征。下列这些滤波方法都没有考虑特征之间的相互作用,可能会降低我们的预测能力。我个人只使用方差和相关性来过滤一些绝对不必要的特性。使用卡方检验或单变量选择方法时,需要记住的一点是,在非常大的数据集中,大多数特征将显示一个小的p_value,因此看起来它们具有很高的预测性。这实际上是样本量的影响。因此,在选择使用这些过程的功能时应该谨慎。一个非常小的p