机器学习算法: 岭回归算法

岭回归算法简述

岭回归算法的出现, 最终目标是在欠拟合过拟合的算法中,找到的一种折中的解决方案.欠拟合的函数如y = k1x + k2x^2 + ... + knx2 , 都是低次幂的简单线性方程的组合. 而过拟合的函数如: y = k1x^2 + k2x^3 + ... + knx^n 有很多高次幂的复杂线性方程的组合. 要在两者之间找一个折中的解决方案, 就是岭回归算法. 岭回归算法会将过拟合的高次幂函数正则化, 从而得到折中的曲线.

欠拟合 欠拟合是指抽取特征太少, 导致训练正确率低, 模型预判的损失大.比如: 将长嘴, 白色, 鸟类三个特征视为天鹅, 结果会误把鸭子也判定为天鹅


过拟合 过拟合是指抽取特征太多, 训练时正确率高, 实际预测时正确率低. 比如: 训练时外形2字形, 白色, 长嘴, …其他许多天鹅特征. 结果用模型实际预判时, 遇到黑色天鹅不认为那是天鹅.


正则化 正则化是指将高次幂函数中的高次幂削减为低次幂的操作. 正则化分为L1正则化L2正则化 L1 正则化是指直接将高次幂系数置为0, 从而消除高次幂. L2正则化是指将高次幂系数换为一个无限接近于0的系数, 从而降低高次幂对整个线性回归过程的影响.

代码示例

使用岭回归算法计算波士顿房价

# 导入波士顿房价数据集
from sklearn.datasets import load_boston
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
# 导入岭回归算法估计器
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error

# 准备数据集
lb = load_boston()
x = lb.data
y = lb.target

# 数据分割
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

# 特征工程: 归一化预处理
mm = MinMaxScaler(feature_range=(0, 1))
x_train = mm.fit_transform(x_train)
x_test = mm.transform(x_test)

# 使用岭回归估计器计算模型
rd = Ridge(alpha=1)
rd.fit(x_train, y_train)

# 获取回归系数和偏置
k = rd.coef_
b = rd.intercept_

# 计算损失
y_pred = rd.predict(x_test)
print(y_pred[0])
error = mean_squared_error(y_test[:1], y_pred[:1])

print("损失: ", error)

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