💬 欢迎讨论:如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区留言!我们一起学习、一起成长。 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏并分享给更多想了解机器学习的朋友! 🚀 开启统计学之旅:统计学是机器学习的核心,它帮助我们理解数据的分布、模型的推断与优化。让我们一起深入探索这些概念,打好数据科学的基础。
在机器学习的学习旅程中,统计学作为支撑理论之一,是理解数据与模型之间关系的关键。无论是在数据分析、模型评估还是假设检验中,统计学都有着举足轻重的作用。在之前的博客中,我们已经介绍了线性代数和概率论的基础,这些都为进一步的学习奠定了基础。今天,我们将深入讲解统计学基础,特别是在机器学习中的应用。
如果你是机器学习的初学者,或者希望加强自己在统计学方面的基础知识,今天的内容将帮助你理解一些核心概念,并为后续更复杂的学习打下坚实的基础。
描述统计是用来总结和描述数据集特征的一系列方法。它帮助我们理解数据的整体趋势与波动。
集中趋势描述了数据集中在哪里,它的核心概念包括:
其中,
是数据点,
是数据的数量。
离散程度描述了数据的波动范围,常用的指标有:
推断统计帮助我们从样本数据推断总体特征。它是机器学习中模型训练与评估的基础,尤其在处理大规模数据时显得尤为重要。
假设检验是推断统计的核心工具,它用于评估某个假设是否成立。常见的步骤如下:
):假设没有效果或差异,通常是我们希望证伪的假设。
):假设有显著的效果或差异。
通过计算p值,我们可以判断是否拒绝零假设。如果
值小于显著性水平
(通常为0.05),则拒绝零假设,认为备择假设成立。
置信区间(Confidence Interval)是通过样本数据推断总体参数的一种方式。例如,95%的置信区间表示我们有95%的信心认为总体参数位于该区间内。
推断统计是从样本数据推断总体特征的数学工具,是统计学和机器学习中必不可少的基础。在机器学习的很多应用中,推断统计帮助我们理解模型的泛化能力,验证假设的成立,以及估计未知参数。通过这一部分的学习,你将掌握一些关键的统计推断方法,这些方法在分析数据时十分重要。
在统计学中,我们经常提到“样本”和“总体”这两个概念。理解它们的区别是推断统计的基础。
示例:
假设你想了解一个城市中居民的平均月收入。访问每一位市民是不现实的,因此你随机抽取100名市民的月收入,分析这100个数据点,来估算整个城市的总体平均收入。
样本推断总体的前提条件包括:
通过统计推断,我们可以回答以下问题:
数学表示:
如果总体均值为
,样本的均值为
,样本标准差为
,我们用以下近似公式推断:
假设检验是推断统计中最重要的内容之一。其核心思想是通过样本数据,验证一个假设是否成立。
):通常是我们希望证伪的假设,表示没有效果或差异。例如,“药物对病人的治疗没有显著效果”。
):表示存在效果或差异。例如,“药物对病人的治疗效果显著”。
p值(p-value)是判断假设是否成立的关键指标:
值小于显著性水平
(通常为0.05),我们拒绝零假设,认为备择假设成立。
值大于
,我们无法拒绝零假设。
示例:
假设我们想检验某药物对病人是否有治疗效果:
通过t检验计算
值,如果
,我们拒绝零假设,认为药物有效。
置信区间(Confidence Interval, CI)是一个区间估计,用来反映总体参数可能的取值范围。比如,95%的置信区间表示我们有95%的信心认为总体参数位于该区间内。
在机器学习中,置信区间可以帮助我们评估模型参数的稳定性,或者推断某些统计量(如均值、比例等)的范围,从而增强对结果的信心。
对于总体均值
的置信区间,公式为:
其中:
:样本均值
:标准正态分布的临界值(例如,95%置信水平时,
)
:样本标准差
:样本数量
场景描述:某城市随机抽取10名居民的月收入样本如下:
[3000, 3100, 2900, 3200, 3050, 3150, 3250, 2950, 3300, 3100]。
我们希望计算95%置信水平下,该城市居民的平均收入范围。
,对应
将已知值代入:
以下是上述计算的Python实现:
import numpy as np
import scipy.stats as stats
# 样本数据
data = [3000, 3100, 2900, 3200, 3050, 3150, 3250, 2950, 3300, 3100]
sample_mean = np.mean(data)
sample_std = np.std(data, ddof=1) # 样本标准差
n = len(data)
# 置信区间计算
confidence = 0.95
z_value = stats.norm.ppf((1 + confidence) / 2) # Z临界值
margin_of_error = z_value * (sample_std / np.sqrt(n)) # 误差范围
lower_bound = sample_mean - margin_of_error
upper_bound = sample_mean + margin_of_error
print(f"样本均值: {sample_mean:.2f}")
print(f"样本标准差: {sample_std:.2f}")
print(f"95%置信区间: [{lower_bound:.2f}, {upper_bound:.2f}]")
输出结果:
样本均值: 3100.00
样本标准差: 129.10
95%置信区间: [3019.98, 3180.02]
为 3100.00 元。
t检验用于比较两个样本均值是否显著不同。常见的t检验包括:
卡方检验用于检验两个分类变量是否相关,或者观察到的频数是否符合预期频数。
示例:卡方检验 Python 代码
from scipy.stats import chi2_contingency
# 构建列联表
data = [[10, 20], [30, 40]]
chi2, p, dof, expected = chi2_contingency(data)
print(f"卡方值: {chi2}, p值: {p}")
回归分析是统计学中用来研究变量之间关系的一种方法。在机器学习中,回归分析不仅用于预测目标变量,还在模型评估中起到了重要作用。通过这一部分,你将了解如何利用简单和多元回归来分析数据中的变量关系,并通过实例掌握回归模型的实际应用。
简单线性回归研究一个自变量(
)与因变量(
)之间的线性关系。其数学模型为:
:因变量(目标变量)
:自变量(输入变量)
:截距
:回归系数(斜率)
:误差项,表示随机噪声
模型假设:
与自变量
之间存在线性关系。
服从正态分布,且均值为 0。
是固定的,且没有测量误差。
回归系数的估计可以通过最小二乘法(Least Squares Method, LSM)实现。最小二乘法的目标是最小化观测值与预测值的平方误差和:
通过推导,得到
和
的估计公式:
其中:
是
的均值
是
的均值
问题描述:某公司希望通过员工的工作年限预测其年薪。给定以下数据:
工作年限(年) | 年薪(万元) |
---|---|
1 | 5 |
2 | 7 |
3 | 8 |
4 | 11 |
5 | 13 |
我们希望建立一个简单线性回归模型,用于预测年薪。
Python代码实现:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 数据
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # 工作年限
y = np.array([5, 7, 8, 11, 13]) # 年薪
# 建立线性回归模型
model = LinearRegression()
model.fit(X, y)
# 模型参数
beta_0 = model.intercept_ # 截距
beta_1 = model.coef_[0] # 回归系数
print(f"回归方程: y = {beta_0:.2f} + {beta_1:.2f}x")
# 预测
y_pred = model.predict(X)
# 可视化
plt.scatter(X, y, color='blue', label='实际数据')
plt.plot(X, y_pred, color='red', label='预测回归线')
plt.xlabel('工作年限(年)')
plt.ylabel('年薪(万元)')
plt.legend()
plt.title('简单线性回归示例')
plt.show()
输出结果:
y = 2.80 + 2.00x
解释:根据回归方程,员工每多工作一年,预计年薪增加 2.10 万元。
当因变量
与多个自变量
存在线性关系时,称为多元线性回归。其模型为:
示例:
某房产公司想通过以下变量预测房价:
)
)
)
问题描述:某公司希望通过房屋的面积、卧室数量和距离市中心的距离预测房价。给定以下数据:
面积(平方米) | 卧室数量 | 距离市中心(公里) | 房价(万元) |
---|---|---|---|
100 | 2 | 10 | 120 |
150 | 3 | 8 | 200 |
200 | 4 | 6 | 300 |
250 | 5 | 4 | 400 |
我们希望建立一个多元线性回归模型,用于预测房价。
Python代码实现:
from sklearn.linear_model import LinearRegression
import numpy as np
# 数据
X = np.array([[100, 2, 10],
[150, 3, 8],
[200, 4, 6],
[250, 5, 4]]) # 特征:面积、卧室数量、距离市中心
y = np.array([120, 200, 300, 400]) # 目标:房价
# 建立多元线性回归模型
model = LinearRegression()
model.fit(X, y)
# 输出回归系数
print(f"截距: {model.intercept_:.2f}")
print(f"回归系数: {model.coef_}")
# 预测
new_house = np.array([[180, 3, 7]]) # 新房子:180平方米,3个卧室,距离市中心7公里
predicted_price = model.predict(new_house)
print(f"预测房价: {predicted_price[0]:.2f} 万元")
运行结果:
截距: -72.95
回归系数: [ 1.8762475 0.03752495 -0.0750499 ]
预测房价: 264.36 万元
-72.95
,表示在自变量(面积、卧室数量、距离市中心)均为 0 的情况下,模型理论预测的房价为 -72.95 万元
(在实际场景中,这个值没有现实意义,仅是数学上的结果)。
1 平方米
,房价增加 1.876 万元
。1 个
,房价增加 0.038 万元
(约 380 元
)。1 公里
,房价减少 0.075 万元
(约 750 元
)。180 平方米
,有 3 个卧室
,距离市中心 7 公里
的房屋,模型预测房价为 264.36 万元
。相关性分析是一种用于衡量两个变量之间关系强弱的方法。在机器学习中,相关性分析帮助我们理解特征与目标变量的关系,指导特征选择和模型优化。本节将带你深入了解相关性分析的基础概念、常见指标及其实践应用。
相关性描述了两个变量之间的依赖关系。它可以是正相关、负相关,或者无相关。
皮尔逊相关系数(Pearson Correlation Coefficient)用于衡量两个变量之间的线性关系,范围为
。
:正相关
:负相关
:无线性关系
计算公式:
其中:
是两个变量的样本值
是变量
和
的均值
斯皮尔曼等级相关系数(Spearman’s Rank Correlation Coefficient)用于衡量两个变量的单调关系,适用于非线性关系的数据。
计算公式:
其中:
是每个样本在两个变量中的排名差异
是样本数量
斯皮尔曼相关系数的范围也是
。
某公司希望分析员工的工作年限、工作满意度与年薪之间的关系,数据如下:
工作年限(年) | 工作满意度(1-10) | 年薪(万元) |
---|---|---|
1 | 8 | 5 |
2 | 7 | 7 |
3 | 9 | 8 |
4 | 6 | 11 |
5 | 10 | 13 |
我们将使用皮尔逊相关系数和斯皮尔曼相关系数分析这些变量之间的关系。
代码实现:
import numpy as np
import pandas as pd
from scipy.stats import pearsonr, spearmanr
# 数据
data = {
'工作年限': [1, 2, 3, 4, 5],
'工作满意度': [8, 7, 9, 6, 10],
'年薪': [5, 7, 8, 11, 13]
}
df = pd.DataFrame(data)
# 皮尔逊相关系数
pearson_corr_salary_years, _ = pearsonr(df['工作年限'], df['年薪'])
pearson_corr_salary_satisfaction, _ = pearsonr(df['工作满意度'], df['年薪'])
# 斯皮尔曼相关系数
spearman_corr_salary_years, _ = spearmanr(df['工作年限'], df['年薪'])
spearman_corr_salary_satisfaction, _ = spearmanr(df['工作满意度'], df['年薪'])
# 输出结果
print(f"工作年限与年薪的皮尔逊相关系数: {pearson_corr_salary_years:.2f}")
print(f"工作满意度与年薪的皮尔逊相关系数: {pearson_corr_salary_satisfaction:.2f}")
print(f"工作年限与年薪的斯皮尔曼相关系数: {spearman_corr_salary_years:.2f}")
print(f"工作满意度与年薪的斯皮尔曼相关系数: {spearman_corr_salary_satisfaction:.2f}")
运行结果:
工作年限与年薪的皮尔逊相关系数: 0.99
工作满意度与年薪的皮尔逊相关系数: 0.25
工作年限与年薪的斯皮尔曼相关系数: 1.00
工作满意度与年薪的斯皮尔曼相关系数: 0.30
今天,我们从统计学的视角重新审视了数据与模型的关系。通过描述性统计、推断统计、回归分析和相关性分析,我们不仅掌握了如何总结数据特征、理解数据分布,还学会了如何通过样本推测总体,进而建立变量之间的数学模型。统计学,是数据科学的起点,它帮助我们看清数据的结构与规律,为后续模型的构建提供了坚实的理论依据。在这个过程中,我们不仅是在学习统计学,更是在为机器学习的数学基石添砖加瓦。
小结:
展望:
在接下来的博客中,我们将继续深入学习机器学习的数学基础。下一站,我们将迈向微积分的世界,探讨如何利用导数和积分理解模型的优化过程与变化规律,为机器学习算法的实现打下更深厚的数学基础。希望通过本系列的学习,你能逐步构建起扎实的数学知识体系,为日后的机器学习研究铺平道路。
以上就是关于【机器学习】乱象中寻序,虚实间求真:统计学连接数据与真理的桥梁的内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️