摘要:
时间序列:一个变量在连续时间段内的一系列观测值。如过去十年的月度股票市场回报率数据,就是一个时间序列数据。 阅读全文
摘要:
KKT条件是非线性规划最佳解的必要条件,KKT条件将拉格朗日乘数法所处理的涉及等式约束的优化问题,推广至不等式约束。 阅读全文
摘要:
正则化就是对最小化经验误差函数上加约束,这样的约束可以解释为先验知识(正则化参数等价于对参数引入先验分布)。约束有引导作用,在优化误差函数的时候倾向于选择满足约束的梯度减少的方向,使最终的解倾向于符合先验知识。 阅读全文
摘要:
梯度下降法作为在机器学习中较长使用的优化算法,有三种不同的形式:批量梯度下降、随机梯度下降、小批量梯度下降。 阅读全文
摘要:
为了防止模型的过拟合,我们在建立线性模型的时候,经常需要加入正则化项,一般有L1正则化和L2正则化。 阅读全文
摘要:
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。 阅读全文
摘要:
K近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法,在平常的生活中也会不自主的应用。比如,判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出了。这里就运用了KNN的思想。 阅读全文
摘要:
1、此部分内容为本人的个人学习总结,内容来自老师的讲义、网络达人的分享、 周志华老师的《西瓜书》、李航老师的《统计学习方法》等。 2、其中网络资料以刘建平老师博客为主。 阅读全文
摘要:
# 快速排序的思路是依据一个“中值”数据项来把数据表分为两半 :小于中值的一半和大于中值的一半, # 然后每部分分别进行快速排序(递归) # 如果希望这两半拥有相等数量的数据项,则应该找到数据表的中位数 # 但找中位数需要计算开销!要想没有开销,只能随意找一个数来充当中值比如,第1个数。 # 设置左 阅读全文
摘要:
# 归并排序是递归算法,思路是将数据表持续分裂为两半,对两半分别进行归并排序 # 递归的基本结束条件是:数据表仅有1个数据项,自然是排好序的 # 缩小规模:将数据表分裂为相等的两半,规模减为原来的二分之一; # 用自身:将两半分别调用自身排序,然后将分别排好序的两半进行归并,得到排好序的数据表 # 阅读全文
摘要:
# 我们注意到插入排序的比对次数,在最好的情况下是O(n),这种情况发生在列表已是有序的情况下, # 实际上,列表越接近有序,插入排序的比对次数就越少 # 从这个情况入手,谢尔排序以插入排序作为基础,对无序表进行间隔划分子列表,每个子列表都执行插入排序 # 子列表的间隔一般从n/2开始,每趟倍增:n 阅读全文
摘要:
# 插入排序时间复杂度仍然是O(n**2),但算法思路与冒泡排序、选择排序不同 # 插入排序维持一个已排好序的子列表,其位置始终在列表的前部,然后逐步扩大这个子列表直到全表 # 插入排序的比对主要用来寻找新项的插入位置 def insertionSort(alist): for index in r 阅读全文
摘要:
# 选择排序对冒泡排序进行了改进,保留了其基本的多趟比对思路,每趟都使当前最大项就位 # 但选择排序对交换进行了削减,相比起冒泡排序进行多次交换,每趟仅进行1次交换,记录最大项的所在位置,最后再跟本趟最后一项交换 # 选择排序的时间复杂度比冒泡排序稍优 # 比对次数不变,还是O(n2) # 交换次数 阅读全文
摘要:
# 通过监测每趟比对是否发生过交换,可以提前确定排序是否完成 # 如果某趟比对没有发生任何交换,说明列表已经排好序,可以提前结束算法 def shortBubbleSort(alist): exchanges = True passnum = len(alist) - 1 while passnum 阅读全文
摘要:
# 冒泡排序的算法思路在于对无序表进行多趟比较交换, # 每趟包括了多次两两相邻比较,并将逆序的数据项互换位置,最终能将本趟的最大项就位 # 经过n-1趟比较交换,实现整表排序 # 比对的时间复杂度是O(N**2) # 关于交换次数,时间复杂度是O(N**2) # 冒泡排序通常作为时间效率较差的排序 阅读全文
摘要:
# 由于二分查找,每次比对都将下一步的比对范围缩小一半,n次比对后剩余数据n/2**i,求出i=log2(N) def binarySearch(alist, item): if len(alist) == 0: return False else: midpoint = len(alist) // 阅读全文
摘要:
# 通过控制列表索引达到二分的目的 # 算法时间复杂度O(log(N)) def binarySearch(alist, item): first = 0 last = len(alist) - 1 found = False while first <= last and not found: m 阅读全文
摘要:
# 算法时间复杂度O(N) def orderedSequentialSearch(alist, item): pos = 0 found = False stop = False while pos < len(alist) and not found and not stop: if alist 阅读全文
摘要:
# 算法时间复杂度O(N) def sequentialSearch(alist, item): pos = 0 found = False while pos < len(alist) and not found: if alist[pos] == item: found = True else: 阅读全文
摘要:
# 递归是从后向前递归调用,相当于是倒算 # 而动态规划是从前向后计算,每一步计算利用的都是前面已经计算完成的值,不存在调用自身的问题 # 动态规划突破了递归的层数限制 import time def fibonacci_v3(n, record): for i in range(1, n+1): 阅读全文