Source:
<code>public void run(final int iteration, final AtomicBoolean abortFlag) { final List<LassoData> totalInstancesProcessed = new LinkedList<>(); Map<Long, LassoData> nextTrainingData = trainingDataProvider.getNextTrainingData(); while (!nextTrainingData.isEmpty()) { final List<LassoData> instances = new ArrayList<>(nextTrainingData.values()); pullModels(); final List<Vector> features = new LinkedList<>(); final Vector yValue = vectorFactory.createDenseZeros(instances.size()); int iter = 0; for (final LassoData instance : instances) { features.add(instance.getFeature()); yValue.set(iter++, instance.getValue()); } final Matrix featureMatrix = matrixFactory.horzcatVecDense(features).transpose(); final Vector precalculate = featureMatrix.mmul(newModel); for (int i = 0; i < numFeatures; i++) { <START> final Vector getColumn = featureMatrix.sliceColumn(i); <END> final double getColumnNorm = getColumn.dot(getColumn); if (getColumnNorm == 0) { continue; } precalculate.subi(getColumn.scale(newModel.get(i))); newModel.set(i, sthresh((getColumn.dot(yValue.sub(precalculate))) / getColumnNorm, lambda, getColumnNorm)); precalculate.addi(getColumn.scale(newModel.get(i))); } pushAndResetGradients(); totalInstancesProcessed.addAll(instances); nextTrainingData = trainingDataProvider.getNextTrainingData(); } pullModels(); final double loss = computeLoss(totalInstancesProcessed); LOG.log(Level.INFO, "Loss value: {0}", new Object[]{loss}); if ((iteration + 1) % printModelPeriod == 0) { for (int i = 0; i < numFeatures; i++) { LOG.log(Level.INFO, "model : {0}", new Object[]{newModel.get(i)}); } } }</code><technical_language>prefix get is in method names; rename columnVec? applies getColumnNorm. columnNorm</technical_language>

Target:
public void run(final int iteration, final AtomicBoolean abortFlag) { final List<LassoData> totalInstancesProcessed = new LinkedList<>(); Map<Long, LassoData> nextTrainingData = trainingDataProvider.getNextTrainingData(); while (!nextTrainingData.isEmpty()) { final List<LassoData> instances = new ArrayList<>(nextTrainingData.values()); pullModels(); final Pair<Matrix, Vector> featureMatrixAndValues = convertToFeaturesAndValues(instances); final Matrix featureMatrix = featureMatrixAndValues.getLeft(); final Vector yValues = featureMatrixAndValues.getRight(); final Vector precalculate = featureMatrix.mmul(newModel); for (int i = 0; i < numFeatures; i++) { final Vector columnVector = featureMatrix.sliceColumn(i); final double columnNorm = columnVector.dot(columnVector); if (columnNorm == 0 || newModel.get(i) == 0) { continue; } precalculate.subi(columnVector.scale(newModel.get(i))); newModel.set(i, sthresh((columnVector.dot(yValues.sub(precalculate))) / columnNorm, lambda, columnNorm)); precalculate.addi(columnVector.scale(newModel.get(i))); } pushAndResetGradients(); totalInstancesProcessed.addAll(instances); nextTrainingData = trainingDataProvider.getNextTrainingData(); } pullModels(); final double loss = computeLoss(totalInstancesProcessed); LOG.log(Level.INFO, "Loss value: {0}", new Object[]{loss}); if ((iteration + 1) % PRINT_MODEL_PERIOD == 0) { for (int i = 0; i < numFeatures; i++) { LOG.log(Level.INFO, "model : {0}", new Object[]{newModel.get(i)}); } } }