机器学习1-回归及聚类

回归问题及聚类

  • 单纯的回归问题,求解连续性数值
    期末成绩:0.7×考试成绩+0.3×平时成绩
  • 将分类问题转化为回归问题,求解分类问题
    西瓜好坏:0.2×色泽+0.5×根蒂+0.3×敲声

1 线性关系模型

定义:线性回归通过一个或者多个自变量与因变量之间之间进行建模的回归分析。其中特点为一个或多个称为回归系数的模型参数的线性组合.
一元线性回归:涉及到的变量只有一个;
多元线性回归:涉及到的变量两个或两个以上。
𝑓(𝑥)=𝑤_1 𝑥_1+𝑤_2 𝑥_2+…+𝑤_𝑑 𝑥_𝑑+𝑏
w为权重,b称为偏置项,可以理解为:𝑤_0×1

1.1 损失函数

  • 𝑦_𝑖为第𝑖个训练样本的真实值
  • ℎ_𝑤(𝑥_𝑖)为第𝑖个训练样本特征值组合预测函数
    总损失定义:
    𝐽(𝜃)= (ℎ_𝑤 (𝑥_1) −𝑦_1 )^2+(ℎ_𝑤 (𝑥_2) −𝑦_2 )^2+…+(ℎ_𝑤 (𝑥_𝑚) −𝑦_𝑚 )^2= ∑_(𝑖=1)^𝑚(ℎ_𝑤 (𝑥_𝑖 )−𝑦_𝑖)^2
    又称最小二乘法.
    在线性回归中,寻找最优化的w,使得损失最小。
正规方程

求解:𝑤=(𝑋^𝑇𝑋)^{−1}𝑋^𝑇𝑦
𝑋为特征值矩阵,𝑦为目标值矩阵
缺点:当特征过于复杂,求解速度太慢;对于复杂的算法,不能使用正规方程求解(逻辑回归等)。

梯度下降
梯度下降解释

指定学习率,然后会沿着减小损失函数的方向进行靠近,直到找到损失值的最低点。


二维特征

1.2 波士顿房价预测分析流程

(1) 数据获取
(2)数据分割
(3)训练与测试数据标准化处理
(4)使用简单的线性回归模型LinearRegression和梯度下降估计SGDRegressor对房价进行预测。

# 线性回归预测房子价格
def mylinear():
    lb = load_boston()
    x_train, x_test, y_train, y_test = train_test_split(lb.data,lb.target,test_size=0.25)
    #特征值和目标值进行标准化处理,实例化两个标准化API
    std_x = StandardScaler()
    x_train = std_x.fit_transform(x_train)
    x_test = std_x.transform(x_test)
    std_y = StandardScaler()
    #喂入transform中必须保证是二维数组
    y_train = std_y.fit_transform(y_train.reshape(-1,1))
    y_test = std_y.transform(y_test.reshape(-1,1))
    #estimator预测
###########################正规方程求解方式预测结果################
    lr = LinearRegression()
    lr.fit(x_train,y_train)
    print(lr.coef_)
    #预测测试集的房子价格
    y_predict = std_y.inverse_transform(lr.predict(x_test))
    print("正规方程测试集中的预测价格",y_predict)
#######################梯度下降求解方式预测结果######################
    SGD = SGDRegressor()
    SGD.fit(x_train,y_train)
    print(SGD.coef_)
    #预测测试集的房子价格
    y_sgd_predict = std_y.inverse_transform(SGD.predict(x_test))
    print("SGD测试集中的预测价格",y_sgd_predict)
    return None

1.3 回归性能评估

mean_squared_error(y_true, y_pred)
均方误差回归损失
y_true:真实值
y_pred:预测值
return:浮点数结果

print("正规方程的均方误差:",mean_squared_error(y_test,y_predict))
print("SGD的均方误差:", mean_squared_error(y_test, y_sgd_predict))

正规方程与梯度下降的比较:


正规方程与梯度下降(图源黑马程序员)

2. 拟合问题

过拟合:一个假设在训练数据上能够获得比其他假设更好的拟合, 但是在训练数据外的数据集上却不能很好地拟合数据,此时认为这个假设出现了过拟合的现象。(模型过于复杂)
欠拟合:一个假设在训练数据上不能获得更好的拟合, 但是在训练数据外的数据集上也不能很好地拟合数据,此时认为这个假设出现了欠拟合的现象。(模型过于简单)

欠拟合与过拟合

线性回归不一定是只拟合出线性方程,对线性模型进行拟合会变成复杂模型。
image.png

欠拟合原因及解决办法:
原因:学习到数据的特征过少;
解决办法:增加数据的特征数量。
过拟合原因及解决办法:
原因: 始特征过多,存在一些嘈杂特征,模型过于复杂是因为模型尝试去兼顾各个测试数据点
解决办法:

  • 进行特征选择,消除关联性大的特征(很难做);
  • 交叉验证(让所有数据都有过训练);
  • 正则化,相当于特征选择的过程。
    在进行训练时要尽量减少高次项特征的影响。

特征选择:

  • 过滤式:低方差特征
  • 嵌入式:正则化,决策树,神经网络

2.2 L2正则化

作用:可以使得W的每个元素都很小,都接近于0;
优点:越小的参数说明模型越简单,越简单的模型则越不
容易产生过拟合现象。

3. 岭回归

sklearn.linear_model.Ridge(alpha=1.0)

  • 具有l2正则化的线性最小二乘法;
  • alpha:正则化力度;
  • coef_:回归系数。
    岭回归:回归得到的回归系数更符合实际,更可靠。另外,能让
    估计参数的波动范围变小,变的更稳定。在存在病态数据偏多的研
    究中有较大的实用价值。

4. 模型的保存与加载

    #保存训练好的模型
    joblib.dump(lr,"test.pkl")
    #预测房价结果
    model = joblib.load("test.pkl")

5. 逻辑回归

逻辑回归解决的是二分类问题的利器。
sigmoid把输入转化为0-1之间的值,可以理解为概率值,默认0.5作为阈值。


image.png

逻辑回归的处理流程如下:


逻辑回归大致思路

损失函数采用的是对数似然损失。在寻找最优解的过程中,对数似然损失会存在局部最低点,而均方误差不存在局部最小值。尽管没有全局最低点,但是效果都是很好。目前这个问题没有很好的解决方案,以下方式只能尽量改善:
  • 多次随机初始化,多次比较最小值结果;
  • 调整学习率。
    二分类问题哪一个类别少,判定概率值就是这个类别。

良/恶性乳腺癌肿分类流程:

(1)获取数据;
(2)数据缺失值处理、标准化;
(3)LogisticRegression估计器流程。

#逻辑回归做二分类进行癌症预测,根据细胞的属性特征
def logistic():
    #构造列标签名字
    column = ['Sample code number','Clump Thickness', 'Uniformity of Cell Size','Uniformity of Cell Shape','Marginal Adhesion','Single Epithelial Cell Size','Bare Nuclei','Bland Chromatin','Normal Nucleoli','Mitoses','Class']
    #读取数据
    data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",names=column)
    #print(data)
    #缺失值进行处理
    data = data.replace(to_replace='?',value=np.nan)
    data = data.dropna()
    #数据分割
    x_train,x_test,y_train,y_test = train_test_split(data[column[1:10]],data[column[10]])
    #标准化处理
    std = StandardScaler()
    x_train = std.fit_transform(x_train)
    x_test = std.transform(x_test)
    #逻辑回归预测
    lg = LogisticRegression(C=1.0)
    lg.fit(x_train,y_train)
    print(lg.coef_)
    y_predict = lg.predict(x_test)
    print("准确率",lg.score(x_test,y_test))
    print("召回率",classification_report(y_test,y_predict,labels = [2,4],target_names=['良性','恶性']))
    return None

运行结果

应用:广告点击率预测、电商购物搭配推荐;
优点:适合需要得到一个分类概率的场景;
缺点:当特征空间很大时,逻辑回归的性能不是很好(看硬件能力)。

朴素贝叶斯与逻辑回归对比,如图:


对比

6. K-means

6.1 步骤

(1)随机设置K个特征空间内的点作为初始的聚类中心;
(2)对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类
中心点作为标记类别;
(3)接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平
均值);
(4)如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行
第二步过程。

6.2 性能评估指标

轮廓系数:
计算公式:𝑠𝑐_𝑖= (𝑏_𝑖−𝑎_𝑖)/(max⁡(𝑏_𝑖,𝑎_𝑖))
注:对于每个点𝑖 为已聚类数据中的样本 ,𝑏𝑖 为𝑖 到其它族群的所有样本的平均
距离,𝑎
𝑖 为𝑖 到本身簇的距离平均值.
最终计算出所有的样本点的轮廓系数平均值。

  • 如果𝑠𝑐𝑖 小于0,说明𝑎𝑖 的平均距离大于最近的其他簇。
    聚类效果不好;
  • 如果𝑠𝑐𝑖 越大,说明𝑎𝑖 的平均距离小于最近的其他簇。
    聚类效果好。
    {轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优}
    特点分析:采用迭代式算法,直观易懂并且非常实用。
    缺点:容易收敛到局部最优解(多次聚类)
    需要预先设定簇的数量(k-means++解决)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 4,509评论 0 6
  • 机器学习术语表 本术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义。 A A/B 测试 (...
    yalesaleng阅读 1,961评论 0 11
  • https://developers.google.com/machine-learning/crash-cour...
    iOSDevLog阅读 2,656评论 1 11
  • 本软件尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本软件会按照本隐私权政策的规定...
    手游用户阅读 125评论 0 0
  • 所谓自由就是摆脱社会的惯性,而不是做自己情绪的奴隶。 中庸是合适的极致,不是简单的折中。 有的人居无定所地过着安宁...
    乐CXF慧阅读 121评论 0 1