关联规则&&独热编码

文章目录

        • 关联规则
          • 引言
          • 相关名词
        • 独热编码
          • 引言
          • 代码
            • 第一种
            • 第二种

关联规则

引言

在一家超市里,有一个有趣的现象:尿布和啤酒竟然摆在一起出售。但是这个奇怪的举措却使尿布和啤酒的销量双双增加了。

一个意外的发现是:”跟尿布一起购买最多的商品竟是啤酒!经过大量实际调查和分析,揭示了一个隐藏在“尿布与啤酒”背后的美国人的一种行为模式:在美国,一些年轻的父亲下班后经常要到超市去买婴儿尿布,而他们中有30%~40%的人同时也为自己买一些啤酒。产生这一现象的原因是:美国的太太们常叮嘱她们的丈夫下班后为小孩买尿布,而丈夫们在买尿布后又随手带回了他们喜欢的啤酒。

**关联规则(Association Rules)**是反映一个事物与其他事物之间的相互依存性和关联性,是数据挖掘的一个重要技术,用于从大量数据中挖掘出有价值的数据项之间的相关关系。

相关名词
  1. 支持度(support)

支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。例如,“牛奶 + 面包”出现了 3 次,那么这 5 笔订单中“牛奶 + 面包”的支持度就是 3/5=0.6。

  1. 置信度(confidence)

置信度是个条件概念,就是说在 A 发生的情况下,B 发生的概率是多少。即就是当你购买了商品 A,会有多大的概率购买商品 B。例如,置信度(牛奶→啤酒)=2/4=0.5,代表如果你购买了牛奶,有50%的概率会购买啤酒。

  1. 提升度(lift)

提升度代表的是“商品 A 的出现,对商品 B 的出现概率提升的”程度。计算公式如下:提升度 (A→B)= 置信度 (A→B)/ 支持度 (B)
所以提升度有三种可能:
(1)提升度 (A→B)>1:代表有提升;
(2)提升度 (A→B)=1:代表没有提升,也没有下降;
(3)提升度 (A→B)<1:代表有下降。

独热编码

(One-Hot Encoding)

引言

独热编码出现之前:针对无序离散的分类特征,机器学习算法的分类器并不能直接进行数据处理。因为,分类器通常处理的数据是连续且有序的。

独热编码即 One-Hot 编码,又称一位有效编码。其方法是使用 N位 状态寄存器来对 N个状态 进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效,即只有一位是1,其余都是零值

例如对4种状态进行编码:

自然顺序码为:00,01,10,11

独热编码为:0001,0010,0100,1000

按照 N位状态寄存器 来 对N个状态 进行编码的原理,处理后应该是这样的

性别特征:[“男”,“女”](N=2 二维数据)
男 => 10
女 => 01

地区特征:[“北京”,"上海,“深圳”](N=3,三维数据):
北京 => 100
上海 => 010
深圳 => 001

运动特征:[“足球”,“篮球”,“羽毛球”,“乒乓球”](N=4):

足球 => 1000

篮球 => 0100

羽毛球 => 0010

乒乓球 => 0001

当一个样本为 [“男”,“上海”,“足球”] 的时候,独热编码(One-Hot Encoding)的结果为:

[1,0,0,1,0,1,0,0,0]

代码
第一种
from sklearn import preprocessing  
   
enc = preprocessing.OneHotEncoder()  
enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])  # 训练。这里共有4个数据,3种特征
   
array = enc.transform([[0,1,3]]).toarray()  # 测试。这里使用1个新数据来测试
   
array ##输出  array([[1., 0., 0., 1., 0., 0., 0., 0., 1.]])

总共有三个特征,

第一个特征有两类[0,1]表示成10,01

第二个特征有三类[0,1,2]表示成100,010,001

第三个特征有四类[0,1,2,3]表示成1000,0100,0010,0001

第二种
encoder = preprocessing.OneHotEncoder()
encoder.fit([
    [0, 2, 1, 12],
    [1, 3, 5, 3],
    [2, 3, 2, 12],
    [1, 2, 4, 3]
])
encoded_vector = encoder.transform([[2, 3, 5, 3]]).toarray()
encoded_vector

4个特征:
第一个特征将3类特征值[0,1,2]表示为[100,010,001]
第二个特征将2类特征值[2,3]表示为[10,01]
第三个特征将4类特征值[1,2,4,5]表示为[1000,0100,0010,0001]
第四个特征将2类特征值[3,12]表示为[10,01]

区别就是第二种的特征值是随机的

你可能感兴趣的:(人工智能,人工智能,机器学习)