大作业:二分类并发解决方案

1. 报告要求

  • 并行化
  • 提高运行速度
  • 突显cache友好
  • 对比实验
  • 对关键步骤描述算法

2. 初步草案

  1. 选择实现语言。我选择了较为熟悉的python作为编程语言。因为python的库numpy在底层调用c与fortran,并且采用优化过的算法,因此在矩阵运算方面速度极高
  2. 选择预测方法。由于要突显cache友好,且实现并行化,我认为logistic regression能符合要求。
  3. 选择训练方式。训练方式不外乎三种:BGD, mini BGD, SGD。其中SGD在运行中占用的内存最小(每次处理一组数据即可)。因此,我将会对三种训练方式进行考察,并着重观察SGD
  4. 选择并行化的解决方案。使用python内置的multiprocessing库即可。并验证按参数并行运算分批并行运算的速度比较。

3. 并行化解决方案

3.1 按参数并行运算

梯度计算函数

def compute_sum(parameters, result, data_array, theta, number_of_examples):
    for parameter in parameters:  # [n, n+1, n+2, ..., m]
        summition = 0
        for sample in data_array:
            # (hypothesis - real_value) * feature_i
            summition += (hypothesis(sample[:-1], theta) - sample[-1]) * sample[parameter]
        result[parameter] = summition / number_of_examples  # gradient for feature_i

运行结果:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容