人工智能概念之一:机器学习基础概念(距离计算方法、归一化和标准化、交叉验证和网格搜索)

一、 距离计算方法

在机器学习中,距离计算是一个非常重要的概念,它用于衡量样本之间的相似性。常见的距离计算方法有以下几种:

  • 欧式距离:两个样本间所有维度差的平方和再开方。公式表示为:对于两个样本 x = ( x 1 , x 2 , ⋯   , x n ) x=(x_1,x_2,\cdots,x_n) x=(x1,x2,,xn) y = ( y 1 , y 2 , ⋯   , y n ) y=(y_1,y_2,\cdots,y_n) y=(y1,y2,,yn),欧式距离 d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x,y)=\sqrt{\sum_{i = 1}^{n}(x_i - y_i)^2} d(x,y)=i=1n(xiyi)2

  • 曼哈顿距离:两个样本间所有维度差的绝对值相加。公式为: d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x,y)=\sum_{i = 1}^{n}|x_i - y_i| d(x,y)=i=1nxiyi

  • 切比雪夫距离:两个样本间所有维度差的最大值。即 d ( x , y ) = max ⁡ i = 1 n ∣ x i − y i ∣ d(x,y)=\max_{i = 1}^{n}|x_i - y_i| d(x,y)=maxi=1nxiyi

二、 归一化和标准化

在处理数据时,为了让机器学习算法效果更好,常常需要对数据进行预处理。常见的预处理方法有归一化和标准化。

  • 2.1 归一化

    • 方法:导入sklearn.preprocessing里的MinMaxScaler,创建归一化对象,分别对x_trainx_test使用fit_transformtransform

    • 作用:通过对原始数据进行变换把数据映射到【mi,mx】(默认为 [0,1]) 之间。

    • 公式 X scaled = X − X min X max − X min X_{\text{scaled}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} Xscaled=XmaxXminXXmin

      其中, X min X_{\text{min}} Xmin X max X_{\text{max}} Xmax分别为特征的最小值和最大值。

    • 适用场景:适用于数据分布不呈正态、存在明显边界或对输入范围敏感的场景。

from sklearn.preprocessing import MinMaxScaler
import numpy as np

# 示例数据
X = np.array([[1, 2], [3, 4], [5, 6]])
scaler = MinMaxScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)
  • 2.2 标准化

    • 方法:导入sklearn.preprocessing里的StandardScaler,创建标准化对象,分别对x_trainx_test使用fit_transformtransform

    • 作用:通过对原始数据进行标准化,转换为均值为 0 标准差为 1 的标准正态分布的数据。

    • 公式 X scaled = X − μ σ X_{\text{scaled}} = \frac{X - \mu}{\sigma} Xscaled=σXμ

      其中, μ \mu μ为特征的均值, σ \sigma σ为特征的标准差。

    • 适用场景:适用于数据分布接近正态分布或存在离群点的场景。

from sklearn.preprocessing import StandardScaler
import numpy as np

# 示例数据
X = np.array([[1, 2], [3, 4], [5, 6]])
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
print(X_scaled)

三、 交叉验证和网格搜索

  • 交叉验证:是划分数据集的一种方法,目的是为了得到更加准确可信的模型评分,评估模型在未知数据上的表现,避免一次划分数据造成的偶然性。

  • 网格搜索:能够自动寻找最优的超参数组合,它枚举所有指定的超参数组合,并返回验证得到的最优组合。两者结合形成一个模型参数调优的解决方案,用于模型开发阶段的调参优化,提高泛化能力。

from sklearn.model_selection import GridSearchCV, cross_val_score​
from sklearn.neighbors import KNeighborsClassifier​
from sklearn.datasets import load_iris​
import numpy as np​
​
# 加载数据集​
iris = load_iris()​
X = iris.data​
y = iris.target​
​
# 定义参数网格​
param_grid = {'n_neighbors': np.arange(1, 20)}​
​
# 创建KNN分类器​
knn = KNeighborsClassifier()​
​
# 创建网格搜索对象​
grid_search = GridSearchCV(knn, param_grid, cv=5)​
​
# 进行网格搜索​
grid_search.fit(X, y)​
​
# 输出最优参数​
print("Best parameters: ", grid_search.best_params_)
为了在机器学习模型训练中平衡偏差方差,并选择最优模型,归一化交叉验证技术的结合使用至关重要。首先,归一化通过调整数据特征的尺度来消除不同量纲对模型的影响,从而提高模型训练的稳定性效率。归一化方法包括最小-最大归一化、z-score标准化等,能够使模型更好地适应数据特征的尺度,避免梯度下降等优化算法在训练过程中过早收敛或收敛速度过慢。 参考资源链接:[机器学习面试必备:归一化与偏差/方差解析](https://wenku.youkuaiyun.com/doc/7m0y64z294?spm=1055.2569.3001.10343) 在模型选择过程中,交叉验证提供了一种评估模型泛化能力的有效手段。常用的交叉验证方法有k折交叉验证,其中k的值根据数据集的大小来设定,比如10折交叉验证。在交叉验证过程中,数据集被分为k个部分,每次使用k-1部分作为训练集,剩下的部分作为验证集。重复k次,每次选择不同的验证集,然后计算k次验证过程中的平均性能,作为模型的性能指标。 结合归一化交叉验证来平衡偏差方差时,我们可以采取以下步骤:首先,对数据集应用归一化处理,确保所有特征都在相同的尺度上。然后,进行k折交叉验证,同时尝试不同复杂度的模型,观察在不同验证集上的性能表现。通过比较不同模型在验证集上的均方误差(MSE)或其他性能指标,可以评估模型的偏差方差水平。如果一个模型在训练集上的误差远小于验证集上的误差,说明模型可能发生了过拟合,即方差较高;反之,如果两者都高,可能是因为模型过于简单,即偏差较高。 在实际操作中,可以使用网格搜索(GridSearchCV)等技术,结合交叉验证来优化模型的超参数,包括归一化过程中的参数,以及正则化项的系数λ等。通过这种方式,可以在不同λ值下训练模型,并选择交叉验证误差最小的模型作为最优模型,从而在偏差方差之间取得平衡。 为了更深入地理解这一过程,推荐阅读《机器学习面试必备:归一化与偏差/方差解析》,这份资源详细解释了归一化与偏差/方差理论,并提供了实用的示例,帮助你在面试或实际工作中更好地应用这些概念。 参考资源链接:[机器学习面试必备:归一化与偏差/方差解析](https://wenku.youkuaiyun.com/doc/7m0y64z294?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值