线性模型

线性模型

    线性分类

1. 数学表示
           yj=sign(ω1x1+ω2x2+...+ωmxm)
           对于二元分类,结果为+时可标记为正类,结果为负时标记为负类。
2. 损失函数
样本标签为y¯,根据权重计算输出为y^,当y¯y^相同时,损失记为0,否则,损失记为1。称为0-1损失函数。
    线性回归

1. 数学表示
           yj=ω1x1+ω2x2+...+ωmxm
2. 损失函数
线性回归用的损失函数为平方损失函数:Loss=(yiyi¯)2。为何采用平方损失函数呢?回归任务的输出是在实数范围,为了表示损失大小,最基本的想法是通过绝对值表示损失的绝对大小,并进行累加,但绝对值函数是非连续的函数,无法进行优化训练。采用平方的方式与绝对值函数在问题空间上表示是一致的,而且方便进行优化,得出最优解。
    逻辑回归

1. 数学表示
           hθ(x)=1/(1+exp(ω1x1+ω2x2+...+ωmxm))
假设输入数据服从贝努力分布,逻辑回归任务目标是估计输入数据属于不同类别的概率。
2. 损失函数
Loss(hθ(x),y)={log(hθ(x))if y=1log(1hθ(x))if y=0
当y=1时,假定这个样本为正类。如果此时hθ(x)=1,则单对这个样本而言的cost=0,表示这个样本的预测完全准确。那如果所有样本都预测准确,总的cost=0
但是如果此时预测的概率hθ(x)=0,那么Loss。直观解释的话,由于此时样本为一个正样本,但是预测的结果P(y=1|x;θ)=0, 也就是说预测 y=1的概率为0,那么此时就要对损失函数加一个很大的惩罚项。
当y=0时,推理过程跟上述完全一致,不再累赘。
将以上两个表达式合并为一个,则单个样本的损失函数可以描述为:
Loss(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))
    优化策略

    sklearn使用方式

from sklearn.linear__model import LinearRegression  #线性回归 lr = LinearRegression(fit_intercept=True,normalize=False,copy_X=True,n_jobs = 1)

from sklearn.linear__model import LogisticRegression  #逻辑回归 lr = LogisticRegression(penalty='l2',C=1.0,max_iter=100,multi_class='ovr',solver='liblinear',tol=1e-4)

解释一下出现的关键参数:
fit_intercept:可以理解为二维坐标中是否是正比例函数,即是否x为0向量时,y的值为0。
normalize:是否将数据归一化。
copy_X:是否将训练数据X复制一份,还是在X上进行覆盖。
n_jobs:使用的CPU的核数。
penalty:正则化参数,取值为l1或l2.
C:对于参数w,为了防止w对预测结果影响过大,也即出现过拟合,在损失函数中加入λw2,C为1/λ。可见C大,则λ小,对参数的限制就小,对参数引起的过拟合容忍度高。超参数。
max_iter:训练迭代的次数,超参数。
multi_class:ovr或者multinomial.
solver:训练过程中的优化策略,有liblinear,newton-cg,lbfgs,sag,saga等。其中liblinear对于小数据集效果好,sag和saga处理效率更高。
tol:在误差大小达到多少时可以提前停止训练。超参数。