AI:
1、LR的损失函数
LR为逻辑回归模型预估,某个分类的概率
其损失函数可以用均方差,对数,概率等来表示。
均方差作为LR模型的距离衡量标准,最“预估错误”的惩罚太过柔和。
LR模型预估的是概率,损失函数可以用联合概率分布来衡量。
2、手写K-means算法
k-means聚类算法:
import numpy as np
def k_means(x,k=4,epochs=500,delta=1e-3):
# 随机选取k个样本点作为中心
indices = np.random.randit(0,len(x),size=k)
centers = x[indices]
# 保存分类结果
results =[]
for i in range(k):
results.append([])
step = 1
flag = True
while flag:
if step > epochs:
return centers,results
else:
for i in range(k):
results[i] = []
# 将所有样本划分到离它最近的中心簇
for i in range(len(x)):
current = x[i]
min_dis = np.inf
tmp = 0
for j in range(k):
distance = dis(current,centers[i])
if distance < min_dis:
min_dis = distance
tmp = j
results[tmp].append(current)
# 更新中心
for i in range(k):
old_center = centers[i]
new_center = np.array(results[i]).mean(axis=0)
# 如果新,旧中心不等,更新
if dis(old_center,new_center) > delta:
centers[i]=new_center
flag = False
if flag:
break
# 需要更新flag重设为True
else:
flag = True
step+=1
return centers,results
# 采用欧式距离
def dis(x,y):
return np.sqrt(np.sum(np.power(x-y,2)))
3、机器学习算法中 GBDT 和 XGBOOST 的区别有哪些?
从最优化的角度来看:
GBDT采用的是数值优化的思维, 用的最速下降法去求解Loss Function的最优解, 其中用CART决策树去拟合负梯度, 用牛顿法求步长.
XGboost用的解析的思维, 对Loss Function展开到二阶近似, 求得解析解, 用解析解作为Gain来建立决策树, 使得Loss Function最优.
xgboost相比传统gbdt不同:xgboost快,xgboost支持并行
①传统GBDT以CART作为基分类器,xgboost还支持线性分类器
②传统GBDT在优化时只用到一阶导数信息,xgboost则对代价函数进行了二阶泰勒展开,同时用到了一阶和二阶导数
③xgboost在代价函数里加入了正则项,用于控制模型的复杂度。
④