逻辑回归,分类问题,线性分类器,通过线性回归逼近对数几率,适用于高维稀疏数据的场景,如果数据包含一条决策边界,因为单位阶跃函数不连续,采用sigmoid函数来表示。
优点和缺点
优点:
(模型)模型清晰,背后的概率推导经得住推敲。
(输出)输出值自然地落在0到1之间,并且有概率意义(逻辑回归的输出是概率么?https://www.jianshu.com/p/a8d6b40da0cf)。
(参数)参数代表每个特征对输出的影响,可解释性强。
(简单高效)实施简单,非常高效(计算量小、存储占用低),可以在大数据场景中使用。
(可扩展)可以使用online learning的方式更新轻松更新参数,不需要重新训练整个模型。
(过拟合)解决过拟合的方法很多,如L1、L2正则化。
(多重共线性)L2正则化就可以解决多重共线性问题。
缺点:
(特征相关情况)因为它本质上是一个线性的分类器,所以处理不好特征之间相关的情况。
(特征空间)特征空间很大时,性能不好。
(精度)容易欠拟合,精度不高。
决策树,分类和回归问题,非线性分类器,利用自变量构造一个分叉树区分目标变量,关键在于挑选属性变量,和树剪枝避免过拟合,有三种主要方式,使用场景如果数据包含多个决策边界
数据的结构:逻辑回归胜在整体分析,决策树胜在局部分析。
线性特性:逻辑回归擅长线性数据,决策树擅长非线性。
缺失值。
附本周作业参考答案
1.常见决策树算法有哪些?它们的划分准则分别是什么,是否有缺陷
常见决策树算法有:ID3、C4.5、CART
划分准则分别是:信息增益、信息增益率、基尼指数
信息增益缺点:对可取值较多的属性有偏好,比如编号、日期
信息增益率缺点:对可取值较少的属性有偏好
2.决策树为什么要剪枝?有几种方法?简述一下,并分析其优缺点
为了防止过拟合。有两种方法:预剪枝、后剪枝。
预剪枝:预剪枝的核心思想是在树中进行扩展之前,先计算当前的划分是否能带来模型泛化能力的提升,如果不能则不再生长子树。此时可能存在不同类别的样本同时存在结点中,按照多数投票原则判断该结点所属类别。优点:思想直接、算法简单、效率高等特点,适合解决大规模问题。缺点:有欠拟合风险。
后剪枝:后剪枝的核心思想是让算法生成一棵完全生长的决策树,然后从最底层向上计算是否剪枝。剪枝过程将子树删除,用一个叶子结点代替,该结点的类别同样按照多数投票的原则进行判断。同样,后剪枝也可以通过在测试集的准确率进行判断,如果剪枝后准确率有提升则进行剪枝。优点:相比于预剪枝,泛化能力强 。缺点:时间开销大
leetcode第一周刷题
最大的k个,先考虑堆,时间复杂度O(N log K ),空间复杂度O(k),不需要全部排序完成
K largest(heapsort)
快排,快慢指针,分治法, 时间复杂度是O(N), 空间复杂度O(1)
每一轮确定一个位置,想要位置的元素被确定了,就可以提前结束排序,因为抛去了一部分所以复杂度没有logN
if转while,递归转循环
quicksort
sort colors(荷兰国旗)
三指针,三向切分快速排序
topk frequent
1、python heapq.nlargest
采用桶排序的思路
桶排序假设待排序的一组数均匀独立的分布在一个范围中,并将这一范围划分成几个子范围(桶)。
然后基于某种映射函数f ,将待排序列的关键字 k 映射到第i个桶中 (即桶数组B 的下标i) ,那么该关键字k 就作为 B[i]中的元素 (每个桶B[i]都是一组大小为N/M 的序列 )。
接着将各个桶中的数据有序的合并起来 : 对每个桶B[i] 中的所有元素进行比较排序 (可以使用快排)。然后依次枚举输出 B[0]….B[M] 中的全部内容即是一个有序序列
2.设置一个定量的数组当作空桶子。
寻访序列,并且把项目一个一个放到对应的桶子去。
对每个不是空的桶子进行排序。
从不是空的桶子里把项目再放回原来的序列中。
非桶排序思路
two sum
有规律的数组采用双指针,一个指针指向较小的元素,一个指向较大的,较小的从头向尾部遍历,较大的从尾部向头部遍历
greedy
return i