精华内容
下载资源
问答
  • 什么是算法算法哪些特征
    万次阅读
    2019-11-11 07:44:45

    什么是算法,算法有哪些特征?

    算法定义:为解决一个问题而采取的方法和步骤,称为“算法”。

    算法五大特征:

    ①有穷性

    ②确定性

    ③有零个或多个输入

    ④有一个或多个输出

    ⑤有效性

    更多相关内容
  • 遗传算法是一种基于自然选择的优化问题的技术。 在这篇文章中,我将展示如何使用遗传算法进行特征选择。 虽然 scikit-learn 中有许多...我们面临的问题是确定哪些特征与问题相关。 我们找寻目标是具有高质量的特征

    遗传算法是一种基于自然选择的优化问题的技术。 在这篇文章中,我将展示如何使用遗传算法进行特征选择。

    虽然 scikit-learn 中有许多众所周知的特征选择方法,但特征选择方法还有很多,并且远远超出了scikit-learn 提供的方法。特征选择是机器学习的关键方面之一。 但是因为技术的快速发展,现在是信息大爆炸的时代,有多余的可用数据,因此通常会出现多余的特征。许多特征都是多余的。 它们会为模型增加噪音,并使模型解释出现问题。

    我们面临的问题是确定哪些特征与问题相关。 我们找寻目标是具有高质量的特征。

    遗传算法

    本篇文章使用了“sklearn-genetic”包:

    该软件包与现有的sklearn模型兼容,并为遗传算法的特征选择提供了大量的功能。

    在这篇文章中,我使用遗传算法进行特征选择。但是,遗传算法也可以用于超参数优化。因为这些步骤非常简单和一般化,所以可以适用于许多不同的领域。

    特征选择

    选择特性是一个NP-Hard问题(所有NP问题都能在多项式时间复杂度内归遇到的问题)。给定一组特征,最优配置是这些特征的集合或子集。这种方法是离散选择。在可能性排列的情况下,确定最优特征集的成本是非常高的。

    遗传算法使用一种基于进化的方法来确定最优集。对于特征选择,第一步是基于可能特征的子集生成一个总体(种群)。

    从这个种群中,使用目标任务的预测模型对子集进行评估。一旦确定了种群的每个成员,就会进行竞赛以确定哪些子集将延续到下一代。下一代由竞赛获胜者组成并进行交叉(用其他获胜者的特征更新获胜特征集)和变异(随机引入或删除一些特征)。

    大致的步骤如下:

    1. 产生初始种群
    2. 对种群中的每个成员进行评分
    3. 通过竞赛选择子集进行繁殖
    4. 选择要传递的遗传物质(特征)
    5. 应用突变
    6. 以上步骤重复多次,每一次成为一代(generation)

    该算法运行一定数量的代之后,群体的最优成员就是选定的特征。

    实际操作

    实验基于 UCI 乳腺癌数据集,其中包含 569 个实例和 30 个特征。 使用这个数据集,我测试了几个分类器的所有特征、遗传算法的特征子集以及使用卡方检验的五个特征进行比较。

    下面是用于使用遗传算法选择最多五个特征的代码。

    from sklearn.datasets import load_breast_cancer
    from genetic_selection import GeneticSelectionCV
    from sklearn.tree import DecisionTreeClassifier
    import pandas as pd
    import numpy as npdata = load_breast_cancer()
    df = pd.DataFrame(data.data, columns=data.feature_names)
    df['target'] = data.target
    X = df.drop(['target'], axis=1)
    y = df['target'].astype(float)estimator = DecisionTreeClassifier()
    model = GeneticSelectionCV(
        estimator, cv=5, verbose=0,
        scoring="accuracy", max_features=5,
        n_population=100, crossover_proba=0.5,
        mutation_proba=0.2, n_generations=50,
        crossover_independent_proba=0.5,
        mutation_independent_proba=0.04,
        tournament_size=3, n_gen_no_change=10,
        caching=True, n_jobs=-1)
    model = model.fit(X, y)
    print('Features:', X.columns[model.support_])
    

    GeneticSelectionCV

    初始种群(大小为“n_population”)是从特征集的样本空间中随机生成的。 这些集合的范围受参数“max_features”的限制,该参数设置每个特征子集的最大大小。

    对于初始种群的每个成员,使用目标度量来衡量一个分数。 此度量是指定的估算器的性能。

    进行竞赛选择以确定哪些成员将继续到下一代。 竞赛中的成员数量由“tournament_size”设置。 竞赛规模是根据评分指标从总体中选出的几个成员相互竞争。获胜者被选为下一代的父母。

    参加竞赛的成员人数应该很少。 当值比较大时,通常选择当前最好的成员。 此行为不会导致选择任何较弱的成员。 对于较弱的成员,虽然提供了暂时的性能提升,但最终这会导致整体性能的降低,因为较弱的选项没有得到改进的机会。

    自然选择

    在自然选择中,遗传信息存储在染色体中。在繁殖过程中一些遗传物质从父母传给孩子。然后孩子包含来自父母双方的遗传物质。此属性用参数“crossover_proba”表示。指定的概率表示从一个生成交叉到下一个生成的机会。还有一个参数“crossover_independent_proba”,它是一个特征将交叉到子节点的概率。

    进化的一个关键方面是突变。变异降低了搜索陷入局部最优被卡住的风险。在每一代中除了交叉之外,还添加了一个随机突变。突变发生的概率由参数“mutation_prob”设置。此参数与“mutation_independent_proba”结合,这是向特征集添加特征的机会。

    值得注意的是,将此概率设置得太高会将算法转换为随机选择过程。因此将此值设置在相对较低的水平。在每一代中随机引入特征可以有效地作为遗传过程的正则化。

    此处使用的遗传搜索算法还有一个“n_gen_no_change”参数,用于监控种群中最好的成员是否在几代中没有发生变化。在这种情况下,搜索是否找到了一个最佳选择。是否考虑增加突变或交叉概率以进一步改变选择。

    结果

    遗传与卡方特征选择的结果如下所示。还列出了使用所有特性的基准性能。结果来自交叉验证,使用准确性作为度量标准,使用的特征数量在括号中显示。

    虽然这些结果不是决定性的,但它们显示了遗传算法的好处。 模型性能基于遗传算法的特征子集,该子集始终优于基线模型和卡方特征子集。 逻辑回归模型是一个例外,其结果仍然具有可比性。

    此外,产生的最佳特征子集小于五个特征的最大值。 具有较少特征的模型最终比较大的模型更受青睐,因为它们更简单且更易于解释。

    总结

    遗传算法非常通用,适用于广泛的场景。

    这篇文章探讨了如何使用 sklearn-genetic 包将遗传算法用于特征选择。 这些算法也已被证明在超参数搜索和生成式设计中是有效的。

    虽然不像 sklearn 中现成的方法那么传统,但遗传算法提供了一种独特而实用的特征选择方法。 这些算法优化的方式与大多数其他特征选择方法有很大不同。 该过程基于纯自然选择方法。

    我鼓励数据科学家花时间在他们的工作中理解和实施遗传算法。

    作者:Zachary Warnes

    展开全文
  • 算法的主要特征

    万次阅读 2019-04-18 20:11:11
    一个算法应该具有以下五个重要的特征: 1,有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止; 2,确切性(Definiteness):算法的每一步骤必须有确切的定义; 3,输入项(Input):一个算法...

    一个算法应该具有以下五个重要的特征:

    1,有穷性(Finiteness):算法的有穷性是指算法必须能在执行有限个步骤之后终止;

    2,确切性(Definiteness):算法的每一步骤必须有确切的定义;

    3,输入项(Input):一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

    4,输出项(Output):一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

    5,可行性(Effectiveness):算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

    下面的是扩展

    算法要素:
    一,数据对象的运算和操作:计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
    1,算术运算:加减乘除等运算
    2,逻辑运算:或、且、非等运算
    3,关系运算:大于、小于、等于、不等于等运算
    4,数据传输:输入、输出、赋值等运算
    二,算法的控制结构:一个算法的功能结构不仅取决于所选用的操作,而且还与各操作之间的执行顺序有关。

    展开全文
  • 判断加密算法特征----AES算法

    千次阅读 2022-01-16 10:43:14
    对称加密算法特征 对称加密算法的加密密钥和解密密钥完全相同,其安全性主要依赖于两个因素: 1.加密算法足够强,基于密文本身去解密信息不可能,至少在有限时间内不可能 2.加密的安全性依赖于密钥的秘密性,而不是...

    前言

    1.总感觉不去分析加密算法流程而直接判断加密算法有点不可靠,所以这篇打算结合加密算法和反汇编代码分析
    2.加密算法种类繁多,暂时打算只针对每种加密模式分析一种加密算法,233
    

    对称加密算法

    对称加密算法特征

    对称加密算法的加密密钥和解密密钥完全相同,其安全性主要依赖于两个因素:
    1.加密算法足够强,基于密文本身去解密信息不可能,至少在有限时间内不可能
    2.加密的安全性依赖于密钥的秘密性,而不是算法的保密性

    和非对称加密算法比较

    非对称加密算法(如摘要算法)是不可逆的,目的是对信息的一致性和完整性进行验证
    对称加密算法是可逆的,目的是保护隐私信息不被泄露

    AES加密算法

    算法描述
    AES算法根据密钥的长度分为以下三种
    
    AES密钥长度(Nk个32位双字)分组长度(Nb个32位双字)轮数(Nr)
    AES-1284410
    AES-1926412
    AES-2568414
    从安全性来看,AES-256安全性最高
    从性能来看,AES-128性能最高
    
    加密流程

    加密流程大致为
    在这里插入图片描述
    轮函数又由4部分组成

    void SubBytes(); //字节代替
    void ShiftRows(); //行移位
    void MixColumns(); //列混淆
    void AddRoundKey(); //加轮密钥
    
    SubBytes()函数

    也就是将输入的密文(处理成16位,相当于一个4x4的矩阵)在一个S-box中进行替换
    反汇编代码中跟踪出来的操作如下
    在这里插入图片描述
    可见S-box在004082DC到004083DB处共256字节,这可以作为判断程序是否为AES加密以及编写注册机的参考位置

    shiftRows()函数
    行移位函数
    

    在这里插入图片描述

    MixColumns()函数
    列混淆函数,可以看作是输入矩阵和一个修补矩阵相乘
    

    在这里插入图片描述

    AddRoundKey()函数

    加轮密钥函数,其操作是将状态中的函数和轮密钥通过简单的异或运算相加,这也是唯一一个需要用到密钥的地方

    在这里插入图片描述

    小小结

    虽然看起来每次运算量都很大,但是如果将除最后一轮运算以外的轮次合并,不难发现
    

    请添加图片描述
    请添加图片描述

    总的来说,每一轮运算也只是四次查表和3次异或运算而已
    下面进行实列分析
    

    AES反汇编实列分析

    首先,先是aes函数的初始化等操作的函数的查看

    extern BOOL  aes_init(aes *,int,int,char *,char *);
    extern void  aes_getreg(aes *,char *);
    extern mr_unsign32 aes_encrypt(aes *,char *);
    extern mr_unsign32 aes_decrypt(aes *,char *);
    extern void  aes_reset(aes *,int,char *);
    extern void  aes_end(aes *);
    

    由上面的加密算法分析可知,写出注册机最重要的是
    1.通过加密轮次确定加密的函数是哪种AES加密(至于判断是否为AES加密可以通过分析软件或者反汇编代码是否频繁查表替换操作以及对输入密钥是否有长度要求或者对其进行了密钥扩展操作
    2.AES加密使用的是哪种模式

    代码

    在这里插入图片描述之所以判断call 004012F0处为MD5初始化是因为跟进后可见在这里插入图片描述
    在之前文章说过这是判断MD5加密的特征之一
    然后由MD5加密的特性可知,会产生一个128位的散列
    再由AES_init函数(压栈顺序和对应参数顺序相反),可以跟踪到AES密钥,得到
    在这里插入图片描述和原代码szkey数组一致
    在这里插入图片描述

    分析结束

    小结

    1.AES加密最重要的特征还是它的S-box,反汇编代码中很明显,而且容易定位
    2.没有根据代码加密轮数判断属于哪种AES加密是由于需要到处跟进,有点混乱
    3.写这种博客工作量还是挺大的233,所以很慢
    4.都看到这里了不给个三连吗?0.0

    展开全文
  • 特征匹配算法

    千次阅读 2020-06-03 16:51:21
    看论文《特征匹配算法研究及其在目标跟踪上的应用》,感谢! 特征匹配算法 目前 SIFT 算法和 ORB 算法获得了研究者的青睐,但是因为 SIFT 算法是对图像进行全局的特征点检测耗时较长,造成算法的运行速度慢,达不到...
  • 特征选择算法综述

    千次阅读 2017-09-01 15:23:08
    特征选择(feature selection)作为一种常见的降维方法是模式识别的研究热点之一。 它是指从原始特征集中选择使某种评估标准最优的特征...在机器学习领域中,特征选择被认为是跟学习算法紧密联系的一个问题,可表述为:
  • 图像特征点匹配算法汇总

    千次阅读 2022-01-15 22:53:26
    SIFT 概述:算法大致流程为: 建立不同分辨率的图像金字塔以及不同尺度的高斯差分金字塔,经DoG算法得到每一族内大致特征点; 将特征点进行泰勒展开求得精确特征点,该步骤可以求得精确的图像尺度,该尺度下特征点...
  • 数据结构与算法的关系:紧密相连,缺一不可。 算法的定义:        解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条...算法具有5个基本特征:输入、输出...
  • 遗传算法特征选择的python实现

    千次阅读 热门讨论 2019-07-02 16:43:39
    1 遗传算法特征选取基本原理 2. 适应度函数选择和环境要求 (1)适应度函数选择 (2)依赖的第三方工具包 3. python实现 1 遗传算法特征选取基本原理 遗传算法特征选择的基本原理是用遗传算法寻找一个最优的二...
  • 特征选择常用算法

    万次阅读 2018-07-20 09:56:16
    转载自:... 1 综述   (1) 什么是特征选择 特征选择 ( Feature Selection )也称特征子集选择( Feature Subset Selection , FSS ) ,或属性选择( Attribute Selection )...
  • 语音识别算法哪些本文列举了几种不同的语音识别算法。第一种:基于动态时间规整(Dynamic Time Warping)的算法在连续语音识别中仍然是主流方法。该方法的运算量较大,但技术上较简单,识别正确率高。在小词汇量、...
  • 模式识别之特征提取算法

    千次阅读 2019-06-03 10:50:07
    说明:此处暂时简单介绍下各种特征提取算法,后续完善。 前言:模式识别中进行匹配识别或者分类器分类识别时,判断的依据就是图像特征。用提取的特征表示整幅图像内容,根据特征匹配或者分类图像目标。常见的特征...
  • PSO算法特征选择MATLAB实现(单目标)

    千次阅读 多人点赞 2018-01-22 11:00:34
    PSO进行进行特征选择其主要思想是:将子集的选择看作是一个搜索寻优问题(wrapper方法),生成不同的组合,对组合进行评价,再与其他的组合进行比较。这样就将子集的选择看作是一个是一个优化问题。 简单PSO MATLAB...
  • 用遗传算法进行特征选择

    万次阅读 多人点赞 2019-01-20 21:57:27
    文章目录一、问题举例二、算法描述1、基于类内类间距离的可分性判据2、遗传算法(Genetic Algorithm)1) 初始化种群2)计算当前种群 M(t)中每条染色体的适应度值 f(m)3)基于适应度值的选择4)交叉5)变异6)...
  • 特征检测与特征匹配算法简介

    万次阅读 2019-05-20 13:22:17
    特征检测 opencv可以检测图像的主要特征,然后提取这些特征,使其成为图像描述符。 ...大多数特征检测算法都会涉及图像的角点、边和斑点的识别。 Harris可用于识别角点。此函数可以很好的检...
  • 基于信息论的特征选择算法综述

    千次阅读 2019-09-03 17:31:45
    特征选择的目标是从样本数据集的原始特征F中寻找一个子集S,使得它包含尽可能多的类区分信息,即包含更多与类别C有关的知识,同时又使得子集内部的冗余程度尽量小。定义信息度量函数J(f),其目的是在原始特征集F内...
  • 特征选择之遗传算法

    万次阅读 2017-05-22 12:21:54
    基于遗传算法特征选择是一种wrapper方法,该算法是以支持向量机分类器的识别率作为特征选择的可分性判断依据。在遗传算法中,对所选择的特征用[0,1]二进制串来初始化,由于二进制数{0,1}是等概率出现的,所以最优...
  • Surf算法特征点检测与匹配

    万次阅读 多人点赞 2016-09-20 23:53:54
    Speeded Up Robust Features(SURF,加速稳健特征),是一种稳健的局部特征点检测和描述算法。最初由Herbert Bay发表在2006年的欧洲计算机视觉国际会议(Europen Conference on Computer Vision,ECCV)上,并在2008...
  • 我们前面已经介绍过几个特征检测器,它们的效果都很好,特别是SIFT和SURF算法,但是从实时处理的角度来看,效率还是太低了。为了解决这个问题,Edward Rosten和Tom Drummond在2006年提出了FAST算法,并在2010年对其...
  • 实际上,大部分的数据挖掘/算法工程师在日常的工作流程中,80%以上的时间用于研究特征工程,而他们在算法设计和模型优化上分配的时间不到20%。特征工程为何如此重要,以至于数据挖掘/算法工程师甘愿把如此之多时间都...
  • 图像特征点检测算法汇总

    千次阅读 2022-01-17 20:53:10
    FAST Harris 概述:寻找图像中灰度沿任意方向变化都非常大的点,并将其转换为根据梯度矩阵M特征值进行判断。 参考:4.harris corner detection(角点检测)_哔哩哔哩_bilibili
  • 本文针对图像特征匹配算法—SIFT算法介绍了其算法原理,并贴出了代码。
  • 作者:FedAI联邦学习 ...来源:知乎 著作权归作者所有。商业转载请联系作者获得...而算法层面,理论上是无穷种的,同一个需求,根据场景可能会有非常多的差异变化,从而实现路径会有很多,如人脸识别。人脸识别算法主要包.
  • 人工智能算法哪些

    千次阅读 2021-03-18 11:54:26
    常用的算法有: (1)一分类支持向量机(One-class SVM):适用于数据特征较多的场景。 (2)基于PCA的异常检测(PCA-based Anomaly Detection):适用于训练时间短的场景。 常见的迁移学习类算法包含:归纳式迁移...
  • 【图像处理算法】SIFT特征提取

    千次阅读 2020-02-16 16:06:02
    SIFT特征提取 本文主要分享SIFT特征提取算法的学习笔记,欢迎阅读
  • 特征的高维数据,然而并不是所有特征都是重要 的。许多特征甚至是不相关或冗余的,这不仅使数 据处理过程变得困难,还降低了学习算法的效率, 如分类算法等学习算法的性能[1]。特征选择旨在利 用一种选择...
  • 常见的几种特征提取算法

    万次阅读 2019-07-01 09:08:00
    常见的几种特征提取算法1. LBP算法(Local Binary Patterns,局部二值模式)2.HOG特征提取算法(Histogram of Oriented Gradient)3.SIFT算子(Scale-invariant feature transform,尺度不变特征变换) 1. LBP算法...
  • 图像特征匹配:选取一些图像,检测它们的主要特征,并通过单应性(homography)来检测这些图像是否存在于另一个图像中。 常用的opencv特征检测和提取方法 Harris: 该算法用于检测角点 SIFT: 该算法用于检测...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 623,821
精华内容 249,528
关键字:

属于算法特征的是哪些