分析建模,日常问题整理(十一)
2018.10.8~2018.10.14
热爱生活,品味细节
- 1 Dummy Variable & One-Hot Encoding
如果不使用regularization(正则化),one-hot encoding的模型会有多余的自由度。这个自由度体现在你可以把某一个分类型变量各个值对应的权重都增加某一数值,同时把另一个分类型变量各个值对应的权重都减小某一数值,而模型不变。在dummy encoding中,这些多余的自由度都被统摄到intercept里去了。这么看来,dummy encoding更好一些。
如果使用regularization(正则化),regularization就能够处理这些多余的自由度。此时,可能用one-hot encoding更好,因为每个分类型变量的各个值的地位就是对等的了。
以线性模型举例, 分类超平面是 wx+b =0,dummy下的话 w 有唯一解,one-hot 下 w 有无穷解 (就是一部分权重增加点,另一部分权重减少点),这样每个变量的权重就没有解释意义了,也使得模型没有真正的预测效果。加了正则化之后,相当于约束了 w 的解空间,使得 w 相对有意义
- 2 seaborn.pairplot seaborn.facetgrid
pairplot 可以输出多个数值型变量两两之间的相关散点图,对角线为自变量的分布图。
左下角和右上角为对称关系。
sns.set(style="ticks", color_codes=True)
g = sns.pairplot(df[['a','b','c']],diag_kind="kde") # 直方图
g = sns.pairplot(df[['a','b','c']],diag_kind="kde") # 分布曲线
g = sns.pairplot(df[['a','b','c']], hue="e") # 指定分类变量
g = sns.pairplot(iris, kind="reg") # 使用回归
facetgrid 可以输出多个变量的叠加图
- 具有多个轴,各个轴的变量相同
2.随着某些变量的变化,轴变量关系的变化情况。
3.可展示三个变量的条件关系,将其中的变量赋值给网格的行和列,并使用不同颜色的绘图元素。
row , col , hue都是分类变量,map是连续变量。
h = sns.FacetGrid(data1, row = 'Sex', col = 'Pclass', hue = 'Survived')
h.map(plt.hist, 'Age', alpha = .75)
h.add_legend()
输出对比不同性别、不同Pclass条件下Survived等于0和等于1的年龄分布。
plt.hist可以换成plt.scatter/ sns.kdeplot等其他制图函数。
数据分析除了分析单变量,还要分析变量之间的相关性,分析变量两两之间的特性,或者三个变量之间的相关性。
- 3 正则化的作用
防止过拟合
权衡欠拟合的高偏差和过拟合的高方差,拟合能力与泛化能力、经验风险(平均损失函数)与结构风险(损失函数+正则化项)
有助于处理高条件数矩阵求逆很困难的问题
正则化项会自动对自变量或特征的系数参数进行惩罚,令某些特征或自变量的参数(权重系数)为0或接近于0。因此产生稀疏性,有利于特征选择和提高结果解释性。
详细说明