AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


【AI】【特征选择】独立性评估来Get
发布日期:2024-06-07 06:09:44 浏览次数: 1663 来源:毛毛Post


在上次的spark分析中,我遇到一个问题就是数据预处理,用决策树思维做了特征feature的重要性评估,后续还做了指标间是否独立的验证!今天针对指标间是否相关,即特征选择部分做个快速探索实践来Get!


看效果


这个值按照0.05显著水平,自由度是(6-1)(11-1)= 50,查询的临界值是68.667;而我们计算的卡方统计量大于68.667,则拒绝原假设,即品类和价格是有关联的,不是独立的!


如上下是转了编码后的数据,问题是判断品类、颜色是否存在关联!


话原理


好的,在验证变量的关联性上,我们关注几个点


1)变量是否是连续变量


如上的品类、颜色就不是连续变量,我们认为是分类变量


什么是连续变量?


数值型变量:比如表示某种数量、大小或程度,如身高、体重、温度、时间


时间型变量:它可以被细分为无限个单位


距离型变量:两个地点之间的距离可以被精确地测量


比率型变量:比率、百分比、持续时间等


2)评估方法


卡方分析(平方和):可以用户评估2个分类变量关联程度或独立性,为什么?


因为分类变量是乱序的,他编码后为1或2,并不代表这个特征的数值大小!而卡方分布是通过统计频数,和数值的大小无关!【需要理解】


方差分析:可用于评估比较组别之间的平均值是否关联或独立性


相关系数:用户评估2个连续连续变量关联程度,为什么?


因为分类变量是乱序的,他编码后为1或2,并不代表这个特征的数值大小!而相关系数是通过数值大小趋势来判断的,所以不能用于两个分类变量去评估独立性!如果一个是连续变量,一个是分类的,则用相关系数来评估


3)卡方分析(平方和)


Chi-square test,其中Chi是指χ,有读卡,凯,柴等


卡方检验(Chi-square test)是一种用于评估两个分类变量之间的关联性的统计方法。它的基本思想是比较观察到的频数和期望的频数之间的差异,从而确定这两个变量是否独立。


1. 建立假设:


零假设(H0):两个分类变量之间不存在关联,即它们是相互独立的。


备择假设(H1):两个分类变量之间存在关联,它们不是相互独立的。


2. 计算期望频数:


首先,对每个分类变量进行计数,得到它们在样本中出现的频数。


然后,计算每个分类变量组合的期望频数,这是在零假设成立的情况下,我们期望在每个组合中观察到的频数。期望频数的计算基于样本中的总体比例和每个分类变量的边际频数。


3. 计算卡方统计量:


4. 判断关联性:


最后,通过卡方统计量的大小和对应的显著性水平(通常是显著性水平为0.05),来决定是否拒绝零假设。


如果卡方统计量大于临界值,则拒绝零假设,认为两个分类变量之间存在显著的关联。


如果卡方统计量小于临界值,则无法拒绝零假设,不能得出两个分类变量之间存在关联的结论


1)显著性水平为0.05如何理解?


在零假设成立的情况下进行多次统计,大约会有5%的检验结果和零假设相矛盾


可以理解,如果设置为0.01,则检验结果的置信度会更高即为99%


2)自由度如何理解?


自由度大,则在计算期望频数时粒度更细,更容易接近观察频数,卡方统计量的值也越小,从而表明两个变量之间的关联性越弱!


$(r-1) \times (c-1)$,其中$r$为行数,$c$为列数


3)卡方统计量大于临界值,要拒绝零假设【如何理解】


表示我们观察到的频数和期望频数之前是存在显著差异的,不能归因为随机误差或抽样误差


假设我们正在研究男女性别与对某种产品的购买偏好之间的关联性。我们收集了以下数据:


A 观察到的频数(Observed Frequencies):


| 购买 | 不购买


---------|------|--------


男性 |  30  |   20   


女性 |  40  |   10   


B 期望频数是在零假设成立的情况下,每个单元格的预期频数。在这种情况下,如果性别与购买偏好是独立的,我们可以根据行列边际总计和总样本量来计算期望频数。


首先,计算行和列的边际总计:


| 购买 | 不购买 | 总计


---------|------|--------|------


男性 |  30  |   20   |  50


女性 |  40  |   10   |  50


总计 |  70  |   30   | 100


然后,计算每个单元格的期望频数。以男性购买为例:


期望频数 = (男性总计 × 购买总计) / 总样本量 = (50 × 70) / 100 = 35


来实践


1、准备数据


2、pyhon代码如下


import pandas as pdfrom scipy.stats import chi2_contingency# 读取CSV文件data = pd.read_csv('purchase.csv')# 提取特征和目标变量X = data[['品类']] # 品类y = data['颜色'] # 颜色# 定义一个函数来计算卡方统计量def calculate_chi2(feature, target):contingency_table = pd.crosstab(feature, target)chi2, _, _, _ = chi2_contingency(contingency_table)return chi2# 计算每个特征与目标变量之间的卡方统计量chi2_scores = {}for feature_name in X.columns:chi2_score = calculate_chi2(X[feature_name], y)chi2_scores[feature_name] = chi2_score# 打印结果print("品类与颜色之间的卡方统计量:")for feature_name, score in chi2_scores.items():print(f"{feature_name}: {score}")


写在最后


好几天没锻炼了,回头想感觉不在状态!Q2已来,快速调整,加油!



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询