美文网首页机器学习
机器学习[2] - 监督模型之线性模型

机器学习[2] - 监督模型之线性模型

作者: 屹然1ran | 来源:发表于2021-02-26 14:46 被阅读0次

关于机器学习整体的概念,例如监督模型与无监督模型的概念,见笔者的之前的一篇文章
机器学习入门

线性模型的基本概念为构建一个方程,每一个Predictor(自变量)拥有各自的权重,通过线性关系来预测Response(因变量)的值

定义:
Predictor - x
Response - y
coefficients(权重) - w
基本框架:y = w_0+w_1x_1+w_2x_2+...+w_px_p

1.1.1 机器学习的起点 - Linear Regression (线性回归)

线性回归根据一个或者多个x来对y来进行预测。
Predictor可以接受Continuous Variable和Categorically Variable,但是Response只能是Continuous Variable。

线性回归
线性回归本质上是最小化代价函数(每一个点至预测线的距离之和),来构建一条最好的拟合线。数学上等同于:
min_w||wx - y||_2^2

模型训练

from sklearn import linear_model
import numpy as np
import pandas as pd

lm = linear_model.LinearRegression()

data = pd.DataFrame({'x1': [0, 1, 2, 3, 4],
                     'x2': [4, 3, 2, 1, 0],
                     'y':[1, 1.5, 2, 2.5, 3]})

lm.fit(data[['x1', 'x2']], data['y'])
Out[41]: LinearRegression()

lm.coef_
Out[42]: array([ 0.25, -0.25])

lm.intercept_
Out[43]: 2.0

这样就可以得到模型的结果:y = 2.0 + 0.25x_1 + 0.25x_2

模型预测

test_data = pd.DataFrame({'x1': [1, 2, 3],
                          'x2': [-1, 2, 5],
                          'y': [2.5, 1, 1]})

lm.predict(test_data[['x1', 'x2']])
Out[47]: array([2.5, 2. , 1.5])

模型性能

对于线性回归,常用测试模型性能两个指标为:
R^2:代表模型的拟合程度,如果是单元线性回归,则等于两个变量的相关系数
MSE(Mean\ Squared\ Error):代表每一个点至预测线的距离之和

from sklearn.metrics import mean_squared_error, r2_score
y_hat = lm.predict(test_data[['x1', 'x2']])

mean_squared_error(y_hat, test_data['y'])
Out[52]: 0.4166666666666666

r2_score(y_hat, test_data['y'])
Out[53]: -1.4999999999999987

时间复杂度

一般线性回归最小化代价函数使用的方法为Singular Value Decomposition,简单来说是将所有样本的特征值构建成一个矩阵,然后求解(X^TX)^{-1}X^TY,时间复杂度为O(n_{样本量}n_{特征数}^2 )

该方法在处理高维数据时,效率会较低,可以使用梯度下降来优化效率。

1.1.2 Rigde Regression(岭回归)

岭回归为在线性回归的基础上,增加了一个惩罚项,惩罚项为w的数量,目的是为了防止模型采用的Feature过多而导致的过拟合。
min_w||wx - y||_2^2+\alpha||w||_2^2
||w||_2^2又称之为L2 Norm,或者欧式距离(Euclidean Distance)。\alpha \geq 0为复杂度,控制岭回归模型的衰减程度(Shrinkage),\alpha值越大,模型的鲁棒性(Robustness)就越强,更不容易有共线性问题。

lm_ridge = linear_model.Ridge(alpha = 0.5).fit(data[['x1', 'x2']], data['y'])

lm_ridge.coef_
Out[55]: array([ 0.24390244, -0.24390244])

lm_ridge.intercept_
Out[56]: 2.0000000000000018

岭分类器(Rigde Classifier)

Ridge回归器拥有一个变种Ridge Classifier。这个分类器会将二元数据的y转换为{-1, 1}然后执行回归操作。模型的预测值的正负号,则可以表示分类结果。
如果y是多元数据,该模型则会进行多结果回归(multi-output regression),结果则取多个结果中的最高值。
Ridge Classifier的效率略微高于Logistic Regression,因为他只需要计算(X^TX)^{-1}X^T一次。
Ridge Classifier同时被称为拥有Linear Kernal的Least Squares Support Vector Machines

1.1.3 Lasso Regression

Lasso回归是一个拥有稀疏的系数(Sparse Coefficients)的线性模型,通常适用于结果只有少量的feature有非零系数项的数据集。这一点主要有两个好处:

  1. Feature选择
    稀疏化可以自动对特征进行选择,将无用的特征系数归零
  2. 可解释性强
    保留下来的特征可以很容易的解释,例如一个数据集有1000个feature,通过Lasso后只保留下了5个feature,则该5个feature为主要影响

与Ridge回归类似,该模型添加了惩罚项,但不同的是选择了L1 Norm,或者叫做曼哈顿距离(Manhatten Distance)。
min_w \frac{1}{2n_{samples}}||wx - y||_2^2+\alpha||w||_2^2

lm_lasso = linear_model.Lasso(alpha=0.1)
lm_lasso.fit([[0, 0], [1, 1]], [0, 1])
Out[57]: Lasso(alpha=0.1)

reg.predict([[1, 1]])
Out[58]: array([0.8])

\alpha选择

\alpha控制了系数的离散度。除了使用常用的AIC与BIC,在Scikit-learn中,可以使用两种Cross Validation方法来选择恰当的\alpha:LassoCV,LassoLarsCV
拥有潜在多重共线性的高维数据,一般会使用LassoCV;样本量相比Features较少时,一般会使用LassoLarsCV

Alpha选择 AIC&BIC Alpha选择 LassoCV Alpha选择 LassoLarsCV

Multi-task Lasso

Multi-task Lasso模型为将一维的y替换为二维数组,也就是说有多个response。
Objective Function如下

min_w \frac{1}{2n_{samples}}||XW-Y||_{ Fro}^2+\alpha||W||_{21}

其中Fro指Frobenius Norm

||A||_{ Fro } = \sqrt{\sum_{ij}a_{ij}^2}

以及l_1l_2

||A||_{21} = \sum_i \sqrt{\sum_j{a_{ij}^2}}

该模型一般使用coordinate descent来最小化代价函数。

reference

周志华,机器学习
scikit learn官方文档

相关文章

  • 机器学习[2] - 监督模型之线性模型

    关于机器学习整体的概念,例如监督模型与无监督模型的概念,见笔者的之前的一篇文章机器学习入门[https://www...

  • 算法工程师知识树 持续更新

    机器学习算法 监督学习分类模型LRSVM决策树NB回归模型线性回归 最小二乘融合模型baggingRFboosti...

  • 2019-10-29

    Day2 简单线性回归模型 机器学习入门--简单线性回归机器学习算法之线性回归算法 导入库matplotlib 绘...

  • 3.Spark机器学习基础——监督学习

    Spark机器学习基础——监督学习 1.1线性回归(加L1 L2 正则化) 1.2广义线性模型 1.3逻辑回归 1...

  • 分类

    机器学习方法:监督学习, 半监督学习,无监督学习,强化学习。 监督学习:判别模型,生成模型。 判别模型:条件随机场...

  • Task4模型调参

    学习目标 了解常用的机器学习模型,并掌握机器学习模型的建模与调参流程 内容介绍 线性回归模型:线性回归对于特征的要...

  • 统计学习方法之感知机

    1.感知机模型 在机器学习中,感知机(perceptron)是二分类的线性分类模型,属于监督学习算法。输入为实例的...

  • Python机器学习之线性模型

    一、线性模型基本概念  线性模型不是指某一个模型,而是一类模型。在机器学习领域,常用的线性模型包括,线性回归、岭回...

  • 监督学习之线性模型(2)

    一、概念 1、拓展线性模型 基本的线性模型虽简单,却有丰富的变化。我们将模型改写为 y = transfer(W)...

  • 客户分群-聚类算法

    机器学习算法分类 有监督学习 有训练样本 分类模型 预测模型 无监督学习 无训练样本 关联模型 聚类模型 聚类算法...

网友评论

    本文标题:机器学习[2] - 监督模型之线性模型

    本文链接:https://www.haomeiwen.com/subject/potufltx.html