ML实践——逻辑回归logistic regression

原理

从图中可以看出与perceptron的异同:

logistic regression model:
回归模型

perceptron:
这里写图片描述

简单地说把Sigmoid function用作activation function。

ϕ(z)=11+ez
ϕ(z)=z

Advantages:
1. Sigmoid function的收敛性更好
2. 逻辑回归是用通过计算一件事情发生的概率来预测事件是否发生

cost function

具体公式推导参见:链接
为什么cost function不再用平方差,而是用对数损失函数?这个问题我纠结了好久,最终在这里
看到一句话

“而在已知模型和一定样本的情况下,估计模型的参数,在统计学中常用的是极大似然估计方法”

所以说,选择的cost function与模型是有一定关系的。我们的log-likelihood function是极大似然函数的对数,我们要取对数?
1. 好求导
2. 防止numerical underflow发生(就是超出编译器里数值表示范围)

log-likelihood function
l(w)=ni=1log(ϕ(z(i)))+(1y(i))log(1ϕ(z(i)))

我们的目标是,为了Maximum 对数损失函数,找到最优的ϕ ,也就是去找最优的weight

然而我们实际常用的是cost function是:
Min(-对数损失函数)+ L2regularation
其中L2 是为了防止过拟合:
J(w)=ni=1log(ϕ(z(i)))+(1y(i))(log(1ϕ(z(i))))+γ2||w||2

测试

>>> from sklearn.linear_model import LogisticRegression
>>> lr = LogisticRegression(C=1000.0, random_state=0)
>>> lr.fit(X_train_std, y_train)
>>> plot_decision_regions(X_combined_std,
... y_combined, classifier=lr,
... test_idx=range(105,150))
>>> plt.xlabel('petal length [standardized]')
>>> plt.ylabel('petal width [standardized]')
>>> plt.legend(loc='upper left')
>>> plt.show()

这里写图片描述

其中

>>> lr = LogisticRegression(C=1000.0, random_state=0)

里面的 C=1γ


线性回归、逻辑回归、一般回归
http://blog.csdn.net/viewcode/article/details/8794401

  1. 线性回归:以 高斯分布 为误差分析模型

  2. 逻辑回归:以 伯努力分布 为误差分析模型
    逻辑回归的模型 是一个非线性模型,sigmoid函数,又称逻辑回归函数。但是它本质上又是一个线性回归模型,因为除去sigmoid映射函数关系,其他的步骤,算法都是线性回归的。可以说,逻辑回归,都是以线性回归为理论支持的。
    只不过,线性模型,无法做到sigmoid的非线性形式,sigmoid可以轻松处理0/1分类问题。

  3. 一般回归:以 指数分布 为误差分析模型
    高斯分布、伯努力分布 属于 指数分布。softmax回归就是 一般线性回归的一个例子。有监督学习回归,针对多类问题(逻辑回归,解决的是二类划分问题),如数字字符的分类问题,0-9,10个数字,y值有10个可能性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章