精华内容
下载资源
问答
  • 页面加载时,隐藏div,当执行某些方法后,显示div 情景: 在做绩效考核系统时,需要按照步骤显示 div 并向其传递数据,很奇怪的是,在 div 中使用了 style=" display : none " 样式时,当使用 $("#id").show(); 显示 ...

    页面加载时,隐藏div,当执行某些方法后,显示div

    情景: 在做绩效考核系统时,需要按照步骤显示 div 并向其传递数据,很奇怪的是,在 div 中使用了 style=" display : none " 样式时,当使用 $("#id").show(); 显示 div,发现从后台传递的数据并没有显示到页面上,此时需要重新找一种加载 div 的方式显示该 div 包含的数据。

    <script type='text/javascript'>
         function hidediv(){
         document.getElementById('div1').style.display='none';
    }
    </script>
    <body onload=hidediv()>
        <div id="div1"></div>
    </body>
    

    如图:将 onload 函数放置在 处,在页面加载时就将 div 隐藏掉。当执行后台方法后,可以使用 $("#selectGroup").show();显示 div。

    展开全文
  • 数据隐藏技术揭秘笔记

    千次阅读 2018-02-14 11:03:06
    1 在word中隐藏数据 2 图像元数据 3 移东设备数据隐藏 4 文件压缩工具的数据隐藏 第三章 隐写术 2 隐写技术 21 插入方法 22 修改方法 23 在pdf文件中隐藏信息 24 在可执行文件中隐藏信息 25 在html文件中隐藏信息 ...

    数据隐藏技术揭秘笔记

    第一章 密写术的发展史

    1.凯撒密码
    2.摩斯密码
    3.维吉尼亚密码 可以通过分析频率来破解,语言特征

    from pycipher import Vigenere as vs
    vs("密钥").encipher("明文")  #加密
    vs("密钥").decipher("密文")  #解密

    online
    思科的密码就是维吉尼亚的变种,所以有在线破解工具
    4. 移位密码
    5. 替换密码 des标准加密 原文分组,每组8个字母 16轮移位和替换操作


    隐写
    1.卡尔达诺栅格码 spam minic
    2.隐形墨水 缩影术 打印机跟踪点(interesting) eff打印机跟踪点 可以使用跟踪点解密工具解密
    3.水印:

    数字水印,维护数字媒体文件的版权和防伪

    第二章 数据隐藏简单练习4则

    word可以通过编辑属性插入作者名称,公司名称,关键词,标签和其他数据,这些数据叫做元数据

    foca工具 扫描网站和在线服务查找元数据

    2.1 在word中隐藏数据

    批注、个人信息、水印、不可见内容、隐藏文字、定制的xml数据,hidden text隐藏文本选项
    file->option->display->hidden text
    另一个识别隐藏文字的方法是inspect document选项,file->info->check for issues->inspect doucument 文档检查器
    i 在白色背景上的白色文字 无法检测
    word2010 的属性区域有更多隐藏信息的选项,tags author comment properties->advanced properties custom页签 才可以看到

    2.2 图像元数据

    BTK

    EXIF代表可交换图像文件格式,是很多媒体格式的标准,比如jpeg和tiff等,使用exiftools查看

    2.3 移东设备数据隐藏

    hiden it pro工具

    linux中以.开头的文件和目录都是i隐藏的,把文件移入隐藏分区,然后呢修改文件后缀

    2.4 文件压缩工具的数据隐藏

    可以自动恢复破损的压缩文件 copy /b 1.jpg+mike.rar newimage.jpg

    第三章 隐写术

    数字隐写技术 stools tcp通道 camoutflags jphs hydan invisiblesecrets cnc alureon

    3.2 隐写技术

    隐藏信息的方法有两大类,插入(文件格式的空白部分,文件制作工具的标识)和替换(修改字节或者调整),例如lsb隐写

    3.2.1 插入方法

    1.追加插入法
    文件末尾附加数据 jpeg的结尾是0xff 0xd9
    2.前置插入法
    插入批注内容的文件都有可能被插入数据之中,html和jpeg文件都容易被嵌入数据,jpeg最多插入65533个字节的批注
    ffd8 soi 图像开始 ffe0 app0 ap标识符 sof0 ffc0 框架开始(宽度高度) sos ffda 扫描开始 eoi ffd9 文件结束
    jphideandseek oxff oxe0与oxffoxco之间插入数据

    3.2.2 修改方法

    修改文件的最低有效位,生成的图像有了渲染效果
    lsb隐写,适合24位的图像文件,lsb同样适用于8位的bmp图像

    3.2.3 在pdf文件中隐藏信息

    wbstego4open把文件写到bmp txt html pdf中,这个程序使用了插入法和lsb修改法 20 09 组成的8位字节,非常有可能是这种隐写
    密码保护防止打印和防止pdf的文件,数字证书防止文件内容被修改

    3.2.4 在可执行文件中隐藏信息

    hydan 工具可以在可执行文件里面隐藏数据
    一个jpeg 文件17个字节隐藏一个字节数据,二进制文件150个字节隐藏一个字节

    3.2.5 在html文件中隐藏信息

    snow在ascii文本末尾隐藏数据,可以通过插入制表符和空格是数据在浏览器不可见
    snow最多添加7个空格,使每八列插入三位,文件中有许多制表符和空格
    snow html在线加解密

    3.3 隐写分析

    hiderman 隐写程序会在载体文件末尾追加三个cdn的ascii码,隐写分析扫描工具有签名库

    3.3.1 异常分析

    查看文件大小 或者简单的cksum校验和工具
    有的隐写工具不改变文件的大小和创建时间,只要查看文件的校验和,就可以发现了

    3.3.2 隐写分析工具

    nothing

    3.3.3 免费软件

    stegspy 需要手动把文件夹里面的dll加入系统文件夹,并且注册
    stegdetect jpeg隐写 jsteg jphide outguess invisible secrets f5 appendx camouflage 等隐藏的信息
    jpeg和mpeg使用离散余弦变化
    stegdetect -tjopi -s10 *.jpg

    第四章 多媒体中的数据隐藏

    4.2 数字音频中的数据隐藏

    人类听觉系统只能感知相对相位,无法感知绝对相位。就是说只能通过两种不同音量的音频

    4.2.1 简单音频文件嵌入技术

    改变样本值的最低有效位least significant bit lsb只会略微影响模拟信号的效果

    音频类型 调制方法 声道个数 采样频率
    奈奎斯特定理 脉冲编码调制
    s-tools steanalyst分析音频图像的波形 ,音频也存在lsb隐写

    4.2.3 lsb波形数据隐写的隐写分析

    检测lsb波形文件数据的隐藏关键是检查波形文件的最低有效位组成的是有意义的信息还是随机噪音

    4.2.4 高级的音频文件数据隐藏

    MP3stego 数据隐藏在MP3文件奇偶校验快中,载荷文件不能太大,嵌入率大约是0.1%

    4.2.5 音频文件数据隐藏小结

    4.3数字视频文件中的数据隐藏

    msu stego 运动补偿压缩视频格式或者mpegx格式,去除冗余信息
    能够在全动态视频中隐藏信息 能够在视频帧中冗余地嵌入数据
    tcstego隐写 可以把truecrypt容器隐写到mp4格式中

    第五章 android移动设备中的数据隐藏

    imghid and reveal android 应用针对jpeg,iphone针对png文件的数据隐藏

    展开全文
  • 数量较大的边界能有效存储进而影响算法的实施。对现有典型算法存在的这一问题进行分析,并给出了解决方法。提出了基于高7 bit平面嵌入的灰度图像可逆数据隐藏算法。与传统可逆数据隐藏算法使用全部位平面进行...
  • 隐写术是将机密信息隐藏在更大的信息中,使别人无法知道隐藏信息的存在以及隐藏信息内容的过程。隐写术的目的是保证双方之间的机密交流。与隐藏机密信息内容的密码学不同,隐写术隐瞒了传达消息的事实。尽管隐写术与...

    什么是“隐写术”?

    隐写术是将机密信息隐藏在更大的信息中,使别人无法知道隐藏信息的存在以及隐藏信息内容的过程。隐写术的目的是保证双方之间的机密交流。与隐藏机密信息内容的密码学不同,隐写术隐瞒了传达消息的事实。尽管隐写术与密码学有所不同,但是两者之间有许多类似,并且一些作者会将隐写术归类为一种密码学形式,因为隐秘通信也是一种机密消息。

    很多人学习python,不知道从何学起。
    很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
    很多已经做案例的人,却不知道如何去学习更加高深的知识。
    那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
    QQ群:1097524789

    使用隐写术比使用密码学加密有什么优势?

    迄今为止,密码学一直是作用于保护发送者与接收者之间的保密性。然而,现在除了密码学之外,隐写术也越来越多地用于为需要被隐藏的数据添加更多保护层。使用隐写术比单独使用 密码学 的优势在于,有意加密的消息不会作为被监视的对象而引起注意。明显可见的加密消息,无论其多么难以解破,都会引起人们的注意。并且在 加密 是非法行为的国家中,这本身可能就是在犯罪。

    隐写术的分类

    隐写术目前已经可以在图像、视频、文本或音频等多种传输媒介上进行。

    基本的隐写术的分类模型

    如上图所示,原始图像文件(X)和机密消息(M)都作为入参传入到隐写术编码器中。隐写术编码器函数 f(X,M,K) 通过使用最低有效位编码等技术将机密消息写入到封面图像文件中。最后生成的隐写术图像看起来与封面图像文件非常相似,肉眼难辨。这样就完成了编码。若要取出机密消息,将之前生成的隐写术图像输入隐写术解码器即可。

    本文将使用 Python 来实现图像隐写术。手把手教您使用 Python 语言,通过一种叫“ 最低有效位(Least Significant Bit,LSB) ”的技术来隐藏文本消息。

    最低有效位隐写术

    我们可以将 数字图像 描述为一组有限的数字值,称为像素。像素是图像中最小的不可分割单位,其值表示在任何特定点上给定颜色的亮度。因此,我们可以将图像想象为像素的矩阵(或二维数组),其中包含固定数量的行和列。

    最低有效位(LSB)是一种将每个像素的最后一位修改并用机密消息的数据位代替的技术。

    从上图可以清楚地看出,如果我们修改最高有效位(MSB),它将对最终值产生更大的影响,但是如果我们修改最低有效位(LSB),则对最终值的影响将是最小的,因此,我们使用最低有效位隐写术。

    最低有效位是如何工作的?

    每个像素包含三个值,红、绿、蓝,这些值的范围从 0 到 255,换句话说,它们是一个 8 位二进制数。让我们举一个例子来说明它是如何工作的,假设您想要将消息 “ hi ” 隐藏到一个 4x4 的图像中,该图像具有以下像素值:

    [(225, 12, 99), (155, 2, 50), (99, 51, 15), (15, 55, 22),(155, 61, 87), (63, 30, 17), (1, 55, 19), (99, 81, 66),(219, 77, 91), (69, 39, 50), (18, 200, 33), (25, 54, 190)]

    使用 ASCII 表 ,我们可以先将机密消息转换为十进制值,然后再转换为二进制: 0110100 0110101 。现在,我们对像素值逐一进行迭代,在将它们转换为二进制后,我们将每个最小有效位依次替换为该信息位。(例如 225 是 11100001,我们替换最后一位,最右边的(1)和机密消息的第一位(0),依次类推)。这样的操作只会对像素值进行 +1 或 -1 的修改,因此肉眼根本看不出来。执行最低有效位隐写术后得到的像素值如下所示:

    [(224, 13, 99),(154, 3, 50),(98, 50, 15),(15, 54, 23),(154, 61, 87),(63, 30, 17),(1, 55, 19),(99, 81, 66),(219, 77, 91),(69, 39, 50),(18, 200, 33),(25, 54, 190)]

    使用 Python 在图像中隐藏文本

    在本节中,我们将使用 Python 代码逐步了解隐藏文本和显示文本的过程。首先,打开 google collab notebook ,按照下面的步骤操作:

    在开始编写代码之前,可以使用左侧菜单栏中的 upload 选项上传要用于隐写的图像(png 文件)。

    第一步:导入所有必需的 Python 库。

    第二步:定义一个可以将任何类型的数据转换为二进制数据的函数,我们将在编码和解码阶段使用这个函数来将机密消息数据和像素值转换为二进制。

    第三步:编写一个函数,通过改变最低有效位将机密消息隐藏到图像中。

    第四步:定义一个函数,用于从隐藏后的图像中解码隐藏信息。

    第五步:定义将输入的图像名称和机密消息作为用户的输入的函数。

    第六步:创建一个函数,要求用户输入需要解码的图像的名称,然后调用 showData() 函数以返回解码后的消息。

    第七步: 主函数

    输出/结果:

    加密消息:

    解码消息:

    如果您对代码感兴趣,可以在 Github 上查看我的 jupyter notebook 代码。

    展开全文
  •  信息隐藏就是利用人类感觉器官的敏感性感觉冗余,以及多媒体数字信号本身存在的冗余数据特性冗余,将秘密信息隐藏于一个宿主信号护体中而被觉察,它对外表现的只是宿主信号的外部特征,并改变基本特性及使用...
  • 处理数据不平衡

    万次阅读 多人点赞 2018-09-06 12:44:57
    数据不平衡问题虽然不是最难的,但绝对是最重要的问题之一。 一、数据不平衡 在学术研究与教学中,很多算法都有一个基本假设,那就是数据分布是均匀的。当我们把这些算法直接应用于实际数据时,大多数情况下都无法...

    这几年来,机器学习和数据挖掘非常火热,它们逐渐为世界带来实际价值。与此同时,越来越多的机器学习算法从学术界走向工业界,而在这个过程中会有很多困难。数据不平衡问题虽然不是最难的,但绝对是最重要的问题之一。

    一、数据不平衡

    在学术研究与教学中,很多算法都有一个基本假设,那就是数据分布是均匀的。当我们把这些算法直接应用于实际数据时,大多数情况下都无法取得理想的结果。因为实际数据往往分布得很不均匀,都会存在“长尾现象”,也就是所谓的“二八原理”。下图是新浪微博交互分布情况:

     

    可以看到大部分微博的总互动数(被转发、评论与点赞数量)在0-5之间,交互数多的微博(多于100)非常之少。如果我们去预测一条微博交互数所在档位,预测器只需要把所有微博预测为第一档(0-5)就能获得非常高的准确率,而这样的预测器没有任何价值。那如何来解决机器学习中数据不平衡问题呢?这便是这篇文章要讨论的主要内容。

    严格地讲,任何数据集上都有数据不平衡现象,这往往由问题本身决定的,但我们只关注那些分布差别比较悬殊的;另外,虽然很多数据集都包含多个类别,但这里着重考虑二分类,因为解决了二分类中的数据不平衡问题后,推而广之就能得到多分类情况下的解决方案。综上,这篇文章主要讨论如何解决二分类中正负样本差两个及以上数量级情况下的数据不平衡问题。

    不平衡程度相同(即正负样本比例类似)的两个问题,解决的难易程度也可能不同,因为问题难易程度还取决于我们所拥有数据有多大。比如在预测微博互动数的问题中,虽然数据不平衡,但每个档位的数据量都很大——最少的类别也有几万个样本,这样的问题通常比较容易解决;而在癌症诊断的场景中,因为患癌症的人本来就很少,所以数据不但不平衡,样本数还非常少,这样的问题就非常棘手。综上,可以把问题根据难度从小到大排个序:大数据+分布均衡<大数据+分布不均衡<小数据+数据均衡<小数据+数据不均衡。说明:对于小数据集,机器学习的方法是比较棘手的。对于需要解决的问题,拿到数据后,首先统计可用训练数据有多大,然后再观察数据分布情况。经验表明,训练数据中每个类别有5000个以上样本,其实也要相对于特征而言,来判断样本数目是不是足够,数据量是足够的,正负样本差一个数量级以内是可以接受的,不太需要考虑数据不平衡问题(完全是经验,没有理论依据,仅供参考)。

    二、如何解决

    解决这一问题的基本思路是让正负样本在训练过程中拥有相同的话语权,比如利用采样与加权等方法。为了方便起见,我们把数据集中样本较多的那一类称为“大众类”,样本较少的那一类称为“小众类”。

    1. 采样

    采样方法是通过对训练集进行处理使其从不平衡的数据集变成平衡的数据集,在大部分情况下会对最终的结果带来提升。

    采样分为上采样(Oversampling)和下采样(Undersampling),上采样是把小众类复制多份,下采样是从大众类中剔除一些样本,或者说只从大众类中选取部分样本。

    随机采样最大的优点是简单,但缺点也很明显。上采样后的数据集中会反复出现一些样本,训练出来的模型会有一定的过拟合;而下采样的缺点显而易见,那就是最终的训练集丢失了数据,模型只学到了总体模式的一部分。

    上采样会把小众样本复制多份,一个点会在高维空间中反复出现,这会导致一个问题,那就是运气好就能分对很多点,否则分错很多点。为了解决这一问题,可以在每次生成新数据点时加入轻微的随机扰动,经验表明这种做法非常有效。

    因为下采样会丢失信息,如何减少信息的损失呢?第一种方法叫做EasyEnsemble,利用模型融合的方法(Ensemble):多次下采样(放回采样,这样产生的训练集才相互独立)产生多个不同的训练集,进而训练多个不同的分类器,通过组合多个分类器的结果得到最终的结果。第二种方法叫做BalanceCascade,利用增量训练的思想(Boosting):先通过一次下采样产生训练集,训练一个分类器,对于那些分类正确的大众样本不放回,然后对这个更小的大众样本下采样产生训练集,训练第二个分类器,以此类推,最终组合所有分类器的结果得到最终结果。第三种方法是利用KNN试图挑选那些最具代表性的大众样本,叫做NearMiss,这类方法计算量很大,感兴趣的可以参考“Learning from Imbalanced Data”这篇综述的3.2.1节。

    2. 数据合成

    数据合成方法是利用已有样本生成更多样本,这类方法在小数据场景下有很多成功案例,比如医学图像分析等。

     

    SMOTE为每个小众样本合成相同数量的新样本,这带来一些潜在的问题:一方面是增加了类之间重叠的可能性,另一方面是生成一些没有提供有益信息的样本。为了解决这个问题,出现两种方法:Borderline-SMOTE与ADASYN。

    Borderline-SMOTE的解决思路是寻找那些应该为之合成新样本的小众样本。即为每个小众样本计算K近邻,只为那些K近邻中有一半以上大众样本的小众样本生成新样本。直观地讲,只为那些周围大部分是大众样本的小众样本生成新样本,因为这些样本往往是边界样本。确定了为哪些小众样本生成新样本后再利用SMOTE生成新样本。

     

    横向是真实分类情况,纵向是预测分类情况,C(i,j)是把真实类别为j的样本预测为i时的损失,我们需要根据实际情况来设定它的值。

    这种方法的难点在于设置合理的权重,实际应用中一般让各个分类间的加权损失值近似相等。当然这并不是通用法则,还是需要具体问题具体分析。

    4. 一分类

    对于正负样本极不平衡的场景,我们可以换一个完全不同的角度来看待问题:把它看做一分类(One Class Learning)或异常检测(Novelty Detection)问题。这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,经典的工作包括One-class SVM等。

    说明:对于正负样本极不均匀的问题,使用异常检测,或者一分类问题,也是一个思路。

    三、如何选择

    解决数据不平衡问题的方法有很多,上面只是一些最常用的方法,而最常用的方法也有这么多种,如何根据实际问题选择合适的方法呢?接下来谈谈一些我的经验。

    1、在正负样本都非常之少的情况下,应该采用数据合成的方式;

    2、在负样本足够多,正样本非常之少且比例及其悬殊的情况下,应该考虑一分类方法;

    3、在正负样本都足够多且比例不是特别悬殊的情况下,应该考虑采样或者加权的方法。

    4、采样和加权在数学上是等价的,但实际应用中效果却有差别。尤其是采样了诸如Random Forest等分类方法,训练过程会对训练集进行随机采样。在这种情况下,如果计算资源允许上采样往往要比加权好一些。

    5、另外,虽然上采样和下采样都可以使数据集变得平衡,并且在数据足够多的情况下等价,但两者也是有区别的。实际应用中,我的经验是如果计算资源足够且小众类样本足够多的情况下使用上采样,否则使用下采样,因为上采样会增加训练集的大小进而增加训练时间,同时小的训练集非常容易产生过拟合。

    6、对于下采样,如果计算资源相对较多且有良好的并行环境,应该选择Ensemble方法。

     

    原文地址:一只鸟的天空,http://blog.csdn.net/heyongluoyao8/article/details/49408131

    在分类中如何处理训练集中不平衡问题

      在很多机器学习任务中,训练集中可能会存在某个或某些类别下的样本数远大于另一些类别下的样本数目。即类别不平衡,为了使得学习达到更好的效果,因此需要解决该类别不平衡问题。

    Jason Brownlee的回答:

    原文标题:8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset 
      当你在对一个类别不均衡的数据集进行分类时得到了90%的准确度(Accuracy)。当你进一步分析发现,数据集的90%的样本是属于同一个类,并且分类器将所有的样本都分类为该类。在这种情况下,显然该分类器是无效的。并且这种无效是由于训练集中类别不均衡而导致的。 
      首先举几个所收到的邮件中关于类别不均衡的例子:

    • 在一个二分类问题中,训练集中class 1的样本数比class 2的样本数是60:1。使用逻辑回归进行分类,最后结果是其忽略了class 2,即其将所有的训练样本都分类为class 1。
    • 在分类任务的数据集中,有三个类别,分别为A,B,C。在训练集中,A类的样本占70%,B类的样本占25%,C类的样本占5%。最后我的分类器对类A的样本过拟合了,而对其它两个类别的样本欠拟合。

    什么是类别不均衡问题

      类别数据不均衡是分类任务中一个典型的存在的问题。简而言之,即数据集中,每个类别下的样本数目相差很大。例如,在一个二分类问题中,共有100个样本(100行数据,每一行数据为一个样本的表征),其中80个样本属于class 1,其余的20个样本属于class 2,class 1:class2=80:20=4:1,这便属于类别不均衡。当然,类别不均衡问同样会发生在多分类任务中。它们的解决方法是一样的。因此,为了便于讨论与理解,我们从二分类任务入手进行讲解。

    类别不均衡问题是现实中很常见的问题

      大部分分类任务中,各类别下的数据个数基本上不可能完全相等,但是一点点差异是不会产生任何影响与问题的。 
      在现实中有很多类别不均衡问题,它是常见的,并且也是合理的,符合人们期望的。如,在欺诈交易识别中,属于欺诈交易的应该是很少部分,即绝大部分交易是正常的,只有极少部分的交易属于欺诈交易。这就是一个正常的类别不均衡问题。又如,在客户流失的数据集中,绝大部分的客户是会继续享受其服务的(非流失对象),只有极少数部分的客户不会再继续享受其服务(流失对象)。一般而已,如果类别不平衡比例超过4:1,那么其分类器会大大地因为数据不平衡性而无法满足分类要求的。因此在构建分类模型之前,需要对分类不均衡性问题进行处理。 
      在前面,我们使用准确度这个指标来评价分类质量,可以看出,在类别不均衡时,准确度这个评价指标并不能work。因为分类器将所有的样本都分类到大类下面时,该指标值仍然会很高。即,该分类器偏向了大类这个类别的数据。

    八大解决方法

    • 可以扩大数据集吗? 
        当遇到类别不均衡问题时,首先应该想到,是否可能再增加数据(一定要有小类样本数据),更多的数据往往战胜更好的算法。因为机器学习是使用现有的数据多整个数据的分布进行估计,因此更多的数据往往能够得到更多的分布信息,以及更好分布估计。即使再增加小类样本数据时,又增加了大类样本数据,也可以使用放弃一部分大类数据(即对大类数据进行欠采样)来解决。
    • 尝试其它评价指标 
        从前面的分析可以看出,准确度这个评价指标在类别不均衡的分类任务中并不能work,甚至进行误导(分类器不work,但是从这个指标来看,该分类器有着很好的评价指标得分)。因此在类别不均衡分类任务中,需要使用更有说服力的评价指标来对分类器进行评价。如何对不同的问题选择有效的评价指标参见这里。 
        上面的超链接中的文章,讲述了如何对乳腺癌患者复发类别不均衡数据进行分类。在文中,推荐了几个比传统的准确度更有效的评价指标:

      • 混淆矩阵(Confusion Matrix):使用一个表格对分类器所预测的类别与其真实的类别的样本统计,分别为:TP、FN、FP与TN。
      • 精确度(Precision)
      • 召回率(Recall)
      • F1得分(F1 Score):精确度与找召回率的加权平均。

        特别是:

    • 对数据集进行重采样 
        可以使用一些策略该减轻数据的不平衡程度。该策略便是采样(sampling),主要有两种采样方法来降低数据的不平衡性。

      • 对小类的数据样本进行采样来增加小类的数据样本个数,即过采样(over-sampling ,采样的个数大于该类样本的个数)。
      • 对大类的数据样本进行采样来减少该类数据样本的个数,即欠采样(under-sampling,采样的次数少于该类样本的个素)。

        采样算法往往很容易实现,并且其运行速度快,并且效果也不错。更详细的内容参见这里。 
        一些经验法则:

      • 考虑对大类下的样本(超过1万、十万甚至更多)进行欠采样,即删除部分样本;
      • 考虑对小类下的样本(不足1为甚至更少)进行过采样,即添加部分样本的副本;
      • 考虑尝试随机采样与非随机采样两种采样方法;
      • 考虑对各类别尝试不同的采样比例,比一定是1:1,有时候1:1反而不好,因为与现实情况相差甚远;
      • 考虑同时使用过采样与欠采样。
    • 尝试产生人工数据样本 
        一种简单的人工样本数据产生的方法便是,对该类下的所有样本每个属性特征的取值空间中随机选取一个组成新的样本,即属性值随机采样。你可以使用基于经验对属性值进行随机采样而构造新的人工样本,或者使用类似朴素贝叶斯方法假设各属性之间互相独立进行采样,这样便可得到更多的数据,但是无法保证属性之前的线性关系(如果本身是存在的)。 
        有一个系统的构造人工数据样本的方法SMOTE(Synthetic Minority Over-sampling Technique)。SMOTE是一种过采样算法,它构造新的小类样本而不是产生小类中已有的样本的副本,即该算法构造的数据是新样本,原数据集中不存在的。该基于距离度量选择小类别下两个或者更多的相似样本,然后选择其中一个样本,并随机选择一定数量的邻居样本对选择的那个样本的一个属性增加噪声,每次处理一个属性。这样就构造了更多的新生数据。具体可以参见原始论文。 
        这里有SMOTE算法的多个不同语言的实现版本: 
    • 尝试不同的分类算法 
        强烈建议不要对待每一个分类都使用自己喜欢而熟悉的分类算法。应该使用不同的算法对其进行比较,因为不同的算法使用于不同的任务与数据。具体可以参见“Why you should be Spot-Checking Algorithms on your Machine Learning Problems”。 
        决策树往往在类别不均衡数据上表现不错。它使用基于类变量的划分规则去创建分类树,因此可以强制地将不同类别的样本分开。目前流行的决策树算法有:C4.5、C5.0、CART和Random Forest等。基于R编写的决策树参见这里。基于Python的Scikit-learn的CART使用参见这里
    • 尝试对模型进行惩罚 
        你可以使用相同的分类算法,但是使用一个不同的角度,比如你的分类任务是识别那些小类,那么可以对分类器的小类样本数据增加权值,降低大类样本的权值(这种方法其实是产生了新的数据分布,即产生了新的数据集,译者注),从而使得分类器将重点集中在小类样本身上。一个具体做法就是,在训练分类器时,若分类器将小类样本分错时额外增加分类器一个小类样本分错代价,这个额外的代价可以使得分类器更加“关心”小类样本。如penalized-SVM和penalized-LDA算法。 
        Weka中有一个惩罚模型的通用框架CostSensitiveClassifier,它能够对任何分类器进行封装,并且使用一个自定义的惩罚矩阵对分错的样本进行惩罚。 
        如果你锁定一个具体的算法时,并且无法通过使用重采样来解决不均衡性问题而得到较差的分类结果。这样你便可以使用惩罚模型来解决不平衡性问题。但是,设置惩罚矩阵是一个复杂的事,因此你需要根据你的任务尝试不同的惩罚矩阵,并选取一个较好的惩罚矩阵。
    • 尝试一个新的角度理解问题 
        我们可以从不同于分类的角度去解决数据不均衡性问题,我们可以把那些小类的样本作为异常点(outliers),因此该问题便转化为异常点检测(anomaly detection)与变化趋势检测问题(change detection)。 
        异常点检测即是对那些罕见事件进行识别。如通过机器的部件的振动识别机器故障,又如通过系统调用序列识别恶意程序。这些事件相对于正常情况是很少见的。 
        变化趋势检测类似于异常点检测,不同在于其通过检测不寻常的变化趋势来识别。如通过观察用户模式或银行交易来检测用户行为的不寻常改变。 
        将小类样本作为异常点这种思维的转变,可以帮助考虑新的方法去分离或分类样本。这两种方法从不同的角度去思考,让你尝试新的方法去解决问题。
    • 尝试创新 
        仔细对你的问题进行分析与挖掘,是否可以将你的问题划分成多个更小的问题,而这些小问题更容易解决。你可以从这篇文章In classification, how do you handle an unbalanced training set?中得到灵感。例如: 
      • 将你的大类压缩成小类;
      • 使用One Class分类器(将小类作为异常点);
      • 使用集成方式,训练多个分类器,然后联合这些分类器进行分类;
      • ….

      这些想法只是冰山一角,你可以想到更多的有趣的和有创意的想法去解决问题。更多的想法参加Reddit的文章http://www.quora.com/In-classification-how-do-you-handle-an-unbalanced-training-set

    选择某一种方法并使用它

      你不必成为一个精通所有算法的算法奇才或者一个建立准确而可靠的处理数据不平衡的模型的统计学家,你只需要根据你的问题的实际情况从上述算法或方法中去选择一种或两种方法去使用。希望上述的某些方法能够解决你的问题。例如使用其它评价指标或重采样算法速度快并且有效。

    总结

      记住,其实并不知道哪种方法最适合你的任务与数据,你可以使用一些启发式规则或经验去选择某一个较优算法。当然最好的方法测试每一种算法,然后选择最好的方法。最重要的是,从点滴开始做起,根据自己现有的知识,并不断学习去一步步完善。

    Further Reading…

      这里有一些我认为有价值的可供参考的相关资料,让你进一步去认识与研究数据不平衡问题:

    Sergey Feldman的回答:

    • 设超大类中样本的个数是极小类中样本个数的L倍,那么在随机梯度下降(SGD,stochastic gradient descent)算法中,每次遇到一个极小类中样本进行训练时,训练L次。
    • 将大类中样本划分到L个聚类中,然后训练L个分类器,每个分类器使用大类中的一个簇与所有的小类样本进行训练得到。最后对这L个分类器采取少数服从多数对未知类别数据进行分类,如果是连续值(预测),那么采用平均值。
    • 设小类中有N个样本。将大类聚类成N个簇,然后使用每个簇的中心组成大类中的N个样本,加上小类中所有的样本进行训练。
    • 无论你使用前面的何种方法,都对某个或某些类进行了损害。为了不进行损害,那么可以使用全部的训练集采用多种分类方法分别建立分类器而得到多个分类器,采用投票的方式对未知类别的数据进行分类,如果是连续值(预测),那么采用平均值。
    • 最近的ICML论文中,表明增加数据量使得已知分布的训练集的误差增加了,即破坏了原有训练集的分布,从而可以提高分类器的性能。这篇论文与类别不平衡问题不相关,因为它隐式地使用数学方式增加数据而使得数据集大小不变。但是,我认为破坏原有的分布是有益的。
    • More details than you need: imho, the most interesting of the corrupting distributions is the blankout distribution, where you just zero out a random subset of features. Why is it interesting? Because you are helping your classifier be sturdier/hardier by giving it variations of your data that have essentially missing features. So it has to learn to classify correctly even in adverse conditions. 一个相关的想法是,在神经网络中,随机选择部分隐藏层单元来继续训练(即,随机去掉一部分隐藏层单元,(zeroed-out))。具体见http://web.stanford.edu/~sidaw/cgi-bin/home/lib/exe/fetch.php?media=papers:fastdropout.pdf

    Kripa Chettiar的回答:

    • 增加新数据,可以使用SMOTE或SMOTEBoost产生人造数据。
    • 将大类压缩。压缩比例需要具体情况具体分析,取决于你所拥有的数据。例如,A类中有30个样本,B类中有4000个样本,那么你可以将B类压缩成1000(进行采样)。
    • 可以结合1与2
    • 对于那种极小类是异常点的分类任务,因此分类器需要学习到大类的决策分界面,即分类器是一个单个类分类器(One Class Classifier)。Weka中有相关的库
    • 获得更多的数据。

    Roar Nybø的回答:

    • 对小类进行过采样。并且使用集成模式会获得更好的效果。

    Dan Levin的回答:

    • 一个很好的方法去处理非平衡数据问题,并且在理论上证明了。这个方法便是由Robert E. Schapire于1990年在Machine Learning提出的”The strength of weak learnability” ,该方法是一个boosting算法,它递归地训练三个弱学习器,然后将这三个弱学习器结合起形成一个强的学习器。我们可以使用这个算法的第一步去解决数据不平衡问题。 
        首先使用原始数据集训练第一个学习器L1。 
        然后使用50%在L1学习正确和50%学习错误的的那些样本训练得到学习器L2,即从L1中学习错误的样本集与学习正确的样本集中,循环一边采样一个。 
        接着,使用L1与L2不一致的那些样本去训练得到学习器L3。 
        最后,使用投票方式作为最后输出。 
        那么如何使用该算法来解决类别不平衡问题呢? 
        假设是一个二分类问题,大部分的样本都是true类。让L1输出始终为true。使用50%在L1分类正确的与50%分类错误的样本训练得到L2,即从L1中学习错误的样本集与学习正确的样本集中,循环一边采样一个。因此,L2的训练样本是平衡的。L使用L1与L2分类不一致的那些样本训练得到L3,即在L2中分类为false的那些样本。最后,结合这三个分类器,采用投票的方式来决定分类结果,因此只有当L2与L3都分类为false时,最终结果才为false,否则true。 
        自己已经在实践中使用过很多次,并且效果都不错。

    Kaushik Kasi的回答:

    • 对小类中的样本进行复制以增加该类中的样本数,但是可能会增加bias。
    • 对小类中的样本通过调整特征值来人工生成样本,而使得该类中样本个数增多。如在图像中,对一幅图像进行扭曲得到另一幅图像,即改变了原图像的某些特征值。但是该方法可能会产生现实中并存在的样本。

    Quora User的回答:

    • 简单快速的方法:对大类欠采样或者对小类过采样。
    • 更有效的方法:使用代价函数学习得到每个类的权值,大类的权值小,小类的权值大。刚开始,可以设置每个类别的权值与样本个数比例的倒数,然后可以使用过采样进行调优。

    Dayvid Victor的回答:

      在类别不平衡中,以下几个点需要注意:

    • 常规的分类评价指标可能会失效,比如将所有的样本都分类成大类,那么准确率、精确率等都会很高。这种情况下,AUC时最好的评价指标。
    • 你能够使用原型选择技术去降低不平衡水平。选择那些重要的样本。One-Sided Selection (OSS) 是一个预处理技术(模型训练之前使用),能够处理类别不平衡问题。
    • 从另一个角度,可以增加小类的样本个数,可以使用过采样与原型生成技术(prototype-generation techniques)。
    • 在K-Fold 校验中,每一份数据集中原则上应该保持类别样本比例一样或者近似,如果每份数据集中小类样本数目过少,那么应该降低K的值,知道小类样本的个数足够。 
        一般来说,如果事前不对不平衡问题进行处理,那么对于小类别的样本则会错误率很高,即大部分甚至全部小类样本都会分错。

    Muktabh Mayank的回答:

    Sandeep Subramanian的回答:

    Quora User的回答:

    • 赋予小类样本更高的训练权值
    • 对小类进行过采样
    • 某些时候,高不平衡性下仍然可以得到效果较好的训练结果。我认为对于某些评价指标是有意义的,如AUC。

    Sumit Soman 的回答:

    Abhishek Ghose的回答:

      参见:Abhishek Ghose’s answer to What’s the most efficient classification algorithm for unbalanced data sets? And what pre-processing could be done to optimize the score?

    原文:https://www.quora.com/In-classification-how-do-you-handle-an-unbalanced-training-set

     
    展开全文
  • 数据隐藏之Qt中d指针详解

    千次阅读 2017-08-25 23:19:37
    其优点是隐藏了我们想透露的数据信息,而且我们即使添加数据项如在添加一个班级成员等也不会影响CStudent类的大小。能做到二进制兼容。  好了,我们回归到前面的d指针上来,其他d指针就是Qt为了实现信息...
  • 利用LSB算法隐藏图片信息的MATLAB实现

    万次阅读 多人点赞 2016-03-21 21:38:34
    前一篇博客中介绍了利用LSB算法隐藏文字信息的MATLAB实现: ...在此基础上,下面介绍利用LSB算法隐藏图片...图片数据量较大,一个1920×10801920 \times 1080 的图片就有 6912000 个RGB值需要储存 依旧利用之前改进的算
  • 在PNG图片中写入隐藏信息

    千次阅读 2018-09-16 21:23:00
       由于最近做项目,遇到一个功能需要做,是往PNG图片里面写入隐藏的数据,然后将图片通过微信的方式分享出去,这时候保存下来的图片,可以从里面读取出写入的隐藏数据。   首先,我们需要了解什么是PNG格式,...
  • echarts柱状图数据存在0时,会与其他数据产生堆叠,对页面的样式产生影响,如: 为了解决这个问题,决定将数据为0的模块隐藏。 修改方式是,为echarts的配置项 series 中每一项的label.normal添加formatter函数,...
  • 本文介绍了数据集的大小对模型性能的影响。包括训练集大小对测试准确率的影响和测试集大小对测试准确率的影响
  • 第三部分 问题陈述在这部分,我们将用一个简单的例子在说明相关信息的问题,并且将问题公式化。...隐私保护的目标是隐藏x中的计数信息。为了保持差分隐私,随机化机制将会向统计数据里添加独立的噪音...
  • A和B需要共享同一线程,同样的另一组A和B共享另一组线程,A和B相互之间影响
  • 数据预处理

    千次阅读 2020-02-19 12:42:45
    在我们进行数据挖掘的过程中,大量的原始数据中存在着大量有问题的数据(脏数据)比如有缺失值的,一致的,有异常的,大量重复的数据等。这些脏数据会严重影响数据挖掘建模过程的执行效率,也可能会使挖掘结果...
  • 信息隐藏——二值图像的信息隐藏

    千次阅读 2020-06-24 21:28:42
    二值图像的信息隐藏 【实验目的】: 使用一个特定图像区域中黑像素的个数来编码秘密信息。 若某块P1 (Bi)>50%,则嵌入一个1,若P0 (Bi)>50%,则嵌入一个0。...1.读取(预处理后的)目标图片与要隐藏的信
  • Echarts 堆叠条形,可以一次性显示不同状态的统计数据。但如果数据中包含 0,那么就是挤在一起,影响前一个状态数据的显示: 我们可以为 series 中每一项的 label.normal 添加相应的 formatter 函数,让其返回...
  • 数据库, 数据仓库, 数据集市,数据湖,数据中台

    千次阅读 多人点赞 2019-02-22 16:21:47
    数据仓库和数据集市的区别 作者:修鹏李 出处:CSDN 大数据:数据仓库和数据库的区别 作者:南宫蓉 出处:简书 第一篇:数据仓库概述 第二篇:数据库关系建模 作者:穆晨 出处:CNBLOS 摘要 本文简要介绍...
  • 数据挖掘面试 150 道题(附答案)

    万次阅读 多人点赞 2019-09-21 13:50:38
    1. 某超市研究销售纪录数据后发现,买啤酒的人很大概率也会购买尿布,这种属于数据挖掘的哪类问题?(A) A. 关联规则发现 B. 聚类 C. 分类 D. 自然语言处理 2. 以下两种描述分别对应哪两种对分类算法的评价标准...
  • 解决ECharts 因X轴数据过多导致重叠显示全的问题

    万次阅读 多人点赞 2018-07-02 11:26:32
     通过配置合适的起始位置和结束位置可以做到数据过多重叠,数据太少也至于很丑,定位合适的位置后还可以通过手动拉伸滚动条的长度动态的显示不同条目数,对于动态的条目数滚动条要比倾斜数据灵活太多尤其是根据...
  • 数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。 为什么要学数据结构? 首先,因为数据结构作为...
  • 二维数据热力的绘制

    千次阅读 2020-08-11 21:13:32
    通过上我们能一眼看出pH值对反应指数的影响比较显著,而温度几乎产生影响。 然而实际上,我们的横坐标或纵坐标一定是数值类型变量,此时对横坐标的默认排序并能有效表达出数据中蕴含的规律。 比如对于离子...
  • 分类问题中的数据不平衡问题

    万次阅读 2017-05-09 11:22:43
    在很多机器学习任务中,训练集中可能会存在某个或某些类别下的样本数远大于另一些类别下的样本数目。即类别平衡,为了使得学习达到更好的效果,因此需要解决该类别...  当你在对一个类别均衡的数据集进行分类
  • 使用bootstrap-select遇到的坑-下拉框数据不显示 1、问题背景: 根据项目需要通过bootstrap-select实现下拉多选,但是 1、当使用ajax请求到数据或者模拟的数据添加到下拉框时下拉框数据不显示, 2、将引入的...
  • 离群点跟噪声数据不一样,噪声是被观测变量的随机误差或方差。一般而言,噪声在数据分析(包括离群点分析)中不是令人感兴趣的,需要在数据预处理中剔除的,减少对后续模型预估的影响,增加精度。 离群点检测是有...
  • 大数据技术能够将大规模数据隐藏的信息和知识挖掘出来,为人类社会经济活动提供依据,提高各个领域的运行效率,甚至整个社会经济的集约化程度。 1大数据生命周期 1展示了一个典型的大数据技术栈。底层是基础...
  • LSB图像信息隐藏实验(附源代码)

    万次阅读 多人点赞 2016-11-01 17:26:59
    LSB图像信息隐藏 1.掌握对图像的基本操作。 2.能够用 LSB 算法对图像进行信息隐藏 3.能够用 LSB 提取算法提取隐藏进图像的信息 4.能够反映 jpeg 压缩率与误码率之间的关系 ...实验算法3:图片压缩率与误码率关系
  • echarts对x轴数据显示全的处理

    千次阅读 2018-02-05 16:02:29
    在echarts中应用柱状或者折线时,当数据量过多的时候,X轴的坐标就会显示全(如下图图一),在ECharts图表组件内部有一个机制,用于统计xAxis坐标刻度的个数和图表宽度,从而会自动调整刻度间隔个数以此达到...
  • CTF中图片隐藏文件分离方法总结

    万次阅读 2017-06-06 12:15:24
    0x00 前言 在安全的大趋势下,信息安全越来越来受到国家和企业的重视,所以CTF比赛场次...转到CTF比赛上,通常在CTF比赛中常有与隐写术(Steganography)相关的题目出现,这里我们讨论总结图片隐藏文件分离的方法
  • 实验名称: 研究数据相关性对机器学习的影响 实验目的:   1 熟练coursera上NG所学机器学习课程所学习的算法 2 如果将PCA理解为是通过减少数据的线性相关性来达到降维目的的话,本实验...
  • 数据挖掘

    千次阅读 2011-12-08 15:54:01
    什么是数据挖掘数据挖掘的起源数据挖掘能做什么数据挖掘中的关联规则数据挖掘和在线分析处理(OLAP)数据挖掘,机器学习和统计软硬件发展对数据挖掘的影响数据挖掘相关的10个问题 展开     数据挖掘 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 177,026
精华内容 70,810
关键字:

怎么隐藏数据不影响图