29 | 归一化和标准化:各种特征如何综合才是最合理的?
该思维导图由 AI 生成,仅供参考
为什么需要特征变换?
- 深入了解
- 翻译
- 解释
- 总结
特征值的变换在机器学习中扮演着重要角色。本文介绍了特征变换的必要性,以及针对连续型数值特征的两种常见变换方法:归一化和标准化。文章以线性回归算法为例,解释了为什么需要对数值型特征进行变换。作者通过使用Boston Housing数据集进行回归分析,展示了线性回归模型的拟合效果,并强调了不同字段数据的可比性问题。文章详细介绍了多元线性回归的基本形式,并通过代码演示了模型拟合和系数输出。最后,作者介绍了归一化和标准化这两种常见的特征变换方法,以解决不同类型特征值不可比性的问题。通过具体案例和技术原理,深入浅出地介绍了特征变换的重要性和常见方法,对于读者快速了解特征工程中的数值变换具有很高的参考价值。 文章首先介绍了归一化和标准化两种特征变换方法,分别通过最大最小值和标准正态分布来进行数值转换。作者通过Python代码演示了这两种方法对线性回归模型系数的影响,强调了标准化方法相对于归一化的优势。此外,文章还总结了特征值转换的必要性,以及归一化和标准化的优缺点,为读者提供了清晰的技术指导和实践建议。 总的来说,本文通过具体案例和技术原理,深入浅出地介绍了特征变换的重要性和常见方法,对于读者快速了解特征工程中的数值变换具有很高的参考价值。
《程序员的数学基础课》,新⼈⾸单¥68
全部留言(16)
- 最新
- 精选
- 拉欧标准化和归一化未必能提高模型的准确度,但是会提高可解释性,是不是这个意思?
作者回复: 是的。因为有些机器学习算法内部会根据输入数据自动调整值,所以对于算法效果而言,标准化和归一化不一定是必须的。
2019-02-209 - Joe之前做机器学习算法的时候,采用特征缩放处理特征,能有效提高学习收敛效果。公式:x’=(x-x_mean)/(xmax-xmin)。不是单纯的归一,也保留了不同类别x之间的权重。
作者回复: 也是一种可尝试的方法👍
2019-02-2727 - 灰太狼归一化和标准化在使用中分别适合什么场景呢
作者回复: 这是个好问题,最主要是和数据分布有关系。如果数据采样的分布接近于正态分布,建议Z分数标准化,让不同的数据组可比,否则建议归一化,将不同的数据统一到同样的区间便于处理
2020-03-2825 - 骑行的掌柜J黄老师终于讲了理论后 上代码了 😂不过黄老师 我还了解到有种叫PCA降维的方法 他跟标准化之间有联系吗?是需要先标准话再PCA降维?谢谢
作者回复: 巧了,我们之后会讲解PCA。虽然标准化不是PCA的必备预处理,但是通常我们还是会先进行标准化,再进行PCA降维。这是为了让不同的特征具有可比性,同时加速算法求解时的收敛速度
2020-06-113 - 追梦老师,这如果是部署到线上模型,这些预处理应该怎么变化呢
作者回复: 好问题,我想你说的线上模型是指某些机器学习中的predict或者叫scoring,就是指针对新的数据,进行分类或者回归的预测。可以根据线下训练数据的平均值和标准差来,如果新的数据远远超出了训练数据的均值和标准,可以看做outlier,根据合理的数值限制其范围
2020-01-123 - 大熊以前用归一的时候都没考虑噪音的影响,今天get到了,nice
作者回复: 很高兴对你有帮助
2019-05-233 - qinggeouye思考题: """ 测试数据集 test.csv 测试数据的目标值 submission_example.csv """ df_test = pd.read_csv("/Users/qinggeouye/Desktop/GeekTime/MathematicProgrammer/29_featureTrans/test.csv") expected_test = pd.read_csv("/Users/qinggeouye/Desktop/GeekTime/MathematicProgrammer/29_featureTrans" "/submission_example.csv")['medv'] # 归一化 预测结果 minMaxScaler_test = MinMaxScaler() df_test_normalized = minMaxScaler_test.fit_transform(df_test.astype(dtype=float)) df_test_features_normalized = df_test_normalized[:, :] predicted_normalized = regression_normalized.predict(df_test_features_normalized) print("归一化预测结果与实际值的均方根误差:%s" % np.sqrt(np.mean((predicted_normalized - expected_test) ** 2))) # 标准化 预测结果 standardScaler_test = StandardScaler() standardScaler_test.fit(df_test.astype(dtype=float)) df_test_standardized = standardScaler_test.transform(df_test.astype(dtype=float)) df_test_features_standardized = df_test_standardized[:, :] predicted_standardized = regression_standardized.predict(df_test_features_standardized) print("标准化预测结果与实际值的均方根误差:%s" % np.sqrt(np.mean((predicted_standardized - expected_test) ** 2))) # 预测结果,两种特征转换预测结果相差无几,但与实际值相差较大 归一化预测结果与实际值的均方根误差:22.40003520184502 标准化预测结果与实际值的均方根误差:22.785218713879576
作者回复: 确实,线性拟合程度不太好
2019-03-103 - 阿信特征值处理,能加快收敛速度、降噪、标准化输出,这种好理解。但为什么会影响分析结果
作者回复: 这要看具体的处理方式和模型,从处理方式的角度来看,有的时候特征工程可能会去掉一些不重要的特征,就会提升或者降低准确度。从模型的角度而言,有些比如线性回归模型需要量化地解释每个特征的重要程度,那么需要把不同特征统一化
2019-07-052 - Geek_a50e46老师,那是不是标准化就没有缺点了?是不是可以完全用标准化替代归一化了呢?
作者回复: 也不一定,如果样本量小的时候,可能归一化就够了。
2020-02-071 - 春节十二响我对特征标准化的理解是,初始的特征数据不是纯数字,而是有量纲的,直接进行运算会搞出类似5m+6kg这样逻辑意义错误的操作。所以特征标准化实现的第一个效果是去量纲,把特征变成纯数字;第二个效果就是把不同特征投射到相近的数量级上,好做比较,也避免一些算法需要计算距离时,某个特征占得权重过大
作者回复: 对,量纲的转换也是必要的
2021-04-07