一、线性回归:
线性模型的一般向量形式:
其中x为自变量(特征向量),w为系数(特征向量对应的系数向量),b为常数,f(x)为预测值。一组数据其大概呈现线性趋势,可用一个模型(函数)来描述特征向量与因变量之间的关系,需要对数据进行线性回归。
例如一个自变量的线性问题
怎么确定合适的w和b呢?
二、最小二乘法:
可使用误差来衡量预测值与真实值之间的差别(f(x)-y),但这会出现不同样本的误差有正有负,这就可能会相互抵消导致误差总和很小。这可以通过使用平方来解决,也就是均方误差(对应了常用的欧几里得距离),线性回归的目的就是找到均方误差最小时的w和b(最小二乘参数估计)。
对上面的式子一阶求导后令其对于0,可得到极值。再求二阶导判断出极大或者极小值
其中的为平均值。
当存在多个特征(属性)描述时,就是我们开头说的向量形式,使得,称为多元线性回归。(多个自变量)
当病毒传播时为一传十,十传百,....其被感染人数不是呈一个线性增长的,可能是一个指数增长的趋势,这时候我们就需要用一个输出标记的对数作为为线性函数逼近的目标.
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 生成一些随机数据作为示例
np.random.seed(50)
X = 2 * np.random.rand(30, 1)
y = 4 + 3 * X + np.random.randn(30, 1)
# 使用最小二乘法线性回归模型
lin_reg = LinearRegression()
lin_reg.fit(X, y)
# 输出回归模型的参数
print("斜率 (theta_1):", lin_reg.coef_[0][0])
print("截距 (theta_0):", lin_reg.intercept_[0])
# 生成预测值
X_new = np.array([[0], [2]])
y_pred = lin_reg.predict(X_new)
# 可视化结果
plt.scatter(X, y, color='blue', label='实际数据')
plt.plot(X_new, y_pred, color='r')
三、极大似然估计法:
通过极大似然估计法可以求出样本的均值和方差。《概率论与数理统计》
在线性回归中,假设模型的预测值与真实值之间存在误差,有
误差非常小,在0左右,其均值就为0,服从正态分布,所以其密度函数为:
则有,再用极大似然估计法来估计w和b:
四、多元函数求最值:
(待补充)
五、对数几率回归(逻辑回归):分类
(以二分类为例)分类问题的因变量不是一个连续变量,而是0/1(表示0类或者1类)。
对数几率函数(一种sigmoid函数),将z值转化为0/1的y值。
y为1类发生的可能性,1-y为0类发生的可能性,则为几率反映了x为1(正例)的相对可能性。则为对数几率。
六、线性判别分析。(Fisher 判别分析)
LDA 的思想: 给定训练样例集,设法将样例投影到一条直线上使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离: 在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。