zoukankan      html  css  js  c++  java
  • 机器学习系列(5)_从白富美相亲看特征预处理与选择(上)

    作者:龙心尘 &&寒小阳
    时间:2016年1月。


    出处:
    http://blog.csdn.net/longxinchen_ml/article/details/50471682,
    http://blog.csdn.net/han_xiaoyang/article/details/50481967
    声明:版权全部,转载请联系作者并注明出处

    1. 引言

    再过一个月就是春节。相信有非常多码农就要准备欢天喜地地回家过(xiang)年(qin)了。我们今天也打算讲一个相亲的故事。

    讲机器学习为什么要讲相亲?被讨论群里的小伙伴催着相亲。哦不。催着讲特征project紧啊。仅仅是我们不太敢讲这么复杂高深的东西。毕竟project实践的经验太复杂了。没有统一的好解释的理论,一般的教材讲这方面的内容不多。

    我们就打算以一个相亲的故事为例。串一些特征project的内容。

    2. 故事背景

    事先声明:本故事纯属虚构,如有雷同,纯属巧合!

    海归白富美韩梅梅刚回国,还没适应工作,母亲就催着相亲。

    以父母的关系,他们了解到的适龄单身男青年有100个。要从100个男生中找到1个理想的女婿,可谓百里挑一。韩梅梅母亲也操心女儿相亲多了会反感,打算草拟一个相亲名单。人数不多。怎么从中挑出优秀男青年就是一个首要的问题。

    3. 用机器学习的框架去分析

    我们用机器学习的框架分析,在父母眼中,这100个男生终于将会分成两类:“女婿”(1人)和“非女婿”(99人)。

    “女婿”和“非女婿”就叫做“标签”。

    而选择相亲名单的标准——如“是否高富帅”、“是否海归”等等——就叫作“特征”。

    最好能有一个特征能够精确定位理想女婿。但这太过理想了。比較现实的方法是从这些“特征”中选择、拆分、组合出最合适的特征,逐渐逼近我们的标签,以形成一个精简的相亲名单。

    而这个过程,就能够理解成特征处理、特征project的过程。

    可是。现实中的特征有千千万,拆分重组之后特征又是几何级数地添加。可能永远也穷举不完。因此须要有统一客观的指标来衡量这些特征对标签的识别能力,以便进一步地深入分析。而评估这些“特征”对我们的“标签”的有效程度的过程就叫作“特征有效性分析”。

    4. 剧情一:韩妈妈的“如意算盘”

    为人父母嘛。总是希望女儿嫁得好。

    韩妈妈的第一反应的就是要找“高富帅”。先她先从这100个男生中挑了挑。符合高富帅这个标准的有5个人。

    韩妈妈的如意算盘是这种:女婿就从这5个人中挑,概率就是20%。比之前的1%整整提高了20倍,嘿嘿嘿。

    。。

    5. 特征有效性分析

    事实上,这就韩妈妈不知不觉就走了一个特征有效性分析的过程。我们用图表演示一下:


    图表

    考虑到各方面的概率,用下图表示更加直观:

    条件概率

    为了表述方便,我们以随机挑女婿而不考虑不论什么特征的概率叫做“先验概率”(1%)。而中间的箭头中的概率则表示在已经知道样本所属特征前提下,属于女婿还是不属于女婿的概率。也能够叫作“标签相对于某个特征的后验概率”(20%)。而母亲的如意算盘就是考虑了上图中红圈部分的先验概率与后验概率(也能够叫条件概率)。这事实上是一种非常朴素的特征有效性分析的方法。

    并且她还做了个更加精确的数量化描写叙述:

    =20%1%=20

    仅仅是在project上做除法可能运算会麻烦些,而两边同一时候取对数转换成减法则更方便:

    log()=log()log()

    概率表示着选女婿的可能性或者确定性。在本例中。后验概率的确定性比先验概率的确定性更高。

    可见。“确定性的添加”能够作为特征有效性分析的一个指标。

    我们进一步分析。不管先验概率还是后验概率,其本身是0-1之间的一个数。取完对数之后是一个负数,这在现实中不太方便找到其相应的现象解释。可是概率的倒数一定大于1。取完对数之后就是一个正数,就好找现实解释了。我们能够把这个“概率倒数的对数”理解成不确定性的指标。于是上式就变成:

    log()=log(1)log(1)

    这里面的log()我们叫做互信息

    因此,“不确定性的降低”能够作为特征有效性分析的一个指标。这个结论我们接下来将会重复用到。

    6. 剧情二:白富美巧劝慈母

    韩妈妈半开玩笑地问韩梅梅:“我们家闺女仅仅挑高富帅的怎么样?”女儿想了想。说:“假设人家看不上我们怎么办?”母亲笑着说:“我们的家境哪里差了?何况我们的女儿这么优秀,我们还看不上他们呢。”

    女儿说:“这就是说明我们两方不合适了。

    我们家条件尽管还不错。可是比下有余、比上不足,跟真正条件好的家庭比較起来我们根本不算事儿。

    假设一味挑高富帅,他们可能认为我们仅仅是看中他们的钱,反倒把我们家看低了。相反,要是真要有个真正对我好的男生,比什么都幸福。而他不一定必须是高富帅。毕竟跟我一起相处一辈子的是一个活生生的人,而不是他背后的东西嘛。

    母亲非常有感慨地说:“嗯,你能这样想我就放心了。

    梅梅真是长大了。

    那么,你打算怎么办?”女儿说道:“高富帅也得分人。踏实人品好的也能够接触一下,可是玩心太重不会照应人的我就不喜欢。预计高富帅里面这两种人一半一半吧。非常多男生并非高富帅,当中没准也有合适的人呢。

    7. 特征有效性分析

    如今特征的分布发生了新变化。

    按韩梅梅的分析。高富帅中可能有一半她就不会喜欢,而不是高富帅的男生中没准有合适的人。我们能够简单假设高富帅中与非高富帅中各有0.5个合适的人。则分析图表例如以下:

    图表


    条件概率

    如今的情况是,“是不是女婿”的可能性同一时候分布在“是高富帅”和“不是高富帅”中。单独衡量“高富帅”本身的后验概率已经不够描写叙述特征的总体效果了。

    我们能够有一个考虑特征总体情况的指标。

    还是回到之前的那句话:

    不确定性的降低”能够作为特征有效性分析的一个指标。

    我们之前考虑了“是女婿”的不确定性是log(11%),相应的“不是女婿”的不确定性是log(199%),那么标签“是否女婿”作为总体的平均不确定性则能够理解为这两个状态的加权平均:

    HY=1%×log(11%)+99%×log(199%)=0.08079

    (全文假定对数log的底数取为2)

    这就是传说中的信息熵。我们用Y表示标签,用HY表示“是否女婿”的信息熵。也就是其总体的平均不确定性

    那么考虑特征(“是否高帅富”)后的标签(“是否女婿”)的平均不确定性怎么衡量?我们用X:{,}来表示特征。

    事实上,与上面的思路相似。我们在已知特征为“是高富帅”的前提下,“是否女婿”这个标签的总体平均不确定性能够用相对“是高富帅”的后验概率来求出

    H(Y|X=)=(0.5/5)×log(1(0.5/5))+(4.5/5)×log(1(4.5/5))=0.46900

    在已知特征为“不是高富帅”的前提下,“是否女婿”这个标签的总体平均不确定性能够用相对“不是高富帅”的后验概率来求出:

    H(Y|X=)=(0.5/95)×log(1(0.5/95))+(94.5/95)×log(1(94.5/95))=0.04741

    因此,已知特征(不管详细是“是高富帅”还是“不是高富帅”)情况下的标签平均不确定性为前面两种情况的加权平均:

    H(Y|X)
    =P(X=)×H(Y|X=)+P(X=)×H(Y|X=)
    =5/100×0.46900+95/100×0.04741=0.06849
    这就是传说中的条件熵

    所以,考虑特征后,标签的“不确定性的降低”为:

    IY,X=HYH(Y|X)=0.01230
    这个IY,X就叫做平均互信息

    我们用相同的方法去评价之前母亲设想的女婿仅仅在高富帅中的理想情况(也就是女婿仅仅在高富帅中产生的情况)的互信息IY,X=0.04470

    平均互信息从理想情况的0.04470下降到0.01230。也就是说原以为特征“是否高富帅”与标签“是否女婿”的相关性非常高,后来发现相关性事实上是比較低的。可见理想非常丰满。现实非常骨感。

    8. 剧情三:白富美重定名单

    事实上,韩梅梅没有说出来的话是她有一个青梅竹马的码农叫李雷。她出国之前的对他的印象还不错。假设按母亲的标准李雷肯定排除在相亲名单外了。而她想给他一个机会。

    这时母亲说话了:“我们家女儿考虑得挺好,那相亲名单你来定吧。”女儿说:“不是高富帅的男生也该好好区分一下。那些品格端正、气度不凡、踏实肯干的潜力股的男生我也比較赞赏,其它的就暂且不考虑了。”母亲说:“就是说能够从高富帅中挑出部分品德好的,还有从不是高帅富的男生中挑出部分潜力股,共同组成一个新的名单,我们的女婿就在这里面了?

    ”女儿不好意思地说:“妈妈您真着急。八字还没一撇呢。

    接着,韩梅梅母女俩从高富帅中挑了2个口碑不错的。又从不是高富帅的男生中条了10个非常不错的。

    终于组成了12人的相亲名单。

    李雷的名字在当中。

    9. 拆分重组成为新特征

    事实上以上韩梅梅母女俩完毕了一次特征的拆分与重组过程。详细图演示样例如以下:

    特征拆分重组

    这里用“潜帅德”表示韩梅梅对“品格端正、气度不凡、踏实肯干的潜力股”的特征的描写叙述。

    特征进行拆分与重组的过程在特征project中常常出现。由于当你对特征与标签的相关性有定量的评估方法后,会筛选出那些不那么显著的特征(如本例中的“是否高富帅”)。然后去分析考核指标这么低的原因,启示你引入新的特征(如本例中的“是否品德良好”、“是否有潜力”)将原有特征拆分重组,可能会有更好的效果。

    而这些生成的新特征。又要经过特征有效性分析来终于评估。如此重复迭代。

    10. 特征有效性分析

    新特征条件概率

    我们用X2来表示新特征,与上面的思路相似,我们计算X2的平均互信息:

    IY,X2=HYH(Y|X2)=0.03114

    与之前的平均互信息IY,X=0.01230比起来,有了显著提高。可见新特征X2比之前的特征X更有效。

    11. 剧情四:韩妈妈给名单分级

    在跟韩梅梅聊完之后,韩妈妈转念一想:“为什么非要有一份相亲名单?能够把这12个人再分成两类,第一类是高富帅的。先相亲。

    这些认为不合适后再考虑剩下的10个人啊。

    12. 特征有效性分析

    X3

    我们继续分析,用X3来表示新特征。与上面的思路相似。我们计算X3的平均互信息:

    IY,X3=HYH(Y|X3)=0.03593

    与之前的平均互信息IY,X2=0.03114比起来,又有了一定的提高。

    可见新特征X3比之前的特征X2更有效。

    韩妈妈真是为女儿的相亲操碎了心。

    13. 剧情五:韩妈妈问计赵媒婆

    韩妈妈思索完之后抑制不住内心的兴奋,想找人倾诉。这时她正好在路上碰见了赵媒婆。赵媒婆在韩妈妈的老闺蜜圈中享有盛誉,相亲非常有经验。

    赵媒婆听了韩妈妈的诉说后,微微一笑,说:“你这个名单不够专业。”韩妈妈大为诧异。赵媒婆继续说:“高、富、帅三个特征本来就是相互独立的三个特征,你硬生生地绑在一起,多少大好青年被你给甩掉了。

    后面的潜力股啊、人品端正啊什么的都相似。”韩妈妈恍然大悟:“真是这样啊。

    赵媒婆说:“事实上你这里最大的问题是这些特征的评估都是拍脑袋决定。没有充分的现实数据做支撑,非常可能会犯错误的。”韩妈妈暗暗点头,心生佩服。

    赵媒婆接着说:“另一个问题,你准备了两份名单,也就是把人群分成了三份,你算平均互信息仅仅能评价总体的,详细到每一份人群你怎么对他们评价?”韩妈妈想了想,说:“我们能够直接用相对于某个详细条件的信息熵啊。”赵媒婆说:“何苦这么麻烦呢?”

    韩妈妈听她话里有话。打算继续问下去。

    14. 评价特征选项的两个方法

    在赵媒婆最后一个问题中,韩妈妈所说的事实上是能够计算下面三个值来评估详细的特征选项:

    • H(Y|X3=)
    • H(Y|X3=)
    • H(Y|X3=)

    而这三个值在之前计算条件熵H(Y|X3)的过程中就已经计算出来了。

    所以比較起来应该非常方便。

    事实上更简单的方法用他们相对于所须要标签的后验概率评价。例如以下图红色的部分。比較大小就能够找出评价较好的特征。

    X3

    显然“高富帅德”的评分最高(0.25)。“潜帅德”的评分次之(0.05),“不是高富帅德且不是潜帅德”评分最差(0)。

    符合韩妈妈的预期。

    然而,赵媒婆的想说的并非这个方案,而是逻辑回归……

    15. 剧情六:赵媒婆的数据库

    赵媒婆不等韩妈妈说话,就直接拿出了自己的神器:一个平板电脑。然后打开她的相亲数据库,点了点鼠标,一张巨大的表展现出来。韩妈妈目瞪口呆:“如今媒婆都用高科技了?”赵媒婆傲娇地说:“那是。

    这张大表是她这么多年来全国各地相亲介绍的全部男生信息。分别标注了每一个男生的升高、年龄、年薪、长相特点、教育经历、工作经历、是否海归、工作年限、工作公司、工作地点、出身地、是否有户口、是否公务员、详细职业、行业、性格倾向等等信息。

    她另一张女生信息表,另外一张男生女生相亲情况表(相亲成功、相亲不成、继续发展、未接触)。媒婆一一给韩妈妈解释这些信息。韩妈妈连连惊呼。

    赵媒婆接着说道:“我们能够从里面找出跟你女儿情况相近的一些女生信息。再把跟她们相过亲的男生找出来。把当中相亲成功的归为一类,剩下的归为另一类。然后假设男生的每一个特征对相亲成功都有贡献,贡献的权重为wi。我们用逻辑回归的方法能够求出这些权重,把这些权重大的特征挑出来。你再用它们来找女婿就方便了。”

    韩妈妈说:“逻~辑~什么?”赵媒婆说:“高科技了。你不懂的。

    只是给我干儿子写了个博客来介绍。你能够看看。

    16. 特征筛选与特征project工作流

    呃,我们什么时候成赵媒婆的干儿子了?先不管这些。逻辑回归并非什么高科技。在前面的文章里已有简单的解释。

    我们在这里就补充说明一下为什么能够用权重来衡量特征的贡献。下面是一个典型的逻辑回归过程:

    逻辑回归

    我们期望P(z)的概率越大越好,sigmoid函数是个单调递增函数,所以z越大越好,在全部特征都归一化的前提下。显然是权重wi越大越好。因此与wi相应的特征就是我们要寻找的显著特征。而那些权重小的特征就能够先不考虑了。

    这就完毕了一个最简单的特征筛选的过程。

    当然,这里所说的权重大能够指的是权重的绝对值非常大,比方特征“富”的权重是-100,是一个非常小的数。但这也就意味着“不富”的权重会非常大。以至于显著影响我们的z的结果。所以这也是一个显著特征。

    须要补充一下的是。在project实践中,权重的幅度和正则化也有关系。L1正则化会把特征拉稀疏。会产出一部分0特征。而不是0的那些特征。是有作用的特征。所以L1正则化事实上具备一定的特征选择(feature selection)的作用。尤其是非常高维空间的feature。用L1正则化。事实上能帮助做一下feature selection的。而L2正则化,则会把各个维度的权重拉平均一些,抑制住各个维度权重幅度的方差。

    可是抑制归抑制,最后的权重还是会有大小差异,就像上文说的,绝对值大的权重。相应的特征区分度好一些。

    对于那些不够显著的特征,我们须要分析一下这个特征的详细情况是如何,是否须要对其进行又一次拆分与重组,拆分重组后新的特征又能够进行特征有效性分析。如此不断迭代重复。就能够挑选出比較理想的特征了。

    我们用下面整个工作流大致展现这个过程

    由于非常多内容没有展开。我们先把名字写进去,在兴许的文章中继续扩展。


    工作流

    17. 剧情七:韩妈妈新名单尘埃落定

    在韩妈妈与赵媒婆的尽心鼓捣下,终于生成了一个仅仅有4个人的相亲名单。当中仅仅剩下一名高富帅,另外三人中有一人正是李雷。

    韩妈妈拿着新名单给女儿看,韩梅梅沉默半晌。心想李雷在四人名单中怎么也能存在,莫非这也是缘分?

    18. 小结

    本文中主要讲了一些特征有效性分析的方法,包含用互信息,平均互信息。条件熵,后验概率,逻辑回归权重等方法对特征与标签的相关性进行了评估。有了这些评估做基础,能够筛选出显著的特征。并对对不显著的特征进行分析、拆分和重组。终于形成新的特征并重复迭代。本文略过了一些特征预处理的方法,并对特征有效性评估的阐述不够充分。我们将在接下来的文章中予以讨论。

  • 相关阅读:
    常见的MYSQL高可用解决方案
    CDN——到底用还是不用?
    Maven学习总结
    Git – Fast Forward 和 no fast foward
    Spring boot 打成jar包问题总结
    Spring Data JPA进阶——Specifications和Querydsl
    Arp攻击实战
    crontab命令
    mtr命令
    如何使用qperf来衡量网络带宽和延迟性能?
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7089569.html
Copyright © 2011-2022 走看看