线性回归和逻辑回归
线性回归
线性回归是为了建立输入特征\(x = (x_1, \cdots, x_n)^T\) 和输出值y之间的线性关系,即:
假设有一组训练数据,特征\(X = ({x^{(1)},\cdots,x^{(m)}})\),值\(\hat Y = ({\hat{y}^{(1)},\cdots,\hat{y}^{(m)}})\), 则上式扩展为矩阵形式
其中\(X\)的维度为n x m, \(Y\)的维度为1 x m, \(w\)的维度为n x 1, \(\theta\)的维度为n+1 x 1, \(\tilde{X}\)的维度为n+1 x m.
m为样本个数,n为样本特征维度.
接下去就是如何找到\(w,b\)这n+1个值,有不同的方法。
找\(w,b\)最常见的方法就是最小平方法,即:找到某一组 \(\theta = (b, w_1, \cdots, w_n)^T\) , 使得拟合函数曲线(即\(y = w^Tx + b\))与观测值之差的平方和最小,那组\(w\)就是想要的参数,最小平方法表示成函数如下:
最小化的对象称作损失函数,记为:
将损失函数对\(\theta\)求导可得:
由于最后一项分子为常数,所以:
令上式为零可得:
\(\hat\theta\)表示\(\theta\)的一个最佳估计。
logistic回归
Sigmoid函数
Step 1: Function Set
Logistic 回归是一个用于二分分类的算法。
线性回归中找到的线性关系系数\(w,b\), 满足\(y=w^T x + b\),得到的预测值y是连续值,所以是回归模型。
对于分类问题,我们要想让预测值y为离散值。比如二分类问题,我们有训练数据集\(T = [(x^{(1)},\hat{y}^{(1)}),\cdots,(x^{(m)},\hat{y}^{(m)})]\), 其中\(x^{(i)} \in \mathbb{R}^n, \hat{y}^{(i)} \in {0,1}\), 要想知道一个样本\(x\)属于y=1的概率为多少,即要找到办法求出\(P_{w,b}(y=1|x)\), 然后如果\(P_{w,b}(y=1|x)\geq 0.5\),输出类别y=1
结合sigmoid函数的性质,可以对\(z = w^T x + b\)应用上述sigmoid函数,得到能够预测概率的函数:
同样
我们的目标Function Set:
Goodness of a Function
有了函数集合,下一步是找到最好的function, 那么就得定义Goodness of a Function.
假设训练数据集\(T = [(x^{(1)},1),(x^{(2)},1),(x^{(1)},0),\cdots,(x^{(m)},1)]\)每一笔data都是由\(f_{w,b}(x) = P_{w,b}(y=1|x)\)产生的
那么Given a set of \(w,b\), what is its probability of generating the dataset T?
最可能的\(\hat w, \hat b\)是那组使得\(L(w,b)\)最大的,即
softmax regression
Softmax regression也叫multiclass logistic regression, 是将logistic regression从二分类任务拓展到多分类任务的算法。
测试代码
算例试用scikit-learn
代码实现
参考github