目录
1 线性回归
线性回归(linear regression)试图学得一个线性模型以尽可能准确地预测实值输出标记。
1. 线性模型
给定由d个属性描述的示例, 其中
是
在第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即
向量形式为
其中,
和b学得之后,模型就得以确定。
2. 线性回归的正规方程解
对于由d个属性描述的数据集D,试图学得
令
D中标记为,则最终学得的多元线性回归模型为
3. 对数线性回归(log-linear regression):当输出标记在指数尺度上变化,时,该模型起到了将线性回归模型的预测值与真实标记联系起来的作用。
4. 广义线性模型(generalized linear model):对数线性回归的推广。
考虑单调可微函数,令
即得广义线性模型,被称为联系函数(link function)
5. sklearn中的LinearRegression类
LinearRegression的构造函数中有两个常用的参数可以设置:
● fit_intercept:是否有截据,如果没有则直线过原点,默认为Ture。
● normalize:是否将数据归一化,默认为False。
LinearRegression类中的fit函数用于训练模型,fit函数有两个向量输入:
● X:大小为[样本数量,特征数量]的ndarray,存放训练样本
● Y:值为整型,大小为[样本数量]的ndarray,存放训练样本的标签值
LinearRegression类中的predict函数用于预测,返回预测值,predict函数有一个向量输入:
● X:大小为[样本数量,特征数量]的ndarray,存放预测样本
LinearRegression的使用代码如下:
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(X_train, Y_train)
predict = lr.predict(X_test)
2 对数几率回归
对数几率回归(logistic regression)亦称为逻辑回归,通过回归的思想,实现二分类问题,是一种分类学习方法。
1. Sigmoid函数:
函数图像如下图所示:
2. 对数几率回归:将Sigmoid函数作为广义线性模型,得到
3. 损失函数: 通过极大似然法(maximum likelihood method)来估计和
。经数学推导(略去)可得到损失函数,寻求一组合适的
和
以最小化损失函数的值。损失函数如下:
其中表示数据集中样本的数量,
表示数据集中第
个样本,
为第
个样本的标签值,
为第
个样本的预测值。
损失函数是高阶可导连续凸函数,根据凸优化理论,可采用梯度下降法(gradient decent method)、牛顿法(Newton method)等求得其最优解。
4. sklearn中的LogisticRegression类
LogisticRegression中默认实现了OVR,因此LogisticRegression可以实现多分类。
LogisticRegression的构造函数中有三个常用的参数可以设置:
● solver:{'newton-cg' , 'lbfgs', 'liblinear', 'sag', 'saga'}, 分别为几种优化算法。默认为liblinear。
● C:正则化系数的倒数,默认为1.0,越小代表正则化越强。
● max_iter:最大训练轮数,默认为100。
和 sklearn 中其他分类器一样,LogisticRegression类中的fit函数用于训练模型,fit函数有两个向量输入:
● X:大小为 [样本数量,特征数量] 的ndarray,存放训练样本
● Y:值为整型,大小为 [样本数量] 的ndarray,存放训练样本的分类标签
LogisticRegression类中的predict函数用于预测,返回预测标签,predict函数有一个向量输入:
● X:大小为[样本数量,特征数量]的ndarray,存放预测样本
LogisticRegression的使用代码如下:
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(solver='lbfgs', max_iter =10, C=10)
logreg.fit(X_train, Y_train)
result = logreg.predict(X_test)
3 线性判别分析
线性判别分析(Linear Discriminant Analysis, 简称LDA)是一种经典的先行学习方法,亦称Fisher判别分析,用于分类问题。LDA也常被是为一种经典的监督降维技术。
1. 算法思想:给定训练样例集,设法将样例投影到一条直线上。使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对新样本分类时。将其投影刀同样的这条直线上,再根据投影点的位置来确定新样本的类别。
2. 算法流程
(1) 划分出第一类样本与第二类样本和
(2) 计算第一类样本和第二类样本的中心点(均值向量)和
及协方差矩阵
和
(3) 计算类内散度矩阵
(4) 计算出的值
3. sklearn中的LinearDiscriminantAnalysis类
在降维时,LinearDiscriminantAnalysis的构造函数中有一个常用的参数可以设置:
● n_components:即我们进行LDA降维时降到的维数。在降维时需要输入这个参数。需要注意的是,n_components值的范围是1到类别数-1之间的值。
LinearDiscriminantAnalysis类中的fit函数用于训练模型,fit函数有两个向量输入:
● X:大小为[样本数量,特征数量]的ndarray,存放训练样本
● Y:值为整型,大小为[样本数量]的ndarray,存放训练样本的标签值
LinearDiscriminantAnalysis类中的transform函数用于降维,返回降维后的数据,transform函数有一个向量输入:
● X:大小为[样本数量,特征数量]的ndarray,存放需降维的样本
LinearDiscriminantAnalysis的使用代码如下:
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=1)
lda.fit(X,y)
X_new = lda.transform(X)
4 多分类学习
现实中常遇到多分类学习任务。给定数据集,基于一些基本策略,利用二分类学习器来解决多分类问题。
1. 一对一(One vs. One, 简称OVO)
OvO将这N个类别两两配对,从而产生N(N-1)/2个二分类任务。在测试阶段,新样本将同时提交给所有分类器,于是我们将得到N(N-1)/2个分类结果,最终结果课通过投票产生:即把被预测得最多的类别作为最终分类结果。
2. 一对其余(One vs. Rest, 简称OVR)
OvR则是每次将一个类的样例作为正例、所有其它类的样例作为反例来训练N个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果;若有多个分类器预测为正类,则通常考虑个分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
未完待续......