逻辑回归是怎么防止过拟合的?为什么正则化可以防止过拟合?
逻辑回归是通过正规化防止过拟合的。
在训练数据不够多时,常常会导致过拟合。L2正则化就是在代价函数后面再加上一个正则化项:
C0代表原始的代价函数,后面那一项就是L2正则化项, 过拟合的时候,拟合函数的系数往往非常大。所有参数w的平方的和,除以训练集的样本大小n。λ就是正则项系数,权衡正则项与C0项的比重。另外还有一个系数1/2,1/2经常会看到,主要是为了后面求导的结果方便,后面那一项求导会产生一个2,与1/2相乘刚好凑整。所以正规化通过约束参数的范数使其不要太大,所以在一定程度内可以减少过拟合。
用logiftic回归来进行实践操作,数据不限。
import pandas as pd from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report # 数据读取与预处理 data = pd.read_csv('201706120017赖志豪.csv') x = data.iloc[:,1:] y = data.iloc[:,0] x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=6) # 构建逻辑回归模型 LR_model = LogisticRegression() # 训练模型 LR_model.fit(x_train,y_train) # 预测模型 pre = LR_model.predict(x_test) print('模型的正确率:',LR_model.score(x_test,y_test)) print('输出模型的分类报告:\n',classification_report(y_test,pre))