Java实现七种AI算法核心代码(一)
线性回归用最小二乘法定 “最优直线” 的标准,而 W=(XTX)−1XTy 是直接算出这条最优直线参数的 “快捷公式”。
七种 AI 底层算法的 Java 实现代码,我会为每一种算法提供可直接运行、逻辑完整的 Java 代码,同时附带核心思路注释,方便你理解和调试。
说明
- 代码均为纯 Java 实现,无第三方依赖,可直接在 Java SE 环境中运行。
- 聚焦算法核心逻辑,简化了部分数据预处理(如归一化),便于聚焦算法本身。
- 每种算法包含「核心实现」+「测试用例」,可直接复制运行验证结果。
1. 线性回归算法(Linear Regression)
核心思路
基于最小二乘法求解解析解,拟合线性关系 y=WTX+b,核心是计算 W=(XTX)−1XTy(为简化,实现单特征线性回归)。避开复杂公式:
- 核心目标(线性回归):找一条最贴合所有样本数据的直线(单特征场景),用这条直线就能通过一个自变量(比如房屋面积)预测结果(比如房价)。
- 最小二乘法的作用:判断直线 “贴合度” 的标准 —— 让所有数据点到这条直线的 “垂直距离平方和” 最小(简单说就是整体误差最小),这就是最小二乘法的核心。
- 解析解 W=(XTX)−1XTy 的通俗理解:
- 这是一个 “一步到位” 的计算公式,不用反复迭代试错,直接算出能得到最优直线的参数(包括直线的截距、斜率)。
- 大白话翻译:把整理好的样本特征数据(X)和真实结果数据(y),代入这个公式做矩阵运算,就能直接得到最优的权重参数(W),有了 W 就确定了那条最贴合的直线。
- 补充(单特征简化):这个公式看着复杂,对应到单特征场景,其实就是算出直线的 “斜率” 和 “与 y 轴交点”,和我们初中学的直线方程 y=kx+b 是一回事。
一句话总结
线性回归用最小二乘法定 “最优直线” 的标准,而 W=(XTX)−1XTy 是直接算出这条最优直线参数的 “快捷公式”。
代码解析:线性回归实现
该Java代码实现了一个简单的单变量线性回归模型,使用最小二乘法进行参数估计。以下是关键部分的详细说明:
类结构
定义LinearRegression类,包含两个成员变量:
w:权重(斜率)b:偏置(截距)
训练方法
train()方法通过最小二乘法计算最优参数:
-
输入验证确保数据有效性
-
计算以下统计量:
- 自变量和(sumX)
- 因变量和(sumY)
- 自变量与因变量乘积和(sumXY)
- 自变量平方和(sumX2)
-
使用最小二乘法公式计算参数:
- 斜率公式: [ w = \frac{n\sum xy - (\sum x)(\sum y)}{n\sum x^2 - (\sum x)^2} ]
- 截距公式: [ b = \frac{\sum y - w\sum x}{n} ]
预测方法
predict()方法使用训练得到的参数进行预测: [ \hat{y} = w \times x + b ]
测试用例
主方法演示了如何使用:
- 创建样本数据(房屋面积->房价)
- 训练模型
- 输出模型参数
- 对新面积进行价格预测
输出示例
运行测试代码会输出类似结果:
拟合参数:w=0.3829, b=-2.8571
房屋面积75.0㎡的预测价格:25.86万元
数学公式说明
最小二乘法通过最小化误差平方和来求解最优参数: [ \min \sum_{i=1}^n (y_i - (wx_i + b))^2 ]
该实现直接使用解析解进行计算,适合小规模数据。对于大规模数据,建议使用梯度下降等迭代方法。
逻辑回归算法核心思路与实现详解
1. 逻辑回归算法概述
1.1 逻辑回归的定义与应用场景
逻辑回归(Logistic Regression)是一种广泛应用于机器学习和统计分析领域的分类算法,虽然其名称中包含 "回归" 二字,但它实际上是一种用于解决二分类问题的监督学习方法
。逻辑回归通过将线性回归的输出通过 Sigmoid 函数映射到 (0,1) 区间,从而实现概率预测和分类决策
。
在实际应用中,逻辑回归被广泛应用于以下场景:
金融风控领域:银行和金融机构使用逻辑回归评估客户的信用风险,通过分析客户的收入水平、信用记录、年龄等特征来预测其违约概率
。逻辑回归在处理大规模稀疏数据时具有较好的性能,适用于信用评分这种涉及大量特征的场景
。
医疗诊断领域:逻辑回归在疾病预测和诊断中发挥重要作用。医学研究人员通过分析患者的年龄、性别、血压、胆固醇水平等特征,可以预测患者患心脏病、糖尿病等疾病的概率
。在乳腺癌诊断中,逻辑回归模型能够根据肿瘤的大小、形状、边界等特征判断其是良性还是恶性
。
客户行为分析:在电子商务和市场营销领域,逻辑回归被用于预测客户的购买行为、流失倾向和广告点击率。例如,通过分析用户的浏览历史、购买记录、停留时间等特征,预测用户是否会购买某产品或是否会流失
。
欺诈检测:在金融交易中,逻辑回归可以帮助识别潜在的欺诈行为,通过分析交易金额、交易地点、交易时间、用户行为模式等特征来判断交易的真实性
。
1.2 逻辑回归与线性回归的关系
逻辑回归与线性回归在数学形式上有密切的联系,但它们解决的问题类型完全不同。线性回归主要用于预测连续值,而逻辑回归则用于分类问题,尤其是二分类问题
。
数学形式对比:
- 线性回归:
y=β0+β1x1+β2x2+⋯+βnxn+ϵ
,其中y
是连续的因变量
- 逻辑回归:
P(y=1∣x)=1+e−(β0+β1x1+⋯+βnxn)1
,其中P(y=1∣x)
是条件概率
核心差异:
- 输出范围:线性回归的输出是任意实数,而逻辑回归的输出被限制在 (0,1) 区间内,可解释为概率
-
- 损失函数:线性回归使用均方误差(MSE)作为损失函数,而逻辑回归使用对数似然损失或交叉熵损失
-
- 优化目标:线性回归通过最小二乘法直接求解解析解,而逻辑回归通常使用梯度下降等迭代方法求解
-
联系与转换:逻辑回归实际上是在线性回归的基础上,通过 Sigmoid 函数进行了非线性变换。这个变换将线性回归的输出转换为概率值,使得模型能够处理分类问题
。从这个意义上说,逻辑回归可以看作是线性回归在分类问题上的扩展。
1.3 逻辑回归的数学基础
逻辑回归的数学基础建立在以下几个关键概念之上:
伯努利分布假设:逻辑回归假设每个样本的标签服从伯努利分布,即
Y∼Bernoulli(p)
,其中
p=σ(θTx)
是样本属于正类的概率。
对数几率(Logit)变换:逻辑回归假设对数几率与自变量之间存在线性关系,即:
logit(p)=ln(1−pp)=β0+β1x1+β2x2+⋯+βnxn
这个假设是逻辑回归模型的核心,它将非线性的概率关系转换为线性关系,大大简化了模型的学习和理解
。
Sigmoid 函数:Sigmoid 函数是逻辑回归的关键组成部分,其数学表达式为:
σ(z)=1+e−z1
Sigmoid 函数具有以下重要性质:
- 定义域:
(−∞,+∞)
- 值域:
(0,1)
,适合表示概率
- 单调递增,连续可导
- 关于点
(0,0.5)
中心对称
- 导数形式简单:
σ′(z)=σ(z)(1−σ(z))
-
这些性质使得 Sigmoid 函数非常适合用于将线性组合的结果转换为概率值,并在梯度计算中发挥重要作用。
2. 逻辑回归核心算法原理
2.1 线性计算与 Sigmoid 映射机制
逻辑回归的核心机制是 "线性计算 + Sigmoid 非线性映射",这一机制使得线性模型能够处理非线性的分类问题。
线性计算部分:
逻辑回归首先对输入特征进行线性组合计算:
z=θTx=θ0x0+θ1x1+θ2x2+⋯+θnxn
其中,
x0
通常设为 1,对应偏置项
θ0
;
xi
(
i=1,2,...,n
)是输入特征;
θi
是对应的权重参数。这个线性计算的结果
z
可以取任意实数值,范围是
(−∞,+∞)
。
Sigmoid 映射部分:
将线性计算的结果
z
输入 Sigmoid 函数,得到概率输出:
y^=σ(z)=1+e−z1=1+e−(θTx)1
这个映射过程具有以下特点:
- 当
z→+∞
时,σ(z)→1
,表示样本属于正类的概率很高
- 当
z→−∞
时,σ(z)→0
,表示样本属于负类的概率很高
- 当
z=0
时,σ(z)=0.5
,这是分类的决策边界
概率解释:
逻辑回归模型的输出
y^
可以直接解释为条件概率:
-
P(y=1∣x)=σ(θTx)
表示给定特征x
时,样本属于正类的概率
-
P(y=0∣x)=1−σ(θTx)
表示给定特征x
时,样本属于负类的概率
这种概率解释使得逻辑回归不仅能够进行分类预测,还能提供预测的置信度信息,这在许多实际应用中非常有价值
。
2.2 损失函数与极大似然估计
逻辑回归使用极大似然估计(Maximum Likelihood Estimation, MLE)来确定模型参数,其核心思想是 "让观测到的训练数据出现的概率最大"
。
似然函数:
对于二分类问题,假设样本
i
的标签为
yi∈{0,1}
,则单个样本的概率可以统一表示为:
P(yi∣xi;θ)=σ(θTxi)yi⋅(1−σ(θTxi))1−yi
对于
n
个独立同分布的样本,似然函数为:
L(θ)=i=1∏nP(yi∣xi;θ)=i=1∏n[σ(θTxi)yi⋅(1−σ(θTxi))1−yi]
更多推荐


所有评论(0)