在看完大佬们写的几篇很有启示的文章后,链接:机器学习中常常提到的正则化到底是什么意思?www.zhihu.comElasticNet回归及机器学习正则化_人工智能_曾时明月-CSDN博客blog.csdn.net
以下为个人对正则化Regularization是what, how to apply, where its come from, and its code 的拙见。
如果有理解的不对的地方,请您指出,感谢您的阅读!
谈论正则化Regularization分为四个部分。
一、用途;二、概念;三、由来原因;四、Python实现。
在第三部分内打算从多角度分析正则化的由来。(从经验风险、期望风险、结构风险的角度;从范数norm的角度;及从几何解释选择一项范数、二项范数。)
一、用途
正则化Regularization主要用来防止overfitting。
下面举例会发生的一些模型评估情况:比如在KNN(K-Nearest Neighbors)中,单纯用knn.score作模型评估会忽视样本不平衡情况,导致评估正确率不准确。用代码knn.score得到是分子除以分母的形式:
。
这种测评model方法并不完美。因为有可能发生一种情况:不平衡样本比例,导致错评model。比如判断垃圾邮件分类,一共有100个测试数据集,只有5个是垃圾邮件。正确率有95%,即使无法判断垃圾邮件(预测有100%的正确率)与实际正确率也相差不大。可以采用confusion matrix 方法。(PS: 下一篇,会写各种评估模型性能的方法。)
2. 比如在线性回归Linner Regression 中,可以用代码.score得到,是R squared衡量X与y相关性,它评价你选择的线性模型合适与否。如果R squared偏小,说明特征X的weight比重较小,还有其他的特征没有考虑进去。另外也可以采用均方根误差(RMSE)作为评价回归模型的另一个常用指标。
Train/test split for regression
Train/test split for regression
# Import necessary modules
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np
from sklearn.metrics import mean_squared_error
# Create training and test sets
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=42)
# Fit the regressor to the training data
reg_all=LinearRegression()
reg_all.fit(X_train,y_train)
# Predict on the test data: y_prediction
y_prediction=reg_all.predict(X_test)
# Compute and print R^2 and RMSE
print("R^2:{}".format(reg_all.score(X_test,y_test)))
rmse=np.sqrt(mean_square