(Ordinary Least Squares)基于均方误差最小化来进行模型求解的方法称为最小二乘法。普通最小乘法线性回归就是最小化预测值与真实值的差的平方这个目标函数。
>>> from sklearn import linear_model
>>> clf = linear_model.LinearRegression()
>>> clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)
>>> clf.coef_
array([ 0.5, 0.5])
>>> clf.intercept_
1.11022302463e-16
主要函数
时间复杂度
岭回归其实就是在基本线性回归的基础上引入了正则化项L2范数,引入正则化有助于降低过拟合风险。
>>> from sklearn import linear_model
>>> clf = linear_model.Ridge (alpha = .5)
>>> clf.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None,
normalize=False, random_state=None, solver='auto', tol=0.001)
>>> clf.coef_
array([ 0.34545455, 0.34545455])
>>> clf.intercept_
0.13636...
参数解读:Ridge(alpha=1.0, fit_intercept=True, normalize=False, copy_X=True, max_iter=None, tol=0.001, solver=’auto’, random_state=None)[source]括号里都是默认值。
特殊Attributes:n_iter_ 表示每个样本迭代的次数,只有sag和 lsqr才有,其他的是None。
时间复杂度
该方法就是内置了交叉验证的岭回归。
>>> from sklearn import linear_model
>>> clf = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0])
>>> clf.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1])
RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None,
normalize=False)
>>> clf.alpha_
0.1
套索回归和前面的岭回归类似,只不过套索回归采用的是L1范数。L1正则是laplace先验,L2是高斯先验,L1范数的一个好处是求得的解中w会有更少的非零分量(更稀疏的解)。
它倾向于用更少的参数来解决问题,如果预测的一组变量是高度相关的,Lasso 会选出其中一个变量并且将其它的收缩为零,通过这种方法有效的减少了参数。
>>> from sklearn import linear_model
>>> clf = linear_model.Lasso(alpha = 0.1)
>>> clf.fit([[0, 0], [1, 1]], [0, 1])
Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000,
normalize=False, positive=False, precompute=False, random_state=None,
selection='cyclic', tol=0.0001, warm_start=False)
>>> clf.predict([[1, 1]])
array([ 0.8])