机器学习:Logistic回归

一、Logistic回归概述

1、基本原理:

Logistic回归模型通过一个逻辑函数(通常是Sigmoid函数)将自变量的线性组合映射到(0,1)区间内,这个映射值被解释为属于某类的概率。对于二分类问题,模型预测的是样本属于正类(通常标记为1)的概率。

2、模型训练:

Logistic回归模型的训练过程涉及最大化似然函数,即找到一组参数( \beta ),使得观测数据的概率最大。这通常通过迭代算法如梯度下降或牛顿-拉夫森法来完成。

3、优缺点

优点:

模型简单:Logistic回归模型形式简单,易于理解和实现。

输出解释性强:模型输出的是概率值,可以直观地理解为事件发生的可能性。

低方差:相比于复杂的模型,Logistic回归通常具有较低的方差,不容易过拟合。

缺点:

容易欠拟合:由于模型简单,可能无法捕捉数据中复杂的关系。

假设线性决策边界:Logistic回归假设数据是线性可分的,当实际情况更为复杂时,模型的表现可能不佳。

高偏差:如果实际数据与模型假设相差较大,模型可能会有较高的偏差。

二、Logistic回归 

Logistic回归:

Logistic回归,相对于线性回归,主要用于处理分类问题,尤其是二分类问题。Logistic回归通过逻辑函数将线性回归模型的输出映射到(0,1)区间内,从而表示为某个类别发生的概率。

Sigmoid函数是一个在机器学习和统计学中常用的激活函数,特别是在Logistic回归和神经网络中。它的数学形式是一个S型曲线(即它的名称来源),能够将任意实数值映射到(0, 1)区间内,这使得它非常适合用来表示概率。

Sigmoid函数的数学公式如下:

其中,( x )是输入值,( e )是自然对数的底数。

三、代码实现

import numpy as np

# Sigmoid 函数
def sigmoid(z):
    return 1 / (1 + np.exp(-z))

# 损失函数
def compute_cost(X, y, theta):
    m = len(y)
    h = sigmoid(X.dot(theta))
    epsilon = 1e-5  # 防止对数里有0
    cost = (-1/m) * ((y.T.dot(np.log(h + epsilon))) + ((1 - y).T.dot(np.log(1 - h + epsilon))))
    return cost

# 梯度下降
def gradient_descent(X, y, theta, alpha, iterations):
    m = len(y)
    cost_history = np.zeros(iterations)

    for i in range(iterations):
        theta = theta - (alpha/m) * X.T.dot(sigmoid(X.dot(theta)) - y)
        cost_history[i] = compute_cost(X, y, theta)

    return theta, cost_history

# 预测函数
def predict(X, theta):
    predictions = sigmoid(X.dot(theta))
    return [1 if x >= 0.5 else 0 for x in predictions]

# 示例数据
X = np.array([[1, 2], [1, 3], [1, 4], [1, 5]])  # 特征数据集
y = np.array([0, 0, 1, 1])  # 标签数据集
theta = np.zeros(X.shape[1])  # 初始化参数为0
alpha = 0.01  # 学习率
iterations = 1000  # 迭代次数

# 添加截距项
X = np.concatenate([np.ones((X.shape[0], 1)), X], axis=1)

# 训练模型
theta, cost_history = gradient_descent(X, y, theta, alpha, iterations)

# 打印最终的参数值
print(f"Theta: {theta}")

# 预测新数据
X_new = np.array([[1, 3], [1, 4]])
X_new = np.concatenate([np.ones((X_new.shape[0], 1)), X_new], axis=1)
predictions = predict(X_new, theta)
print(f"Predictions: {predictions}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值