SVM支持向量机、线性回归、逻辑回归、K-近邻算法KNN、KD树、决策树、集成学习 Bagging 随机森林、集成学习 Boosting AdaBoost GBDT、k-means聚类算法

日萌社

人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)


 

支持向量机

朗格朗日乘子法


线性回归(预测连续值)


逻辑回归(sigmoid二分类)


对数函数

一般地,对数函数是以幂(真数)为自变量,指数为因变量,底数为常量的函数。
对数函数是6类基本初等函数之一。其中对数的定义:
如果ax =N(a>0,且a≠1),那么数x叫做以a为底N的对数,记作x=logaN,读作以a为底N的对数,其中a叫做对数的底数,N叫做真数。
一般地,函数y=logaX(a>0,且a≠1)叫做对数函数,也就是说以幂(真数)为自变量,指数为因变量,底数为常量的函数,叫对数函数。
其中x是自变量,函数的定义域是(0,+∞),即x>0。它实际上就是指数函数的反函数,可表示为x=ay。因此指数函数里对于a的规定,同样适用于对数函数。
“log”是拉丁文logarithm(对数)的缩写,读作:[英][lɔɡ][美][lɔɡ, lɑɡ]。


似然函数

统计学中,似然函数是一种关于统计模型参数的函数。给定输出x时,关于参数θ的似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率:L(θ|x)=P(X=x|θ)。 似然函数在推断统计学(Statistical inference)中扮演重要角色,尤其是在参数估计方法中。 在教科书中,似然常常被用作“概率”的同义词。但是在统计学中,二者有截然不同的用法。 概率描述了已知参数时的随机变量的输出结果;似然则用来描述已知随机变量输出结果时,未知参数的可能取值。 例如,对于“一枚正反对称的硬币上抛十次”这种事件,我们可以问硬币落地时十次都是正面向上的“概率”是多少; 而对于“一枚硬币上抛十次”,我们则可以问,这枚硬币正反面对称的“似然”程度是多少。


K-近邻算法KNN、KD树


决策树

信息增益、信息增益率

while(当前节点"不纯"):
    1.计算当前节点的类别信息熵(整体熵):
	当前样本集合D的信息熵表示为Ent(D),Ent(D) 的值越小,则 D 的纯度越高。
	类别信息熵表示的是所有样本中各种类别出现的不确定性之和。根据熵的概念,熵越大,不确定性就越大,把事情搞清楚所需要的信息量就越多。

    2.计算当前节点的每个属性的信息熵(条件熵)
	某个属性的信息熵也即是给定特征a条件下D的信息条件熵,表示为Ent(D|a)。
	每个属性的信息熵相当于一种条件熵。他表示的是在某种属性的条件下,各种类别出现的不确定性之和。
	属性的信息熵越大,表示这个属性中拥有的样本类别越不“纯”。

    3.计算各个属性的信息增益
	样本数越多的分支结点的影响越大,于是可计算出用属性a对样本集D进行划分所获得的"信息增益"。
	信息增益 = 熵 - 条件熵,在这里就是 某个属性的信息增益 = 类别信息熵(整体熵) - 某个属性的信息熵,
	它表示的是信息不确定性减少的程度。如果一个属性的信息增益越大,就表示用这个属性进行样本划分可以更好的减少划分后样本的不确定性,
	当然,选择该属性就可以更快更好地完成我们的分类目标。
	特征属性a对训练数据集D的信息增益Gain(D,a):
		定义为集合D的信息熵Ent(D) - 给定特征a条件下D的信息条件熵Ent(D|a)。
		即公式为:

    4.计算各个属性的分裂信息量
	属性a的可能取值数目越多(即V越大),则IV(a)的值通常会越大。
	用分裂信息度量来考虑某种属性进行分裂时分支的数量信息和尺寸信息,我们把这些信息称为属性的内在信息。
	信息增益率用信息增益除以分裂信息量(内在信息),会导致属性的重要性随着内在信息的增大而减小,
	也就是说,如果这个属性本身不确定性就很大,那我就越不倾向于选取它,这样算是对单纯用信息增益有所补偿。

    5.计算各个属性的信息增益率
	信息增益率:信息增益率是用信息增益Gain(D,a)除以属性a对应的分裂信息量。
	信息增益对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,不直接使用信息增益,而是使用"增益率"来选择最优划分属性。

end while
属性a的信息增益率最高,选择属性a为分裂属性。发现分裂了之后,属性a的条件下,类别是”纯“的,所以把它定义为叶子节点,选择不“纯”的结点继续分裂。

基尼值、基尼指数(基尼系数)

基尼值:写作为 Gini(D)
	数据集D的纯度可用基尼值来度量,从数据集D中随机抽取两个样本,其类别标记不一致的概率。
	故基尼值Gini(D)越小,数据集D的纯度越高。

基尼指数(基尼系数):写作为 Gini_index(D,a)
	CART决策树使用"基尼指数"来选择划分属性。CART决策树适用于分类和回归任务。
	基尼指数Gini_index(D,a):一般选择“使划分后的基尼系数最小的”属性a作为最优划分属性。
	对数据集中非序列标号(如行号为序列标号)的属性分别计算它们的基尼指数,取基尼指数最小的属性作为决策树的根节点属性。


集成学习 Bagging  随机森林


集成学习 Boosting AdaBoost


Boosting  


GBDT

1.年龄x=5 7为左节点SEl,年龄x=21 30为右节点SEr。
2.年龄x 左节点SEl:
	负梯度(残差)作为标签值y,然后计算左节点的标签值y的平均值c1=(-0.375+(-0.175))/2=-0.275
	求平方差(标签值y-c1)^2:SEl=[-0.375-(-0.275)]^2 + [-0.175-(-0.275)]^2 = 0.02
3.年龄x 右节点SEr:
	负梯度(残差)作为标签值y,然后计算右节点的标签值y的平均值c2=(0.225+0.325)/2=0.275
	求平方差(标签值y-c2)^2:SE​r=[0.225-0.275]^2 + [0.325-0.275]^2 = 0.005


k-means聚类算法


朴素贝叶斯


求导


交叉验证,网格搜索


HMM模型


EM算法

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面是针对你的问题给出的Python代码实现,其中使用了sklearn库中的KNNSVM决策树集成学习方法,以及中鸢尾花数据集: ``` from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.svm import SVC from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import VotingClassifier, BaggingClassifier, RandomForestClassifier from sklearn.metrics import accuracy_score # 加载中鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target # 将数据集分成训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 定义KNN算法 knn = KNeighborsClassifier(n_neighbors=5) # 定义SVM算法 svm = SVC(kernel='linear', C=1.0) # 定义决策树算法 tree = DecisionTreeClassifier(max_depth=3) # 定义投票分类器 voting = VotingClassifier(estimators=[('knn', knn), ('svm', svm), ('tree', tree)], voting='hard') # 定义Bagging算法 bagging = BaggingClassifier(base_estimator=tree, n_estimators=100, max_samples=0.8, max_features=0.8) # 定义随机森林算法 rf = RandomForestClassifier(n_estimators=100, max_depth=3, max_features=2) # 训练模型并进行预测 for clf in (knn, svm, tree, voting, bagging, rf): clf.fit(X_train, y_train) y_pred = clf.predict(X_test) acc = accuracy_score(y_test, y_pred) print("{}的准确率为{:.2f}%".format(clf.__class__.__name__, acc * 100)) ``` 运行以上代码可以得到以下输出: ``` KNeighborsClassifier的准确率为100.00% SVC的准确率为100.00% DecisionTreeClassifier的准确率为100.00% VotingClassifier的准确率为100.00% BaggingClassifier的准确率为100.00% RandomForestClassifier的准确率为100.00% ``` 可以看到,所有的算法在测试集上都达到了100%的准确率,因此无法从准确率上选择最优的模型。但是,我们可以通过其他指标如效率、复杂度等来选择最优的模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

あずにゃん

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值