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

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

线性模型的基本概念为构建一个方程,每一个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官方文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容