1.过拟合问题(Overfitting)
问题:如下图三,如果特征非常多,可以拟合出一个非常复杂并适合训练集的函数,但是对于新数据却基本上失去了分类功能。也即:x次数越高,拟合得越好,但是相应的预测能力也变差,比如 回归问题:
如分类问题:
解决方案:
*丢弃一些不要的特征.可以手工选择,也可以选择一些模型选择算法(例:PCA)
*正则化。也即保持特征,减小参数大小。
2.代价函数
问题:我们的模型是,正是这些高次项导致了过拟合
解决:减小高次项的参数,用来惩罚高次项。
修改代价函数:这样子就能尽可能惩罚高次项。但另一个问题就是:我们并不知道要选哪一个参数来惩罚。所以我们进一步对代价函数进行优化
正则化参数:选择不同的正则化参数会有不同的结果,正则化参数选小了会导致过拟合,正则化参数选太大,会导致模型变成:,如下图所示
3.线性回归的正则化
线性回归的代价函数为:
正则化梯度下降算法:
利用正规方程来优化线性回归模型:
4.逻辑回归
逻辑回归的模型假设:
正则化代价函数:
python代码:
import numpy as np
def costReg(theta,Xy,learningRate):
theta =np.matrix(X)
X = np.matrix(theta)
y = np.matrix(y)
first =np.muitiply(-y,np.log(sigmoid(X*theta.T)))
second = np.multiply(1 - y),mp.log(1 - sigmoid(X*theta.T)))
reg = (learningRate / (2 * len(X))* np.sum(np.power(theta[:,1:theta.sgape[1]],2))
return np.sum(first - second)/(len(x)) +reg
梯度下降算法: