最大似然估计
最小二乘法
梯度下降算法
高斯分布
利⽤回归⽅程(函数)对⼀个或多个⾃变量(特征值)和因变量(⽬标值)之间关系进⾏建模的⼀种分析⽅式。
目的:试图学的一个线性模型以尽可能准确低预测实值输出标记。
只有⼀个⾃变量的情况称为单变量回归,多于⼀个⾃变量情况的叫做多元回归。
根据已知的样本空间X,可以利用最小二乘法对线性回归方程中的w和b进行估计。
最小二乘法的形式:标函数(损失函数)=∑ (观测值 - 预测值)^2
线性回归的最小二乘法表示形式:
此处加上1/2是为了求导时消掉。
可以用正规方程(MLE+正规方程,最小二乘法的矩阵求解)或者梯度下降算法求解。
经典的线性回归API
linear_model.LinearRegression(*[, ...]) Ordinary least squares Linear Regression(普通最小二乘线性回归).
linear_model.Ridge([alpha, fit_intercept, ...]) Linear least squares with l2 regularization.
linear_model.RidgeCV([alphas, ...]) Ridge regression with built-in cross-validation.
linear_model.SGDRegressor([loss, penalty, ...]) Linear model fitted by minimizing a regularized empirical loss with SGD.
普通的最小线性回归通过正规方程优化。
class sklearn.linear_model.LinearRegression(*, fit_intercept=True, normalize='deprecated', copy_X=True, n_jobs=None, positive=False)
参数:
属性:
sklearn.linear_model.SGDRegressor(loss="squared_loss", fit_intercept=True, learning_rate ='invscaling', eta0=0.01)
SGDRegressor类实现了随机梯度下降学习,它⽀持不同的loss函数和正则化惩罚项来拟合线性回归模型。
参数:
loss:损失类型
- loss=”squared_loss”: 普通最⼩⼆乘法
fit_intercept:是否计算偏置
learning_rate : string, optional
- 学习率填充
- 'constant': eta = eta0
- 'optimal': eta = 1.0 / (alpha * (t + t0)) [default]
- 'invscaling': eta = eta0 / pow(t, power_t)
- power_t=0.25:存在⽗类当中
- 对于⼀个常数值的学习率来说,可以使⽤learning_rate=’constant’ ,并使⽤eta0来指定学习率。
属性:
coef_:回归系数
intercept_:偏置
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)
具有l2正则化的线性回归
alpha:正则化⼒度,也叫 λ
- λ取值:0~1 1~10 正则化⼒度越⼤,权重系数会越⼩
solver:会根据数据⾃动选择优化⽅法
- sag:如果数据集、特征都⽐较⼤,选择该随机梯度下降优化
normalize:数据是否进⾏标准化
- normalize=False:可以在fit之前调⽤preprocessing.StandardScaler标准化数据
Ridge.coef_:回归权重 Ridge.intercept_:回归偏置
Ridge⽅法相当于SGDRegressor(penalty='l2', loss="squared_loss"),只不过SGDRegressor实现了⼀个普通的随机 梯度下降学习,推荐使⽤Ridge(实现了SAG)
sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)
具有l2正则化的线性回归,可以进⾏交叉验证
coef_:回归系数
如何利用线性模型进行分类任务?
将实值转换成0、1,利用对数几率函数(一种sigmod函数)替代单位阶跃函数求解0,1的值。
Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。
引入sigmod函数:
利用梯度下降法或者牛顿法可以更快的收敛,求极值。
线性分类器
linear_model.LogisticRegression([penalty, ...])Logistic Regression (aka logit, MaxEnt) classifier.
linear_model.LogisticRegressionCV(*[, Cs, ...])Logistic Regression CV (aka logit, MaxEnt) classifier.
linear_model.PassiveAggressiveClassifier(*)Passive Aggressive Classifier.
linear_model.Perceptron(*[, penalty, alpha, ...])Linear perceptron classifier.
linear_model.RidgeClassifier([alpha, ...])Classifier using Ridge regression.
linear_model.RidgeClassifierCV([alphas, ...])Ridge classifier with built-in cross-validation.
linear_model.SGDClassifier([loss, penalty, ...])Linear classifiers (SVM, logistic regression, etc.) with SGD training.
linear_model.SGDOneClassSVM([nu, ...])Solves linear One-Class SVM using Stochastic Gradient Descent.
以逻辑回归分类器为例。
class sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)
Logistic回归(又名logit,MaxEnt)分类器。
在多类情况下,如果“multi_class”选项设置为“ovr”,则训练算法使用一对多(OvR)方案,如果“multi_class’”选项设置成“multinomial”,则使用交叉熵损失。(目前,“多项式”选项仅由“lbfgs”、“sag”、”saga“和”newton cg“解算器支持。)
此类使用“liblinear”库、“newton cg”、“sag”、“saga”和“lbfgs”解算器实现正则化逻辑回归。请注意,默认情况下应用正则化。它可以处理密集和稀疏输入。使用包含64位浮点的C顺序数组或CSR矩阵以获得最佳性能;任何其他输入格式都将被转换(和复制)。
“newton-cg”、“sag”和“lbfgs”解算器仅支持原始公式的L2正则化,或不支持正则化。“liblinear”解算器支持L1和L2正则化,仅对偶公式用于L2惩罚。弹性网正则化仅由“saga”解算器支持。
参数:
属性:
方法
主要是训练fit、预测predict、打分score
decision_function(X)Predict confidence scores for samples.
densify()Convert coefficient matrix to dense array format.
fit(X, y[, sample_weight])Fit the model according to the given training data.
get_params([deep])Get parameters for this estimator.
predict(X)Predict class labels for samples in X.
predict_log_proba(X)Predict logarithm of probability estimates.
predict_proba(X)Probability estimates.
score(X, y[, sample_weight])Return the mean accuracy on the given test data and labels.
set_params(**params)Set the parameters of this estimator.
sparsify()Convert coefficient matrix to sparse format.
例子
>>> from sklearn.datasets import load_iris
>>> from sklearn.linear_model import LogisticRegression
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(random_state=0).fit(X, y)
>>> clf.predict(X[:2, :])
array([0, 0])
>>> clf.predict_proba(X[:2, :])
array([[9.8...e-01, 1.8...e-02, 1.4...e-08],
[9.7...e-01, 2.8...e-02, ...e-08]])
>>> clf.score(X, y)
0.97...
1、优点
(1)适合分类场景
(2)计算代价不高,容易理解实现。
(3)不用事先假设数据分布,这样避免了假设分布不准确所带来的问题。
(4)不仅预测出类别,还可以得到近似概率预测。
(5)目标函数任意阶可导。
2、缺点
(1)容易欠拟合,分类精度不高。
(2)数据特征有缺失或者特征空间很大时表现效果并不好。
1.https://www.bilibili.com/video/BV1Ca411M7KA?p=6&vd_source=c35b16b24807a6dbe33f5473659062ac
2.黑马机器学习
3.https://blog.csdn.net/qq_36330643/article/details/77649896