特征选择

机器学习:如何选择一个合适的算法

孤者浪人 提交于 2020-01-13 10:39:16
这个问题你为什么要选择这个模型,而不是另一个? 初学者常常很少考虑到这个问题,习惯于拿起模型就用,而忘了这个模型是否适合给定的问题和数据。 1、数据是怎样生成的?可以被看作是独立同分布吗?如果是,大多数方法都可以用,如果不是,需要考虑适用于非独立同分布的算法,比如隐马尔科夫模型。 2、有多少训练数据?越复杂的模型需要越多的训练数据。 3、有多少特征?最大似然方法在特征比较多的情况下通常不会表现的很好。 4、模型的可解释性有多重要?一些方法比如决策树的可解释性很好,但是准确率可能没那么高(它们受大方差的影响)。相比之下,随机森林的准确率更高一些但是可解释性要差一些。 5、有多少异常值?一些模型对异常值会更鲁棒。 6、计算复杂度有多大(也与数据和特征的数量有关)?比如非线性SVM的计算量是数据量的三次方,如果数据有几十万,计算量会是一个问题。 7、你有设计好的必杀特征或者你想让模型去学习它们?如果是后者,神经网络模型会让你感兴趣(但是计算量会很大)。 8、特定的应用场景:你的模型符合对当前问题的假设吗?比如SVM的各种核具有旋转不变性等特点,这对于给定的应用可能是重要的。具有这种能力的模型可能会表现的更好(深度学习会试图去发现这种关系但是需要大量的数据)。 翻译自 Andreas Merentitis 的回答: How does one choose which algorithm

特征工程

ⅰ亾dé卋堺 提交于 2020-01-12 06:44:10
本文中使用sklearn中的IRIS(鸢尾花)数据集来对特征处理功能进行说明。IRIS数据集由Fisher在1936年整理,包含4个特征(Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)),特征值都为正浮点数,单位为厘米。目标值为鸢尾花的分类(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),Iris Virginica(维吉尼亚鸢尾))。导入IRIS数据集的代码如下: from sklearn.datasets import load_iris # 导入IRIS数据集 iris = load_iris() # 特征矩阵 iris.data # 目标向量 iris.target 1、特征选择 当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征: 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用; 特征与目标的相关性:这点比较显见,与目标相关性高的特征应当优先选择。 根据特征选择的形式又可以将特征选择方法分为3种: Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者选择阈值的个数,选择特征;

地理文本处理技术在高德的演进(下)

笑着哭i 提交于 2020-01-09 06:40:25
​在 【上篇】 里,我们介绍了地理文本处理技术在高德的整体演进,选取了几个通用query分析的点进行了介绍。下篇中,我们会选取几个地图搜索文本处理中特有的文本分析技术做出分析,包括城市分析,wherewhat分析,路径规划,并对未来做一下展望。 四、query分析技术演进 4.1 城市分析 在高德地图的检索场景下,从基础的地图数据索引、到在线召回、最终产品展示,均以市级别行政单位为基础粒度。一次完整的检索需求除了用户输入的query外,还会包含用户的图面城市以及用户位置城市两个城市信息。 通常,大多数的搜索意图都是在图面或者用户位置城市下,但是仍存在部分检索意图需要在其他城市中进行,准确的识别出用户请求的目标城市,是满足用户需求的第一步,也是极其重要的一步。 在query分析策略流程中,部分策略会在城市分析的多个结果下并发执行,所以在架构上,城市分析的结果需要做到少而精。同时用户位置城市,图面城市,异地城市三个城市的信息存在明显差异性,不论是先验输出置信度,还是用后验特征做选择,都存在特征不可比的问题。 在后验意图决策中,多个城市都有相关结果时,单一特征存在说服力不足的问题,如何结合先验置信度和后验的POI特征等多维度进行刻画,都是我们要考虑的问题。 原始的城市分析模块已经采用先验城市分析和后验城市选择的总体流程 但是原始的策略比较简陋,存在以下问题: 问题1

林轩田机器学习 | 机器学习技法课程笔记10 --- Random Forest

空扰寡人 提交于 2019-12-31 21:28:27
上节课我们主要介绍了Decision Tree模型。Decision Tree算法的核心是通过递归的方式,将数据集不断进行切割,得到子分支,最终形成树的结构。C&RT算法是决策树比较简单和常用的一种算法,其切割的标准是根据纯度来进行,每次切割都是为了让 分支内部纯度最大。最终,决策树不同的分支得到不同的 (即树的叶子,C&RT 算法中, 是常数)。本节课将介绍随机森林(Random Forest)算法,它是我们之前介绍的Bagging和上节课介绍的Decision Tree的结合。 目录 1. Random Forest Algorithm 2. Out-Of-Bag Estimate 3. Feature Selection 4. Random Forest in Action 5. 总结 1. Random Forest Algorithm 首先我们来复习一下之前介绍过的两个机器学习模型:Bagging和Decision Tree。 Bagging是通过bootstrap的方式,从原始的数据集D中得到新的 ;然后再使用一些 base algorithm基于每个 训练得到相应的 ;最后将所有的 通过投票uniform的形式组合成一个G,G即为我们最终得到的模型/假设。Decision Tree是通过递归形式,利用分支条件,将原始数据集D切割成一个个子树结构,长成一棵完整的树形结构

半监督学习简介与综述 —— For 2020

我与影子孤独终老i 提交于 2019-12-28 01:29:30
半监督学习提出的背景 数据是机器学习的基础。巧妇难为无米之炊,再牛x的机器学习算法,脱离了数据就是空中楼阁。 根据使用的数据样本是否具有标签,可大致将传统的机器学习方法分为 监督学习方法和无监督学习方法 。 其中,无监督学习方法使用的训练样本没有标签;监督学习方法使用的训练样本带有明确的标签。 监督学习: 训练样本集不仅包含样本,还包含这些样本对应的标签,即样本和样本标签成对出现。监督学习的目标是从训练样本中学习一个从样本到标签的有效映射,使其能够预测未知样本的标签。监督学习是机器学习中最成熟的学习方法,代表性的算法包括神经网络、支持向量机(SVM)等。 无监督学习: 只能利用训练样本的数据分布或样本间的关系将样本划分到不同的聚类簇或给出样本对应的低维结构。因此,无监督学习常被用于对样本进行 聚类或降维 ,典型的算法包括尺均值聚类和主成分分析等。 在许多实际问题中,有标签样本和无标签样本往往同时存在,且无标签样本较多,而有标签样本则相对较少。 虽然充足的有标签样本能够有效提升学习性能,但是获取样本标签往往是非常困难的,因为标记样本可能需要专家知识、特殊的设备以及大量的时间。相比于有标签样本,大量的无标签样本广泛存在且非常容易收集。但是,监督学习算法无法利用无标签样本,在有标签样本较少时,难以取得较强的泛化性能。虽然无监督学习算法能够使用无标签样本,但准确性较差。

处理分类问题常用算法(二)-----算法岗面试题

笑着哭i 提交于 2019-12-25 12:56:51
● 分层抽样的适用范围 参考回答: 分层抽样利用事先掌握的信息,充分考虑了保持样本结构和总体结构的一致性,当总体由差异明显的几部分组成的时候,适合用分层抽样。 ● LR的损失函数 参考回答: M为样本个数, 为模型对样本i的预测结果, 为样本i的真实标签。 ● LR和线性回归的区别 参考回答: 线性回归用来做预测,LR用来做分类。线性回归是来拟合函数,LR是来预测函数。线性回归用最小二乘法来计算参数,LR用最大似然估计来计算参数。线性回归更容易受到异常值的影响,而LR对异常值有较好的稳定性。 ● 生成模型和判别模型基本形式,有哪些? 参考回答: 生成式:朴素贝叶斯、HMM、Gaussians、马尔科夫随机场 判别式:LR,SVM,神经网络,CRF,Boosting 详情:支持向量机 ● 核函数的种类和应用场景。 参考回答: 线性核、多项式核、高斯核。 特征维数高选择线性核 样本数量可观、特征少选择高斯核(非线性核) 样本数量非常多选择线性核(避免造成庞大的计算量) 详情:支持向量机 ● 分类算法列一下有多少种?应用场景。 参考回答: 单一的分类方法主要包括:LR逻辑回归,SVM支持向量机,DT决策树、NB朴素贝叶斯、NN人工神经网络、K-近邻;集成学习算法:基于Bagging和Boosting算法思想,RF随机森林,GBDT,Adaboost,XGboost。 ●

机器学习:集成学习:随机森林.GBDT

一曲冷凌霜 提交于 2019-12-25 00:45:05
集成学习(Ensemble Learning) 集成学习的思想是将若干个学习器(分类器&回归器)组合之后产生一个新学习器.弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(error rate < 0.5); 集成算法的成功在于保证弱分类器的多样性(Diversity).而且集成不稳定的算法也能够得到一个比较明显的性能提升 常见的集成学习思想有: Bagging Boosting Stacking Why need Ensemble Learning? 1. 弱分类器间存在一定的差异性,这会导致分类的边界不同,也就是说可能存在错误。那么将多个弱分类器合并后,就可以得到更加合理的边界,减少整体的错误率,实现更好的效果; 2. 对于数据集过大或者过小,可以分别进行划分和有放回的操作产生不同的数据子集,然后使用数据子集训练不同的分类器,最终再合并成为一个大的分类器; 3. 如果数据的划分边界过于复杂,使用线性模型很难描述情况,那么可以训练多个模型,然后再进行模型的融合; 4. 对于多个异构的特征集的时候,很难进行融合,那么可以考虑每个数据集构建一个分类模型,然后将多个模型融合。 Bagging方法 Bagging方法又叫做自举汇聚法(Bootstrap Aggregating),思想是:在原始数据集上通过有放回的抽样的方式

特征工程

百般思念 提交于 2019-12-24 17:51:42
转至博文:http://www.cnblogs.com/jasonfreak/p/5448385.html 知乎问答:https://www.zhihu.com/question/29316149 归一化,正则化:http://blog.csdn.net/u012102306/article/details/51940147 卡方检验:http://blog.csdn.net/sunshine_in_moon/article/details/45155803 目录 1 特征工程是什么? 2 数据预处理   2.1 无量纲化     2.1.1 标准化     2.1.2 区间缩放法     2.1.3 标准化与归一化的区别   2.2 对定量特征二值化   2.3 对定性特征哑编码   2.4 缺失值计算   2.5 数据变换 3 特征选择   3.1 Filter     3.1.1 方差选择法     3.1.2 相关系数法     3.1.3 卡方检验     3.1.4 互信息法   3.2 Wrapper     3.2.1 递归特征消除法   3.3 Embedded     3.3.1 基于惩罚项的特征选择法     3.3.2 基于树模型的特征选择法 4 降维   4.1 主成分分析法(PCA)   4.2 线性判别分析法(LDA) 5 总结 6 参考资料 1

利用sklearn进行特征选择

浪尽此生 提交于 2019-12-21 09:02:19
3种特征选择 Filter 过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。 (先对数据集进行特征选择,然后再训练学习器) Wrapper 包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。 (给定学习器选择最有利于其性能、“量身定做”的特征子集) Embedded 嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。 (将特征选择过程与学习器训练过程融为一体,两者在同一个优化过程中完成,即在学习器训练过程中自动地进行了特征选择) 特征选择的功能 ①减少特征数量、降维,使模型泛化能力更强,减少过拟合。 ②增强对特征和特征值之间的理解。 一、Filter 1、删除低方差特征 Removing features with low variance 假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了,可以对其进行删除。 这种方法简单但不实用。 假设我们想要删除 超过80%的样本数都是0或都是1(假设是boolean features) 的所有特征,由于boolean features是bernoulli随机变量

特征工程:特征生成,特征选择(三)

青春壹個敷衍的年華 提交于 2019-12-19 14:00:59
转自: https://blog.csdn.net/cymy001/article/details/79169862 特征生成 特征工程中引入的新特征,需要验证它确实能提高预测得准确度,而不是加入一个无用的特征增加算法运算的复杂度。 1. 时间戳处理 时间戳属性通常需要分离成多个维度比如年、月、日、小时、分钟、秒钟。但是在很多的应用中,大量的信息是不需要的。比如在一个监督系统中,尝试利用一个’位置+时间‘的函数预测一个城市的交通故障程度,这个实例中,大部分会受到误导只通过不同的秒数去学习趋势,其实是不合理的。并且维度’年’也不能很好的给模型增加值的变化,我们可能仅仅需要小时、日、月等维度。因此在呈现时间的时候,试着保证你所提供的所有数据是你的模型所需要的。并且别忘了时区,假如你的数据源来自不同的地理数据源,别忘了利用时区将数据标准化。 2. 分解类别属性(one-hot) 一些属性是类别型而不是数值型,举一个简单的例子,由{红,绿、蓝}组成的颜色属性,最常用的方式是把每个类别属性转换成二元属性,即从{0,1}取一个值。因此基本上增加的属性等于相应数目的类别,并且对于你数据集中的每个实例,只有一个是1(其他的为0),这也就是独热(one-hot)编码方式(类似于转换成哑变量)。 如果你不了解这个编码的话,你可能会觉得分解会增加没必要的麻烦(因为编码大量的增加了数据集的维度)。相反