logo资料库

Scikit-learn中文文档.pdf

第1页 / 共53页
第2页 / 共53页
第3页 / 共53页
第4页 / 共53页
第5页 / 共53页
第6页 / 共53页
第7页 / 共53页
第8页 / 共53页
资料共53页,剩余部分请下载后查看
绪言
有监督学习
广义线性模型
线性与二次判别分析
核岭回归
支持向量机
随机梯度下降
Table of Contents 绪言 有监督学习 广义线性模型 线性与二次判别分析 核岭回归 支持向量机 随机梯度下降 1.1 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1
绪言 This book is translated from official user guide of scikit-learn. 2
有监督学习 3
广义线性模型 1.1. 广义线性模型 英文原文 以下介绍的方法均是用于求解回归问题,其目标值预计是输入变量的一个线性组合。写成数 学语言为:假设 是预测值,则有 在本节中,称向量 `intercept` 为 coef_ ,{% math %}w0{% endmath %}为 若要将通用的线性模型用于分类问题,可参见Logistic回归 1.1.1 普通最小二乘法 LinearRegression 使用系数 逼近预测值( 公式,即是要解决以下形式的问题 拟合一个线性模型。拟合的目标是要将线性 )和数据集中观察到的值( )两者之差的平方和尽量降到最小。写成数学 4
广义线性模型 LinearRegression 的 fit 方法接受数组X和y作为输入,将线性模型的系数 存在成员变 量 coef_ 中: >>> from sklearn import linear_model >>> clf = linear_model.LinearRegression() >>> clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2]) LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False) >>> clf.coef_ array([ 0.5, 0.5]) 需要注意的是,普通最小二乘法的系数预测取决于模型中各个项的独立性。假设各个项相 关,矩阵 的列总体呈现出线性相关,那么 就会很接近奇异矩阵,其结果就是经过最小二 乘得到的预测值会对原始数据中的随机误差高度敏感,从而每次预测都会产生比较大的方 差。这种状况称为重共线性。例如,在数据未经实验设计就进行收集时就会发生重共线性。 线性回归的例子 1.1.1.1 普通最小二乘法的复杂度 此方法使用 的奇异值分解来求解最小二乘。如果 是 矩阵,则算法的复杂度为 ,假设 。 5
广义线性模型 1.1.2 岭回归 岭回归(Ridge regression)引入了一种对系数大小进行惩罚的措施,来解决普通最小二乘可 能遇到的某些问题。岭回归最小化带有惩罚项的残差平方和: 这里, 而会对共线性更加鲁棒。 是一个复杂的参数,用以控制系数的缩减量。 值越大,系数缩减得越多,因 和其它线性模型类似, Ridge 将数组X和y作为 fit 方法的参数,将线性模型的系数 存在成 员变量 coef_ 中: >>> from sklearn import linear_model >>> clf = linear_model.Ridge (alpha = .5) >>> clf.fit ([[0, 0], [0, 0], [1, 1]], [0, .1, 1]) Ridge(alpha=0.5, copy_X=True, fit_intercept=True, max_iter=None, normalize=False, random_state=None, solver='auto', tol=0.001) >>> clf.coef_ array([ 0.34545455, 0.34545455]) >>> clf.intercept_ 0.13636... 例子: 6
广义线性模型 岭回归系数图像:一种正则化方法 使用稀疏特征进行文本文档分类 岭回归的时间复杂度 岭回归的复杂度与普通最小二乘法一样 使用广义交叉验证设置正则化参数 RidgeCV 使用内置的交叉验证方法选择参数 ,进而实现了岭回归。该对象和GridSearchCV 的原理类似,只不过RidgeCV默认使用广义交叉验证方法(留一交叉验证的一种高效形 式): >>> from sklearn import linear_model >>> clf = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0]) >>> clf.fit([[0, 0], [0, 0], [1, 1]], [0, .1, 1]) RidgeCV(alphas=[0.1, 1.0, 10.0], cv=None, fit_intercept=True, scoring=None, normalize=False) >>> clf.alpha_ 0.1 参考文献 “Notes on Regularized Least Squares”, Rifkin & Lippert (技术报告,课程胶片) 1.1.3. Lasso Lasso 是一种预测稀疏系数的线性模型。在某些情况下,Lasso非常有用,因为其倾向于选择 拥有更少参数数量的模型,从而有效减少了最终解决方案所依赖的变量个数。这样的特性使 得Lasso和它的变种成为了压缩感知(compressed sensing)这一领域的基石。在特定情况 下,它可以恢复非零权重的确切集合(it can recover the exact set of non-zero weights)(参 见Compressive sensing: tomography reconstruction with L1 prior (Lasso)) 用数学语言讲,Lasso是一个增加了 正则项的线性模型。需要优化的目标函数为 因此,Lasso是要将带有 这一项的最小二乘误差降到最小。这里 是一个常数, 是参数向量的 范数 Lasso 类的实现使用了坐标下降算法来拟合系数。Least Angle Regression使用了另一种实现 方法。 7
广义线性模型 >>> from sklearn import linear_model >>> clf = linear_model.Lasso(alpha = 0.1) >>> clf.fit([[0, 0], [1, 1]], [0, 1]) Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000, normalize=False, positive=False, precompute=False, random_state=None, selection='cyclic', tol=0.0001, warm_start=False) >>> clf.predict([[1, 1]]) array([ 0.8]) 对于一些底层的任务来说,函数 lasso_path 也很有效。该函数沿所有可能值的全部路径计算 系数 例子: Lasso and Elastic Net for Sparse Signals Compressive sensing: tomography reconstruction with L1 prior (Lasso) 注释 使用Lasso进行特征选择:由于Lasso回归可以给出稀疏模型,因此该方法可以用于特征 选择。参见“基于L1的特征选择”了解更多细节 随机化稀疏:对于特征选择或稀疏性恢复,可以考虑使用随机化稀疏模型 1.1.3.1. 设定正则化参数 参数 alpha 用来控制所得到模型系数的系数程度 1.1.3.1.1. 使用交叉验证 使用scikit-learn提供的一些类,可以通过交叉验证的方式设置Lasso的 alpha 变量。这些类包 括 LassoCV 和 LassoLarsCV 。其中 LassoLarsCV 基于下面介绍的最小角回归算法。 对于有很多共线性回归项的高维数据集来说,LassoCV更为适用。但是,LassoLarsCV的优 势在于,它可以找出更多alpha的相关值,而且如果样本数量显著小于变量数量,它比 LassoCV更快。 8
分享到:
收藏