Logistic Regression
来源:互联网 发布:淘宝国际版apk 编辑:程序博客网 时间:2024/06/02 00:58
LR是机器学习的入门分类器,同时也是实际应用中十分常见的分类器,常用于二分类。LR属于广义线性回归,解决了线性回归不擅长的分类问题。
1. 函数模型
LR使用的是sigmoid函数模型:
假设y可以取0或1。其概率分别用P(y=0)和P(y=1)表示,则:
假设样本独立,则有似然函数:
取对数后得到对数似然函数:
对THETA求偏导后:
有了关于THETA的偏导公式后,我们就可以得到参数THETA的学习公式:
上式和线性回归的学习公式的形式一致,因为LR属于广义上的线性回归。线性回归是基于高斯分布的样本建模,而LR则是基于Bernoulli分布。而不论是高斯分布,二项分布,还是Poisson分布,都是指数族分布,均属于线性模型范畴,是general linear model。因此可以参照线性回归写出BGD以及SGD的公式。
事件发生的几率,被定义为事件发生的概率与不发生概率的比值。如果对于sigmoid函数求对数几率,则会发现其对数几率为线性模型:
因此LR被认为是对数线性模型。反过来看,实际上LR模型的建立,就是假设模型满足对数线性的情况下,对p求解得到的表达式。
2. Loss Function
如果对y的类别用1与-1表示,此时似然函数为:
对数似然为:
若表示为
则有:
对似然求最大即是对其负值求最小。因此loss function可以被表示为:
3. Soft-max
使用LR处理多分类问题时,可以选择做多次二分类,也可以选择直接使用soft-max进行多分类。
对于K分类问题,假设第k类的参数为THETAk,此时有维度为k*n的二维矩阵,则事件k发生概率为:
公式中,第k类的指数化结果与所有类指数化结果的比值即为分类为第k类的概率值。同理可求其似然函数:
对数似然:
对THETA求偏导:
4. Iris数据分类
数据选用的是Iris数据,数据格式为:
5.1,3.5,1.4,0.2,Iris-setosa
前面的数据分别为该花的petal和sapel的长宽值,最后一项为label,是花的类型。总数据量为150条,三种花每种50条。使用pandas读取数据,数据中的data.value被np.split()分为两份,前4列分给x,后面的分给y。之后构建LR模型,并使用x,y数据进行训练。这里将数据中的80%作为训练集,剩余20%作为测试集。代码如下:
import numpy as npimport pandas as pdfrom sklearn.pipeline import Pipelinefrom sklearn.linear_model import LogisticRegressionfrom sklearn.preprocessing import StandardScaler, PolynomialFeaturesfrom sklearn.model_selection import train_test_splitif __name__ == "__main__": path = 'iris.data' data = pd.read_csv(path, header=None) # print('Data:',data) data[4] = pd.Categorical(data[4]).codes x, y = np.split(data.values, (4,), axis=1) # print('X:',x) # print('Y:',y) x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.8, random_state=1) lr = Pipeline([ ('sc', StandardScaler()), ('poly', PolynomialFeatures(degree = 2)), ('clf', LogisticRegression()) ]) # ravel the matrix y as 1-D matrix lr.fit(x_train,y_train.ravel()) # result of classification y_hat = lr.predict(x_test) # np.set_printoptions(suppress=True) # print('y hat =\n', y_hat) # print('y ravel:\n', y.ravel()) print('Accuracy=',np.mean(y_hat == y_test.ravel()))
最终结果:Accuracy = 0.967
- logistic regression
- logistic regression
- logistic regression
- Logistic Regression
- Logistic Regression
- logistic regression
- Logistic Regression
- Logistic Regression
- logistic regression
- Logistic regression
- Logistic Regression
- Logistic Regression
- Logistic Regression
- Logistic Regression
- Logistic Regression
- logistic regression
- logistic Regression
- Logistic regression
- 跟着9张思维导图学习Javascript
- 最小生成树模板
- 欢迎使用CSDN-markdown编辑器
- js中获取键盘事件
- iOS开发 去除一些程序中的警告
- Logistic Regression
- HDU-4722-Good Numbers(找规律)
- ArcGIS API FOR JS 加载天地图
- PAT——简单模拟
- js+html 实现关系拓扑图
- R语言数据挖掘中的,“回归分析”是如何操作的?
- 神经网络与深度学习笔记(二)python 实现随机梯度下降
- Java开发达人技术网站
- sc测试一