机器学习之Logistic回归算法

Logistic回归算法

  • 逻辑回归定义
  • 逻辑回归基本原理
    • 公式以及推导
  • 在scikit-learn库中逻辑回归类的使用
    • 概述
  • 逻辑回归 算法特点
  • 逻辑回归和多重线性回归的区别
  • sklearn 实现逻辑回归

逻辑回归定义

逻辑(Logistic)回归是分类算法中最基础也是最重要的手段,因此,掌握其内在原理是非常必要的。逻辑回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分问题(即结果要么是0,要么是1)。

逻辑回归基本原理

Logistic回归的主要思想是,根据现有的数据对分类边界建立回归公式,从而实现分类(一般两类)。“回归”的意思就是要找到最佳拟合参数,其中涉及的数学原理和步骤如下:
(1)需要一个合适的分类函数来实现分类【单位阶跃函数、Sigmoid函数】
(2)损失函数(Cost函数)来表示预测值(h(x)h(x))与实际值(yy)的偏差(h−yh−y),要使得回归最佳拟合,那么偏差要尽可能小(偏差求和或取均值)。
(3)记J(ω)J(ω)表示回归系数为ωω时的偏差,那么求最佳回归参数ωω就转换成了求J(ω)J(ω)的最小值。【梯度下降法】

公式以及推导

机器学习之Logistic回归算法_第1张图片
机器学习之Logistic回归算法_第2张图片
机器学习之Logistic回归算法_第3张图片
机器学习之Logistic回归算法_第4张图片
机器学习之Logistic回归算法_第5张图片

在scikit-learn库中逻辑回归类的使用

scikit-learn 逻辑回归类库使用小结
之前在逻辑回归原理小结这篇文章中,对逻辑回归的原理做了小结。这里接着对scikit-learn中逻辑回归类库的我的使用经验做一个总结。重点讲述调参中要注意的事项。

概述

在scikit-learn中,与逻辑回归有关的主要是这3个类。LogisticRegression, LogisticRegressionCV 和logistic_regression_path。其中LogisticRegression和LogisticRegressionCV的主要区别是LogisticRegressionCV使用了交叉验证来选择正则化系数C。而LogisticRegression需要自己每次指定一个正则化系数。除了交叉验证,以及选择正则化系数C以外, LogisticRegression和LogisticRegressionCV的使用方法基本相同。

from sklearn.linear_model import LogisticRegression
Model = LogisticRegression()
Model.fit(X_train, y_train)
Model.score(X_train,y_train)
# Equation coefficient and Intercept
Print(‘Coefficient’,model.coef_)
Print(‘Intercept’,model.intercept_)
# Predict Output
Predicted = Model.predict(x_test)

逻辑回归 算法特点

优点: 计算代价不高,易于理解和实现。
缺点: 容易欠拟合,分类精度可能不高。
适用数据类型: 数值型和标称型数据

逻辑回归和多重线性回归的区别

Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。
这一家族中的模型形式基本上都差不多,不同的就是因变量不同。这一家族中的模型形式基本上都差不多,不同的就是因变量不同。

如果是连续的,就是多重线性回归
如果是二项分布,就是Logistic回归
如果是Poisson分布,就是Poisson回归
如果是负二项分布,就是负二项回归

sklearn 实现逻辑回归

import numpy as np
from sklearn import linear_model, datasets
from sklearn.cross_validation import train_test_split
 
# 1.加载数据
iris = datasets.load_iris()
X = iris.data[:, :2]  # 使用前两个特征
Y = iris.target
#np.unique(Y)   # out: array([0, 1, 2])
 
# 2.拆分测试集、训练集。
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=0)
# 设置随机数种子,以便比较结果。
 
# 3.标准化特征值
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
 
# 4. 训练逻辑回归模型
logreg = linear_model.LogisticRegression(C=1e5)
logreg.fit(X_train, Y_train)
 
# 5. 预测
prepro = logreg.predict_proba(X_test_std)
acc = logreg.score(X_test_std,Y_test)

机器学习之Logistic回归算法_第6张图片

参考:逻辑回归算法
逻辑回归(Logistic regression)详解

你可能感兴趣的:(机器学习算法)